error checking, sanitization and properties support.
authorjprocter <Jim Procter>
Thu, 18 Aug 2005 15:20:05 +0000 (15:20 +0000)
committerjprocter <Jim Procter>
Thu, 18 Aug 2005 15:20:05 +0000 (15:20 +0000)
src/jalview/ws/Discoverer.java

index 4db5559..66f3f3f 100755 (executable)
@@ -16,6 +16,7 @@ import ext.vamsas.*;
 import java.util.Vector;
 import java.util.Hashtable;
 import java.util.ArrayList;
+import java.util.StringTokenizer;
 
 public class Discoverer
     extends Thread implements Runnable
@@ -92,7 +93,40 @@ public class Discoverer
 
   public static java.util.Hashtable services = null; // vectors of services stored by abstractServiceType string
   public static java.util.Vector serviceList = null; // flat list of services
+  static private Vector getDiscoveryURLS() {
+    Vector urls = new Vector();
+    String RootServiceURLs = jalview.bin.Cache.getDefault("DISCOVERY_URLS",
+        "http://www.compbio.dundee.ac.uk/JalviewWS/services/ServiceRegistry");
 
+    try{
+      StringTokenizer st = new StringTokenizer(RootServiceURLs, ",");
+      while (st.hasMoreElements())
+      {
+        String url = null;
+        try
+        {
+          java.net.URL u = new java.net.URL(url = st.nextToken());
+          if (!urls.contains(u))
+            urls.add(u);
+          else
+            jalview.bin.Jalview.log.info("Ignoring duplicate url in DISCOVERY_URLS list");
+        }
+        catch (Exception ex)
+        {
+          jalview.bin.Jalview.log.warn(
+              "Problem whilst trying to make a URL from '" +
+              ( (url != null) ? url : "<null>")+"'");
+          jalview.bin.Jalview.log.warn("This was probably due to a malformed comma separated list"
+                                       +" in the DISCOVERY_URLS entry of $(HOME)/.jalview_properties)");
+          jalview.bin.Jalview.log.debug("Exception was ",ex);
+        }
+      }
+    }catch(Exception ex)
+    {jalview.bin.Jalview.log.warn("Error parsing comma separated list of urls in DISCOVERY_URLS.",ex);}
+    if (urls.size()>0)
+      return urls;
+    return null;
+  }
   static
   {
 
@@ -101,16 +135,7 @@ public class Discoverer
       reallyDiscoverServices = jalview.bin.Cache.getDefault("DISCOVERY_START", false);
       if (reallyDiscoverServices)
       {
-        RootServiceURL = new java.net.URL(
-            "http://webservices.compbio.dundee.ac.uk:8080/jalTestWS/services/ServiceRegistry");
-        if (ServiceURLList == null)
-        {
-          ServiceURLList = new Vector();
-        }
-        if (!ServiceURLList.contains(RootServiceURL))
-        {
-          ServiceURLList.add(RootServiceURL);
-        }
+        ServiceURLList = getDiscoveryURLS();
       }
       else
       {
@@ -166,9 +191,9 @@ public class Discoverer
     }
     catch (Exception e)
     {
-      System.err.println("failed to locate Services through URL : " +
-                         location + "\n");
-      e.printStackTrace();
+      jalview.bin.Jalview.log.debug("No Discovery service at " +
+                         location);
+      jalview.bin.Jalview.log.debug(e);
 
     }
     if ( (shs != null) && shs.getServices().length > 0)
@@ -253,6 +278,11 @@ public class Discoverer
       {
 
         buildServiceLists(sh, cat, sscat);
+      } else {
+        jalview.bin.Jalview.log.warn(
+            "No services at "
+            +((java.net.URL) ServiceURLList.get(s_url))
+            +" - check DISCOVERY_URLS property in .jalview_properties");
       }
       s_url++;
     }