JAL-2446 merged to spike branch
[jalview.git] / src / jalview / ws / jws2 / Jws2Discoverer.java
index dbcecec..12a08a0 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2b1)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -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<String> invalidServiceUrls = null, urlsWithoutServices = null,
-          validServiceUrls = null;
+  private Vector<String> invalidServiceUrls = null;
 
-  boolean running = false, aborted = false;
+  private Vector<String> urlsWithoutServices = null;
 
-  Thread oldthread = null;
+  private Vector<String> validServiceUrls = null;
+
+  private volatile boolean running = false;
+
+  private volatile boolean aborted = false;
+
+  private Thread oldthread = null;
 
   /**
    * holds list of services.
@@ -143,8 +148,9 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
   public void setAborted(boolean aborted)
   {
     this.aborted = aborted;
-
   }
+
+  @Override
   public void run()
   {
 
@@ -166,20 +172,21 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         {
         }
       }
+      aborted = false;
       Cache.log.debug("Old discovery thread has finished.");
     }
     running = true;
 
     // first set up exclusion list if needed
     final Set<String> ignoredServices = new HashSet<String>();
-    for (String ignored : Cache.getDefault(
-            "IGNORED_JABAWS_SERVICETYPES", "")
-            .split("\\|"))
+    for (String ignored : Cache.getDefault("IGNORED_JABAWS_SERVICETYPES",
+            "").split("\\|"))
     {
       ignoredServices.add(ignored);
     }
 
-    changeSupport.firePropertyChange("services", services, new Vector());
+    changeSupport.firePropertyChange("services", services,
+            new Vector<Jws2Instance>());
     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<Jws2Instance>(), services);
   }
 
   /**
@@ -321,7 +329,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     service.hasParameters();
     if (validServiceUrls == null)
     {
-      validServiceUrls = new Vector();
+      validServiceUrls = new Vector<String>();
     }
     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.
@@ -419,15 +427,16 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
           Desktop.showUrl(service.getHost());
         }
       });
-      hitm.setToolTipText(JvSwingUtils
-              .wrapTooltip(false, MessageManager.getString("label.open_jabaws_web_page ")));
+      hitm.setToolTipText(JvSwingUtils.wrapTooltip(false,
+              MessageManager.getString("label.open_jabaws_web_page")));
 
       service.attachWSMenuEntry(atpoint, alignFrame);
       if (alternates.containsKey(service.serviceType))
       {
-        atpoint.add(hitm = new JMenu(MessageManager.getString("label.switch_server")));
-        hitm.setToolTipText(JvSwingUtils
-                .wrapTooltip(false, MessageManager.getString("label.choose_jabaws_server")));
+        atpoint.add(hitm = new JMenu(MessageManager
+                .getString("label.switch_server")));
+        hitm.setToolTipText(JvSwingUtils.wrapTooltip(false,
+                MessageManager.getString("label.choose_jabaws_server")));
         for (final Jws2Instance sv : alternates.get(service.serviceType))
         {
           JMenuItem itm;
@@ -441,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<Jws2Instance>(), 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(); } });
-         */
       }
     }
   }
@@ -480,7 +481,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
      * for moment we keep them separate.
      */
     JMenu atpoint;
-    MsaWSClient msacl = new MsaWSClient();
+
     List<String> hostLabels = new ArrayList<String>();
     Hashtable<String, String> lasthostFor = new Hashtable<String, String>();
     Hashtable<String, ArrayList<Jws2Instance>> hosts = new Hashtable<String, ArrayList<Jws2Instance>>();
@@ -516,7 +517,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
           atpoint = JvSwingUtils.findOrCreateMenu(atpoint, host);
           if (atpoint.getToolTipText() == null)
           {
-            atpoint.setToolTipText(MessageManager.formatMessage("label.services_at", new String[]{host}));
+            atpoint.setToolTipText(MessageManager.formatMessage(
+                    "label.services_at", new String[] { host }));
           }
         }
         if (bytype)
@@ -560,8 +562,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
                 Desktop.showUrl(service.getHost());
               }
             });
-            hitm.setToolTipText(JvSwingUtils
-                    .wrapTooltip(true, MessageManager.getString("label.open_jabaws_web_page")));
+            hitm.setToolTipText(JvSwingUtils.wrapTooltip(true,
+                    MessageManager.getString("label.open_jabaws_web_page")));
             lasthostFor.put(service.action, host);
           }
           hostLabels.add(host + service.serviceType
@@ -588,6 +590,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
             new PropertyChangeListener()
             {
 
+              @Override
               public void propertyChange(PropertyChangeEvent evt)
               {
                 if (getDiscoverer().services != null)
@@ -710,9 +713,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
           }
         } catch (MalformedURLException ex)
         {
-          Cache.log
-                  .warn("Problem whilst trying to make a URL from '"
-                          + ((url != null) ? url : "<null>") + "'");
+          Cache.log.warn("Problem whilst trying to make a URL from '"
+                  + ((url != null) ? url : "<null>") + "'");
           Cache.log
                   .warn("This was probably due to a malformed comma separated list"
                           + " in the "
@@ -723,9 +725,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       }
     } catch (Exception ex)
     {
-      Cache.log.warn(
-              "Error parsing comma separated list of urls in "
-                      + JWS2HOSTURLS + " preference.", ex);
+      Cache.log.warn("Error parsing comma separated list of urls in "
+              + JWS2HOSTURLS + " preference.", ex);
     }
     return urls;
   }
@@ -746,8 +747,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
   {
     try
     {
-      compbio.ws.client.WSTester.main(new String[]
-      { "-h=" + foo.toString() });
+      compbio.ws.client.WSTester
+              .main(new String[] { "-h=" + foo.toString() });
     } catch (Exception e)
     {
       e.printStackTrace();
@@ -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);
@@ -853,7 +880,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       if (getInvalidServiceUrls() != null
               && getInvalidServiceUrls().size() > 0)
       {
-        ermsg.append("URLs that could not be contacted: \n");
+        ermsg.append(MessageManager.getString("warn.urls_not_contacted")
+                + ": \n");
         for (String svcurl : getInvalidServiceUrls())
         {
           if (list)
@@ -869,7 +897,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       if (getUrlsWithoutServices() != null
               && getUrlsWithoutServices().size() > 0)
       {
-        ermsg.append("URLs without any JABA Services : \n");
+        ermsg.append(MessageManager.getString("warn.urls_no_jaba") + ": \n");
         for (String svcurl : getUrlsWithoutServices())
         {
           if (list)