1 6 package de.uka.ipd.coverage.plugin.launcher; 7 8 import java.io.IOException ; 9 import java.io.ObjectInputStream ; 10 import java.net.ServerSocket ; 11 import java.net.Socket ; 12 import java.util.ArrayList ; 13 import java.util.Iterator ; 14 import java.util.List ; 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 25 public class CoverageRemoteTestRunnerClient implements Runnable { 26 27 private Logger logger = new Logger(this); 28 private List listeners = new ArrayList (); 29 private int port; 30 31 32 public CoverageRemoteTestRunnerClient() { 33 CoverageSystemPartsProvider.getInstance().setTestRunnerClient(this); 34 } 35 38 public void listen(int port) { 39 this.port = port; 40 new Thread (this).start(); 41 } 42 43 public void run() { 44 ServerSocket serverSocket; 45 try { 46 logger.info("initializing"); serverSocket = new ServerSocket (port); 48 notifyStateWaiting(); 49 Socket socket = serverSocket.accept(); 50 logger.info("Socket is initialized. Waiting for incoming messages.."); ObjectInputStream in = new ObjectInputStream (socket.getInputStream()); 52 RegisteredMethod[] rm = (RegisteredMethod[]) in.readObject(); 53 serverSocket.close(); 54 CoverageTestResult.setRegisteredMethods(rm); 55 logger.info("Got RegisteredMethods. Notifying "+ listeners.size() + " listeners"); notifyStateReceived(); 57 } catch (IOException e) { 58 logger.log(e); 59 e.printStackTrace(); 60 } catch (ClassNotFoundException e) { 61 logger.log(e); 62 e.printStackTrace(); 63 } 64 } 65 66 private synchronized void notifyStateReceived() { 67 for (Iterator 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 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 |