X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2FJws2Discoverer.java;fp=src%2Fjalview%2Fws%2Fjws2%2FJws2Discoverer.java;h=12a08a0e0e547b8ca59f49e2223e829084881e7b;hb=2595e9d4ee0dbbd3406a98c4e49a61ccde806479;hp=1b2c708fd375c907dd89ca5fe00a8d752379c45c;hpb=e20075ba805d744d7cc4976e2b8d5e5840fb0a8d;p=jalview.git diff --git a/src/jalview/ws/jws2/Jws2Discoverer.java b/src/jalview/ws/jws2/Jws2Discoverer.java index 1b2c708..12a08a0 100644 --- a/src/jalview/ws/jws2/Jws2Discoverer.java +++ b/src/jalview/ws/jws2/Jws2Discoverer.java @@ -67,7 +67,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI /* * the .jalview_properties entry for JWS2 URLS */ - final static String JWS2HOSTURLS = "JWS2HOSTURLS"; + private final static String JWS2HOSTURLS = "JWS2HOSTURLS"; /* * Singleton instance @@ -85,12 +85,17 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI private PropertyChangeSupport changeSupport = new PropertyChangeSupport( this); - Vector invalidServiceUrls = null, urlsWithoutServices = null, - validServiceUrls = null; + private Vector invalidServiceUrls = null; - boolean running = false, aborted = false; + private Vector urlsWithoutServices = null; - Thread oldthread = null; + private Vector validServiceUrls = null; + + private volatile boolean running = false; + + private volatile boolean aborted = false; + + private Thread oldthread = null; /** * holds list of services. @@ -143,9 +148,9 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI public void setAborted(boolean aborted) { this.aborted = aborted; - } + @Override public void run() { @@ -167,6 +172,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI { } } + aborted = false; Cache.log.debug("Old discovery thread has finished."); } running = true; @@ -179,7 +185,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI ignoredServices.add(ignored); } - changeSupport.firePropertyChange("services", services, new Vector()); + changeSupport.firePropertyChange("services", services, + new Vector()); oldthread = Thread.currentThread(); try { @@ -263,7 +270,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI if (!aborted) { // resort services according to order found in jabaws service list - // also ensure servics for each host are ordered in same way. + // also ensure services for each host are ordered in same way. if (services != null && services.size() > 0) { @@ -290,7 +297,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI } oldthread = null; running = false; - changeSupport.firePropertyChange("services", new Vector(), services); + changeSupport.firePropertyChange("services", + new Vector(), services); } /** @@ -321,7 +329,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI service.hasParameters(); if (validServiceUrls == null) { - validServiceUrls = new Vector(); + validServiceUrls = new Vector(); } validServiceUrls.add(jwsservers); } @@ -330,6 +338,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI * attach all available web services to the appropriate submenu in the given * JMenu */ + @Override public void attachWSMenuEntry(JMenu wsmenu, final AlignFrame alignFrame) { // dynamically regenerate service list. @@ -348,8 +357,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI { return; } - boolean byhost = Cache.getDefault("WSMENU_BYHOST", false), bytype = Cache - .getDefault("WSMENU_BYTYPE", false); + /** * eventually, JWS2 services will appear under the same align/etc submenus. * for moment we keep them separate. @@ -442,27 +450,19 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI { new Thread(new Runnable() { + @Override public void run() { setPreferredServiceFor(alignFrame, sv.serviceType, sv.action, sv); changeSupport.firePropertyChange("services", - new Vector(), services); + new Vector(), services); }; }).start(); } }); } - /* - * hitm.addActionListener(new ActionListener() { - * - * @Override public void actionPerformed(ActionEvent arg0) { new - * Thread(new Runnable() { - * - * @Override public void run() { new SetPreferredServer(alignFrame, - * service.serviceType, service.action); } }).start(); } }); - */ } } } @@ -481,7 +481,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI * for moment we keep them separate. */ JMenu atpoint; - MsaWSClient msacl = new MsaWSClient(); + List hostLabels = new ArrayList(); Hashtable lasthostFor = new Hashtable(); Hashtable> hosts = new Hashtable>(); @@ -590,6 +590,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI new PropertyChangeListener() { + @Override public void propertyChange(PropertyChangeEvent evt) { if (getDiscoverer().services != null) @@ -765,6 +766,22 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI return true; } + public boolean restart() + { + synchronized (this) + { + if (running) + { + aborted = true; + } + else + { + running = true; + } + return aborted; + } + } + /** * Start a fresh discovery thread and notify the given object when we're * finished. Any known existing threads will be killed before this one is @@ -775,6 +792,16 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI */ public Thread startDiscoverer(PropertyChangeListener changeSupport2) { + /* if (restart()) + { + return; + } + else + { + Thread thr = new Thread(this); + thr.start(); + } + */ if (isRunning()) { setAborted(true);