KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > uka > ipd > coverage > plugin > launcher > CoverageRemoteTestRunnerClient


1 /*
2  * Created on Apr 8, 2005
3  *
4  * written by Matthias Kempka
5  */

6 package de.uka.ipd.coverage.plugin.launcher;
7
8 import java.io.IOException JavaDoc;
9 import java.io.ObjectInputStream JavaDoc;
10 import java.net.ServerSocket JavaDoc;
11 import java.net.Socket JavaDoc;
12 import java.util.ArrayList JavaDoc;
13 import java.util.Iterator JavaDoc;
14 import java.util.List JavaDoc;
15
16 import de.uka.ipd.coverage.CoverageSystemPartsProvider;
17 import de.uka.ipd.coverage.junit.CoverageTestResult;
18 import de.uka.ipd.coverage.recording.RegisteredMethod;
19 import de.uka.ipd.coverage.utils.Logger;
20
21 /**
22  * Created on Apr 8, 2005
23  * @author Matthias Kempka
24  */

25 public class CoverageRemoteTestRunnerClient implements Runnable JavaDoc {
26
27     private Logger logger = new Logger(this);
28     private List JavaDoc listeners = new ArrayList JavaDoc();
29     private int port;
30
31     
32     public CoverageRemoteTestRunnerClient() {
33         CoverageSystemPartsProvider.getInstance().setTestRunnerClient(this);
34     }
35     /**
36      * @param port
37      */

38     public void listen(int port) {
39         this.port = port;
40         new Thread JavaDoc(this).start();
41     }
42
43     public void run() {
44         ServerSocket JavaDoc serverSocket;
45         try {
46             logger.info("initializing"); //$NON-NLS-1$
47
serverSocket = new ServerSocket JavaDoc(port);
48             notifyStateWaiting();
49             Socket JavaDoc socket = serverSocket.accept();
50             logger.info("Socket is initialized. Waiting for incoming messages.."); //$NON-NLS-1$
51
ObjectInputStream JavaDoc in = new ObjectInputStream JavaDoc(socket.getInputStream());
52             RegisteredMethod[] rm = (RegisteredMethod[]) in.readObject();
53             serverSocket.close();
54             CoverageTestResult.setRegisteredMethods(rm);
55             logger.info("Got RegisteredMethods. Notifying "+ listeners.size() + " listeners"); //$NON-NLS-1$ //$NON-NLS-2$
56
notifyStateReceived();
57         } catch (IOException JavaDoc e) {
58             logger.log(e);
59             e.printStackTrace();
60         } catch (ClassNotFoundException JavaDoc e) {
61             logger.log(e);
62             e.printStackTrace();
63         }
64     }
65
66     private synchronized void notifyStateReceived() {
67         for (Iterator JavaDoc iter = listeners.iterator(); iter.hasNext();) {
68             TestStatusListener element = (TestStatusListener) iter.next();
69             element.notifyDataReceived();
70         }
71     }
72
73     private synchronized void notifyStateWaiting() {
74         for (Iterator JavaDoc iter = listeners.iterator(); iter.hasNext();) {
75             TestStatusListener element = (TestStatusListener) iter.next();
76             element.notifyWaiting();
77         }
78     }
79     
80     public synchronized void addTestStatusListener(TestStatusListener listener) {
81         if (!listeners.contains(listener)) {
82             listeners.add(listener);
83         }
84     }
85     
86     public synchronized void removeTestStatusListener(TestStatusListener listener) {
87         listeners.remove(listener);
88     }
89 }
90
Popular Tags