Merge branch 'Release_2_8_0b1_Branch' into try_r20b1_merge
[jalview.git] / src / jalview / ws / jws2 / Jws2Discoverer.java
index 119d37b..0782d57 100644 (file)
@@ -1,19 +1,20 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
- * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
  * Jalview is free software: you can redistribute it and/or
  * modify it under the terms of the GNU General Public License 
  * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- * 
+ *  
  * Jalview is distributed in the hope that it will be useful, but 
  * WITHOUT ANY WARRANTY; without even the implied warranty 
  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
  * PURPOSE.  See the GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
  */
 package jalview.ws.jws2;
 
@@ -23,6 +24,7 @@ import jalview.gui.Desktop;
 import jalview.gui.JvSwingUtils;
 import jalview.ws.WSMenuEntryProviderI;
 import jalview.ws.jws2.jabaws2.Jws2Instance;
+import jalview.ws.params.ParamDatastoreI;
 
 import java.awt.Color;
 import java.awt.event.ActionEvent;
@@ -37,6 +39,7 @@ import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
@@ -104,6 +107,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
 
   public void run()
   {
+
     if (running && oldthread != null && oldthread.isAlive())
     {
       if (!aborted)
@@ -125,6 +129,15 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       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:jalview.bin.Cache.getDefault("IGNORED_JABAWS_SERVICETYPES", Services.JpredWS.toString()).split("\\|"))
+    {
+      ignoredServices.add(ignored);
+    }
+
+    
     changeSupport.firePropertyChange("services", services, new Vector());
     oldthread = Thread.currentThread();
     try
@@ -168,7 +181,10 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         // for all possible services
         for (Services sv : squery.JABAWS2SERVERS)
         {
-          svctypes.add(sv.toString());
+          if (!ignoredServices.contains(sv.toString()))
+          {
+            svctypes.add(sv.toString());
+          }
         }
 
       }
@@ -188,7 +204,9 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       ;
       for (JabaWsServerQuery squery : qrys)
       {
-        finished = finished && !squery.isRunning();
+        if (squery.isRunning()){
+          finished=false;
+        }
       }
       if (aborted)
       {
@@ -221,7 +239,10 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         services = new Vector<Jws2Instance>();
         for (Jws2Instance svc : svcs)
         {
-          services.add(svc);
+          if (!ignoredServices.contains(svc.serviceType))
+          {
+            services.add(svc);
+          }
         }
       }
     }
@@ -250,7 +271,11 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
 
     services.add(service);
     // retrieve the presets and parameter set and cache now
-    service.getParamStore().getPresets();
+    ParamDatastoreI pds = service.getParamStore();
+    if (pds != null)
+    {
+      pds.getPresets();
+    }
     service.hasParameters();
     if (validServiceUrls == null)
     {