Merge remote-tracking branch 'origin/develop' into bug/JAL-2314
authorkiramt <k.mourao@dundee.ac.uk>
Fri, 24 Mar 2017 09:44:01 +0000 (09:44 +0000)
committerkiramt <k.mourao@dundee.ac.uk>
Fri, 24 Mar 2017 09:44:01 +0000 (09:44 +0000)
src/jalview/gui/Desktop.java
src/jalview/ws/jws2/Jws2Discoverer.java
test/jalview/ws/jabaws/DisorderAnnotExportImport.java
test/jalview/ws/jabaws/RNAStructExportImport.java
test/jalview/ws/jws2/ParameterUtilsTest.java

index dc16a57..7d0eb7f 100644 (file)
@@ -2854,13 +2854,8 @@ public class Desktop extends jalview.jbgui.GDesktop implements
 
     if (Cache.getDefault("SHOW_JWS2_SERVICES", true))
     {
-      if (jalview.ws.jws2.Jws2Discoverer.getDiscoverer().isRunning())
-      {
-        jalview.ws.jws2.Jws2Discoverer.getDiscoverer().setAborted(true);
-      }
       t2 = jalview.ws.jws2.Jws2Discoverer.getDiscoverer().startDiscoverer(
               changeSupport);
-
     }
     Thread t3 = null;
     {
index 1b2c708..12a08a0 100644 (file)
@@ -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,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<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.
@@ -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<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(); } });
-         */
       }
     }
   }
@@ -481,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>>();
@@ -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);
index 2d317e4..2714d6c 100644 (file)
@@ -44,7 +44,11 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
-@Test(groups = { "External" })
+/*
+ * All methods in this class are set to the Network group because setUpBeforeClass will fail
+ * if there is no network.
+ */
+@Test(singleThreaded = true)
 public class DisorderAnnotExportImport
 {
 
@@ -65,12 +69,19 @@ public class DisorderAnnotExportImport
 
   public static jalview.gui.AlignFrame af = null;
 
-  @BeforeClass(inheritGroups = true)
+  @BeforeClass(alwaysRun = true)
   public static void setUpBeforeClass() throws Exception
   {
     Cache.loadProperties("test/jalview/io/testProps.jvprops");
     Cache.initLogger();
     disc = JalviewJabawsTestUtils.getJabawsDiscoverer();
+
+    while (disc.isRunning())
+    {
+      // don't get services until discoverer has finished
+      Thread.sleep(100);
+    }
+
     iupreds = new ArrayList<Jws2Instance>();
     for (Jws2Instance svc : disc.getServices())
     {
@@ -100,7 +111,7 @@ public class DisorderAnnotExportImport
   /**
    * test for patches to JAL-1294
    */
-  @Test
+  @Test(groups = { "External", "Network" })
   public void testDisorderAnnotExport()
   {
     disorderClient = new AADisorderClient(iupreds.get(0), af, null, null);
index f1430f6..23c7751 100644 (file)
@@ -55,6 +55,11 @@ import org.testng.annotations.Test;
 import compbio.metadata.Argument;
 import compbio.metadata.WrongParameterException;
 
+/*
+ * All methods in this class are set to the Network group because setUpBeforeClass will fail
+ * if there is no network.
+ */
+@Test(singleThreaded = true)
 public class RNAStructExportImport
 {
 
@@ -84,6 +89,12 @@ public class RNAStructExportImport
     Cache.initLogger();
     disc = JalviewJabawsTestUtils.getJabawsDiscoverer(false);
 
+    while (disc.isRunning())
+    {
+      // don't get services until discoverer has finished
+      Thread.sleep(100);
+    }
+
     for (Jws2Instance svc : disc.getServices())
     {
 
@@ -139,7 +150,7 @@ public class RNAStructExportImport
     }
   }
 
-  @Test(groups = { "Functional" })
+  @Test(groups = { "Network" })
   public void testRNAAliFoldValidStructure()
   {
 
@@ -172,7 +183,7 @@ public class RNAStructExportImport
     }
   }
 
-  @Test(groups = { "Functional" })
+  @Test(groups = { "Network" })
   public void testRNAStructExport()
   {
 
@@ -242,7 +253,7 @@ public class RNAStructExportImport
             + "\nCouldn't complete Annotation file roundtrip input/output/input test.");
   }
 
-  @Test(groups = { "Functional" })
+  @Test(groups = { "Network" })
   public void testRnaalifoldSettingsRecovery()
   {
     List<Argument> opts = new ArrayList<Argument>();
index 0662e5b..e859cb0 100644 (file)
@@ -42,6 +42,11 @@ import compbio.metadata.Preset;
 import compbio.metadata.PresetManager;
 import compbio.metadata.WrongParameterException;
 
+/*
+ * All methods in this class are set to the Network group because setUpBeforeClass will fail
+ * if there is no network.
+ */
+@Test(singleThreaded = true)
 public class ParameterUtilsTest
 {
 
@@ -129,7 +134,7 @@ public class ParameterUtilsTest
             || serviceTests.contains(service.serviceType.toLowerCase());
   }
 
-  @Test(groups = { "Functional" })
+  @Test(groups = { "Network" })
   public void testCopyOption()
   {
     for (Jws2Instance service : disc.getServices())
@@ -153,7 +158,7 @@ public class ParameterUtilsTest
 
   /**
    */
-  @Test(groups = { "Functional" })
+  @Test(groups = { "Network" })
   public void testCopyParameter()
   {
     for (Jws2Instance service : disc.getServices())