JAL-3070 core service descriptors for JABAWS services abstracted to jalview.ws.api...
authorJim Procter <jprocter@issues.jalview.org>
Fri, 20 Jul 2018 13:27:50 +0000 (14:27 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Fri, 20 Jul 2018 13:29:17 +0000 (14:29 +0100)
Note: The jws2.WSClient’s ’serviceType’ is now UIinfo.getName() - reflecting that serviceType was actually the name of the service

14 files changed:
src/jalview/gui/AlignFrame.java
src/jalview/ws/api/UIinfo.java
src/jalview/ws/jws2/AADisorderClient.java
src/jalview/ws/jws2/JabaParamStore.java
src/jalview/ws/jws2/Jws2Client.java
src/jalview/ws/jws2/Jws2Discoverer.java
src/jalview/ws/jws2/MsaWSClient.java
src/jalview/ws/jws2/RNAalifoldClient.java
src/jalview/ws/jws2/SequenceAnnotationWSClient.java
src/jalview/ws/jws2/dm/AAConSettings.java
src/jalview/ws/jws2/jabaws2/Jws2Instance.java
src/jalview/ws/rest/RestClient.java
src/jalview/ws/rest/RestJobThread.java
src/jalview/ws/rest/RestServiceDescription.java

index 9de9e3b..7b6954f 100644 (file)
@@ -4098,7 +4098,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
                       jws2servs.attachWSMenuEntry(webService, me);
                       for (Jws2Instance sv : jws2servs.getServices())
                       {
-                        if (sv.description.toLowerCase().contains("jpred"))
+                        if (sv.getName().toLowerCase().contains("jpred"))
                         {
                           for (JMenuItem jmi : legacyItems)
                           {
index cd156f2..81c4ff3 100644 (file)
@@ -6,13 +6,33 @@ package jalview.ws.api;
 
 public class UIinfo
 {
-  public UIinfo(String action, String name, String description)
+  private String ServiceType;
+
+  public UIinfo(String serviceType, String action, String name,
+          String description)
   {
+    this.setServiceType(serviceType == null ? "" : serviceType);
     this.Action = action == null ? "" : action;
     this.description = description == null ? "" : description;
     this.Name = name == null ? "" : name;
   }
 
+  /**
+   * The type of analysis the service performs
+   */
+  public String getServiceType()
+  {
+    return ServiceType;
+  }
+
+  public void setServiceType(String serviceType)
+  {
+    ServiceType = serviceType;
+  }
+
+  /**
+   * The action when the service performs the analysis
+   */
   public String getAction()
   {
     return Action;
@@ -23,6 +43,11 @@ public class UIinfo
     Action = action;
   }
 
+  /**
+   * name shown to user
+   * 
+   * @return
+   */
   public String getName()
   {
     return Name;
@@ -33,6 +58,11 @@ public class UIinfo
     Name = name;
   }
 
+  /**
+   * Detailed description (may include references, URLs, html,etc)
+   * 
+   * @return
+   */
   public String getDescription()
   {
     return description;
@@ -52,8 +82,12 @@ public class UIinfo
     }
     UIinfo other = (UIinfo) object;
 
-    return (Name == null && other.getName() == null || Name != null
-            && other.getName() != null && Name.equals(other.getName()))
+    return (ServiceType == null && other.getServiceType() == null
+            || ServiceType != null && other.getServiceType() != null
+                    && ServiceType.equals(other.getServiceType()))
+            && (Name == null && other.getName() == null
+                    || Name != null && other.getName() != null
+                            && Name.equals(other.getName()))
             && (Action == null && other.getAction() == null
                     || Action != null && other.getAction() != null
                             && Action.equals(other.getAction()))
index 9a2316c..bd4e0ea 100644 (file)
@@ -66,8 +66,8 @@ public class AADisorderClient extends JabawsCalcWorker
   {
     super(sh, alignFrame, thePreset, paramset);
     af = alignFrame;
-    typeName = sh.action;
-    methodName = sh.serviceType;
+    typeName = sh.getAction();
+    methodName = sh.getName();
 
     submitGaps = false;
     alignedSeqs = false;
@@ -169,9 +169,9 @@ public class AADisorderClient extends JabawsCalcWorker
     if (immediate || !calcMan.isWorking(this) && scoremanager != null)
     {
       Map<String, String[]> featureTypeMap = featureMap
-              .get(service.serviceType);
+              .get(service.getName());
       Map<String, Map<String, Object>> annotTypeMap = annotMap
-              .get(service.serviceType);
+              .get(service.getName());
       boolean dispFeatures = false;
       Map<String, Object> fc = new Hashtable<>();
       List<AlignmentAnnotation> ourAnnot = new ArrayList<>();
@@ -265,9 +265,9 @@ public class AADisorderClient extends JabawsCalcWorker
               String typename, calcName;
               AlignmentAnnotation annot = createAnnotationRowsForScores(
                       ourAnnot,
-                      typename = service.serviceType + " ("
+                      typename = service.getName() + " ("
                               + scr.getMethod() + ")",
-                      calcName = service.getServiceTypeURI() + "/"
+                      calcName = service.getNameURI() + "/"
                               + scr.getMethod(),
                       aseq, base + 1, scr);
               annot.graph = AlignmentAnnotation.LINE_GRAPH;
index 10ec812..0257a76 100644 (file)
@@ -47,7 +47,7 @@ import compbio.metadata.RunnerConfig;
 public class JabaParamStore implements ParamDatastoreI
 {
 
-  Hashtable<String, JabaWsParamSet> editedParams = new Hashtable<String, JabaWsParamSet>();
+  Hashtable<String, JabaWsParamSet> editedParams = new Hashtable<>();
 
   private Jws2Instance service;
 
@@ -101,7 +101,7 @@ public class JabaParamStore implements ParamDatastoreI
     List<WsParamSetI> prefs = new ArrayList();
     if (servicePresets == null)
     {
-      servicePresets = new Hashtable<String, JabaPreset>();
+      servicePresets = new Hashtable<>();
       PresetManager prman;
       if ((prman = service.getPresets()) != null)
       {
@@ -148,8 +148,8 @@ public class JabaParamStore implements ParamDatastoreI
   public static List<ArgumentI> getJwsArgsfromJaba(List jabargs,
           boolean sortByOpt)
   {
-    List<ArgumentI> rgs = new ArrayList<ArgumentI>();
-    List<String> rgnames = new ArrayList<String>();
+    List<ArgumentI> rgs = new ArrayList<>();
+    List<String> rgnames = new ArrayList<>();
     for (Object rg : jabargs)
     {
       ArgumentI narg = null;
@@ -309,7 +309,7 @@ public class JabaParamStore implements ParamDatastoreI
     boolean found = false;
     for (String url : urls)
     {
-      if (service.getServiceTypeURI().equals(url)
+      if (service.getNameURI().equals(url)
               || service.getUri().equalsIgnoreCase(url))
       {
         found = true;
@@ -334,7 +334,7 @@ public class JabaParamStore implements ParamDatastoreI
     wsp.setDescription(descr);
     wsp.setApplicableUrls(urls.clone());
 
-    List<String> lines = new ArrayList<String>();
+    List<String> lines = new ArrayList<>();
     StringTokenizer st = new StringTokenizer(parameterfile, "\n");
     while (st.hasMoreTokens())
     {
index 0f1a25e..4e135d1 100644 (file)
@@ -144,9 +144,7 @@ public abstract class Jws2Client extends jalview.ws.WSClient
 
   protected WebserviceInfo setWebService(Jws2Instance serv, boolean b)
   {
-    // serviceHandle = serv;
-    String serviceInstance = serv.action; // serv.service.getClass().getName();
-    WebServiceName = serv.serviceType;
+    WebServiceName = serv.getName();
     WebServiceJobTitle = serv.getActionText();
     WsURL = serv.hosturl;
     if (!b)
@@ -154,7 +152,9 @@ public abstract class Jws2Client extends jalview.ws.WSClient
       return new WebserviceInfo(WebServiceJobTitle,
               WebServiceJobTitle + " using service hosted at "
                       + serv.hosturl + "\n"
-                      + (serv.description != null ? serv.description : ""),
+                      + (serv.getDescription() != null
+                              ? serv.getDescription()
+                              : ""),
               false);
     }
     return null;
@@ -386,12 +386,12 @@ public abstract class Jws2Client extends jalview.ws.WSClient
   {
     if (service != null)
     {
-      if (!service.serviceType.toString()
+      if (!service.getServiceType()
               .equals(compbio.ws.client.Services.AAConWS.toString()))
       {
         Cache.log.warn(
                 "Ignoring invalid preferred service for AACon calculations (service type was "
-                        + service.serviceType + ")");
+                        + service.getServiceType() + ")");
         service = null;
       }
       else
index 5319eab..b6c5473 100644 (file)
@@ -178,7 +178,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     running = true;
 
     // first set up exclusion list if needed
-    final Set<String> ignoredServices = new HashSet<String>();
+    final Set<String> ignoredServices = new HashSet<>();
     for (String ignored : Cache
             .getDefault("IGNORED_JABAWS_SERVICETYPES", "").split("\\|"))
     {
@@ -217,9 +217,9 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     {
       validServiceUrls.removeAllElements();
     }
-    ArrayList<String> svctypes = new ArrayList<String>();
+    ArrayList<String> svctypes = new ArrayList<>();
 
-    List<JabaWsServerQuery> qrys = new ArrayList<JabaWsServerQuery>();
+    List<JabaWsServerQuery> qrys = new ArrayList<>();
     for (final String jwsserver : getServiceUrls())
     {
       JabaWsServerQuery squery = new JabaWsServerQuery(this, jwsserver);
@@ -282,13 +282,13 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
         {
           svcs[ipos] = svc;
           spos[ipos++] = 1000 * svcUrls.indexOf(svc.getHost()) + 1
-                  + svctypes.indexOf(svc.serviceType);
+                  + svctypes.indexOf(svc.getName());
         }
         jalview.util.QuickSort.sort(spos, svcs);
-        services = new Vector<Jws2Instance>();
+        services = new Vector<>();
         for (Jws2Instance svc : svcs)
         {
-          if (!ignoredServices.contains(svc.serviceType))
+          if (!ignoredServices.contains(svc.getName()))
           {
             services.add(svc);
           }
@@ -312,7 +312,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
   {
     if (services == null)
     {
-      services = new Vector<Jws2Instance>();
+      services = new Vector<>();
     }
     System.out.println(
             "Discovered service: " + jwsservers + " " + service.toString());
@@ -329,7 +329,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     service.hasParameters();
     if (validServiceUrls == null)
     {
-      validServiceUrls = new Vector<String>();
+      validServiceUrls = new Vector<>();
     }
     validServiceUrls.add(jwsservers);
   }
@@ -363,13 +363,14 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
      * for moment we keep them separate.
      */
     JMenu atpoint;
-    List<Jws2Instance> enumerableServices = new ArrayList<Jws2Instance>();
+    List<Jws2Instance> enumerableServices = new ArrayList<>();
     // jws2al.removeAll();
-    Map<String, Jws2Instance> preferredHosts = new HashMap<String, Jws2Instance>();
-    Map<String, List<Jws2Instance>> alternates = new HashMap<String, List<Jws2Instance>>();
+    Map<String, Jws2Instance> preferredHosts = new HashMap<>();
+    Map<String, List<Jws2Instance>> alternates = new HashMap<>();
     for (Jws2Instance service : services.toArray(new Jws2Instance[0]))
     {
-      if (!isRecalculable(service.action))
+      // TODO: check this behaves with refactored serviceType to getName
+      if (!isRecalculable(service.getName()))
       {
         // add 'one shot' services to be displayed using the classic menu
         // structure
@@ -377,28 +378,28 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       }
       else
       {
-        if (!preferredHosts.containsKey(service.serviceType))
+        if (!preferredHosts.containsKey(service.getName()))
         {
           Jws2Instance preferredInstance = getPreferredServiceFor(
-                  alignFrame, service.serviceType);
+                  alignFrame, service.getName());
           if (preferredInstance != null)
           {
-            preferredHosts.put(service.serviceType, preferredInstance);
+            preferredHosts.put(service.getName(), preferredInstance);
           }
           else
           {
-            preferredHosts.put(service.serviceType, service);
+            preferredHosts.put(service.getName(), service);
           }
         }
-        List<Jws2Instance> ph = alternates.get(service.serviceType);
-        if (preferredHosts.get(service.serviceType) != service)
+        List<Jws2Instance> ph = alternates.get(service.getName());
+        if (preferredHosts.get(service.getName()) != service)
         {
           if (ph == null)
           {
-            ph = new ArrayList<Jws2Instance>();
+            ph = new ArrayList<>();
           }
           ph.add(service);
-          alternates.put(service.serviceType, ph);
+          alternates.put(service.getName(), ph);
         }
       }
 
@@ -409,7 +410,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     // and the instantaneous services
     for (final Jws2Instance service : preferredHosts.values())
     {
-      atpoint = JvSwingUtils.findOrCreateMenu(jws2al, service.action);
+      atpoint = JvSwingUtils.findOrCreateMenu(jws2al,
+              service.getServiceType());
       JMenuItem hitm;
       if (atpoint.getItemCount() > 1)
       {
@@ -431,13 +433,13 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
               MessageManager.getString("label.open_jabaws_web_page")));
 
       service.attachWSMenuEntry(atpoint, alignFrame);
-      if (alternates.containsKey(service.serviceType))
+      if (alternates.containsKey(service.getName()))
       {
         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))
+        for (final Jws2Instance sv : alternates.get(service.getName()))
         {
           JMenuItem itm;
           hitm.add(itm = new JMenuItem(sv.getHost()));
@@ -453,8 +455,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
                 @Override
                 public void run()
                 {
-                  setPreferredServiceFor(alignFrame, sv.serviceType,
-                          sv.action, sv);
+                  setPreferredServiceFor(alignFrame, sv.getName(),
+                          sv.getServiceType(), sv);
                   changeSupport.firePropertyChange("services",
                           new Vector<Jws2Instance>(), services);
                 };
@@ -483,17 +485,17 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
      */
     JMenu atpoint;
 
-    List<String> hostLabels = new ArrayList<String>();
-    Hashtable<String, String> lasthostFor = new Hashtable<String, String>();
-    Hashtable<String, ArrayList<Jws2Instance>> hosts = new Hashtable<String, ArrayList<Jws2Instance>>();
-    ArrayList<String> hostlist = new ArrayList<String>();
+    List<String> hostLabels = new ArrayList<>();
+    Hashtable<String, String> lasthostFor = new Hashtable<>();
+    Hashtable<String, ArrayList<Jws2Instance>> hosts = new Hashtable<>();
+    ArrayList<String> hostlist = new ArrayList<>();
     for (Jws2Instance service : enumerableServices)
     {
       ArrayList<Jws2Instance> hostservices = hosts.get(service.getHost());
       if (hostservices == null)
       {
         hosts.put(service.getHost(),
-                hostservices = new ArrayList<Jws2Instance>());
+                hostservices = new ArrayList<>());
         hostlist.add(service.getHost());
       }
       hostservices.add(service);
@@ -506,13 +508,14 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       String sortbytype[] = new String[orderedsvcs.length];
       for (int i = 0; i < sortbytype.length; i++)
       {
-        sortbytype[i] = orderedsvcs[i].serviceType;
+        sortbytype[i] = orderedsvcs[i].getName();
       }
       jalview.util.QuickSort.sort(sortbytype, orderedsvcs);
       for (final Jws2Instance service : orderedsvcs)
       {
-        atpoint = JvSwingUtils.findOrCreateMenu(jws2al, service.action);
-        String type = service.serviceType;
+        atpoint = JvSwingUtils.findOrCreateMenu(jws2al,
+                service.getAction());
+        String type = service.getName();
         if (byhost)
         {
           atpoint = JvSwingUtils.findOrCreateMenu(atpoint, host);
@@ -532,7 +535,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
           }
         }
         if (!byhost && !hostLabels.contains(
-                host + service.serviceType + service.getActionText()))
+                host + service.getName() + service.getActionText()))
         // !hostLabels.contains(host + (bytype ?
         // service.serviceType+service.getActionText() : "")))
         {
@@ -549,8 +552,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
           {
             hostLabels.add(host);
           }
-          if (lasthostFor.get(service.action) == null
-                  || !lasthostFor.get(service.action).equals(host))
+          if (lasthostFor.get(service.getAction()) == null
+                  || !lasthostFor.get(service.getAction()).equals(host))
           {
             atpoint.add(hitm = new JMenuItem(host));
             hitm.setForeground(Color.blue);
@@ -566,10 +569,10 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
             hitm.setToolTipText(
                     JvSwingUtils.wrapTooltip(true, MessageManager
                             .getString("label.open_jabaws_web_page")));
-            lasthostFor.put(service.action, host);
+            lasthostFor.put(service.getAction(), host);
           }
           hostLabels.add(
-                  host + service.serviceType + service.getActionText());
+                  host + service.getName() + service.getActionText());
         }
 
         service.attachWSMenuEntry(atpoint, alignFrame);
@@ -581,7 +584,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
   {
     if (args.length > 0)
     {
-      testUrls = new ArrayList<String>();
+      testUrls = new ArrayList<>();
       for (String url : args)
       {
         testUrls.add(url);
@@ -685,7 +688,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       // return test urls, if there are any, instead of touching cache
       return testUrls;
     }
-    List<String> urls = new ArrayList<String>();
+    List<String> urls = new ArrayList<>();
 
     if (this.preferredUrl != null)
     {
@@ -733,8 +736,8 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
 
   public Vector<Jws2Instance> getServices()
   {
-    return (services == null) ? new Vector<Jws2Instance>()
-            : new Vector<Jws2Instance>(services);
+    return (services == null) ? new Vector<>()
+            : new Vector<>(services);
   }
 
   /**
@@ -839,7 +842,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
   {
     if (urlsWithoutServices == null)
     {
-      urlsWithoutServices = new Vector<String>();
+      urlsWithoutServices = new Vector<>();
     }
 
     if ((invalidServiceUrls == null
@@ -859,7 +862,7 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
   {
     if (invalidServiceUrls == null)
     {
-      invalidServiceUrls = new Vector<String>();
+      invalidServiceUrls = new Vector<>();
     }
     if (!invalidServiceUrls.contains(jwsservers))
     {
@@ -947,14 +950,16 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
    */
   public Jws2Instance getPreferredServiceFor(String[] serviceURLs)
   {
-    HashSet<String> urls = new HashSet<String>();
+    HashSet<String> urls = new HashSet<>();
     urls.addAll(Arrays.asList(serviceURLs));
     Jws2Instance match = null;
     if (services != null)
     {
       for (Jws2Instance svc : services)
       {
-        if (urls.contains(svc.getServiceTypeURI()))
+        // TODO getNameURI Should return a versioned URI for the service, but
+        // doesn't as of 2.11
+        if (urls.contains(svc.getNameURI()))
         {
           if (match == null)
           {
@@ -974,20 +979,21 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     return match;
   }
 
-  Map<String, Map<String, String>> preferredServiceMap = new HashMap<String, Map<String, String>>();;
+  Map<String, Map<String, String>> preferredServiceMap = new HashMap<>();;
 
   /**
-   * get current preferred service of the given type, or global default
+   * get current preferred endpoint of the given Jabaws service, or global
+   * default
    * 
    * @param af
    *          null or a specific alignFrame
-   * @param serviceType
-   *          Jws2Instance.serviceType for service
+   * @param serviceName
+   *          Jws2Instance.getName() for service
    * @return null if no service of this type is available, the preferred service
    *         for the serviceType and af if specified and if defined.
    */
   public Jws2Instance getPreferredServiceFor(AlignFrame af,
-          String serviceType)
+          String serviceName)
   {
     String serviceurl = null;
     synchronized (preferredServiceMap)
@@ -1001,14 +1007,14 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
       }
       if (prefmap != null)
       {
-        serviceurl = prefmap.get(serviceType);
+        serviceurl = prefmap.get(serviceName);
       }
 
     }
     Jws2Instance response = null;
     for (Jws2Instance svc : services)
     {
-      if (svc.serviceType.equals(serviceType))
+      if (svc.getName().equals(serviceName))
       {
         if (serviceurl == null || serviceurl.equals(svc.getHost()))
         {
@@ -1020,21 +1026,22 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI
     return response;
   }
 
-  public void setPreferredServiceFor(AlignFrame af, String serviceType,
+  public void setPreferredServiceFor(AlignFrame af, String serviceName,
           String serviceAction, Jws2Instance selectedServer)
   {
+    // TODO: pull out and generalise for the selectedServer's attributes
     String afid = (af == null) ? "" : af.getViewport().getSequenceSetId();
     if (preferredServiceMap == null)
     {
-      preferredServiceMap = new HashMap<String, Map<String, String>>();
+      preferredServiceMap = new HashMap<>();
     }
     Map<String, String> prefmap = preferredServiceMap.get(afid);
     if (prefmap == null)
     {
-      prefmap = new HashMap<String, String>();
+      prefmap = new HashMap<>();
       preferredServiceMap.put(afid, prefmap);
     }
-    prefmap.put(serviceType, selectedServer.getHost());
+    prefmap.put(serviceName, selectedServer.getHost());
     prefmap.put(serviceAction, selectedServer.getHost());
   }
 
index 7e68d3b..bbeefc6 100644 (file)
@@ -111,7 +111,7 @@ public class MsaWSClient extends Jws2Client
               MessageManager.formatMessage(
                       "label.service_called_is_not_msa_service",
                       new String[]
-                      { sh.serviceType }),
+                      { sh.getName() }),
               MessageManager.getString("label.internal_jalview_error"),
               JvOptionPane.WARNING_MESSAGE);
 
@@ -122,7 +122,7 @@ public class MsaWSClient extends Jws2Client
     {
       JvOptionPane.showMessageDialog(Desktop.desktop, MessageManager
               .formatMessage("label.msa_service_is_unknown", new String[]
-              { sh.serviceType }),
+              { sh.getName() }),
               MessageManager.getString("label.internal_jalview_error"),
               JvOptionPane.WARNING_MESSAGE);
 
index 80c9ce9..32ae38f 100644 (file)
@@ -65,7 +65,7 @@ public class RNAalifoldClient extends JabawsCalcWorker
   {
     super(sh, alignFrame, preset, paramset);
     af = alignFrame;
-    methodName = sh.serviceType;
+    methodName = sh.getName();
     alignedSeqs = true;
     submitGaps = true;
     nucleotidesAllowed = true;
@@ -112,7 +112,7 @@ public class RNAalifoldClient extends JabawsCalcWorker
     if (immediate || !calcMan.isWorking(this) && scoremanager != null)
     {
 
-      List<AlignmentAnnotation> ourAnnot = new ArrayList<AlignmentAnnotation>();
+      List<AlignmentAnnotation> ourAnnot = new ArrayList<>();
 
       // Unpack the ScoreManager
       List<String> structs = ((RNAStructScoreManager) scoremanager)
@@ -231,7 +231,7 @@ public class RNAalifoldClient extends JabawsCalcWorker
 
       // The base pair probabilities are stored in a set in scoreholder. we want
       // a map
-      LinkedHashMap<Range, Float> basePairs = new LinkedHashMap<Range, Float>();
+      LinkedHashMap<Range, Float> basePairs = new LinkedHashMap<>();
       for (Score score : data)
       {
         // The Score objects contain a set of size one containing the range and
@@ -377,7 +377,7 @@ public class RNAalifoldClient extends JabawsCalcWorker
   private LinkedHashMap<Range, Float> isContact(
           LinkedHashMap<Range, Float> basePairs, int i)
   {
-    LinkedHashMap<Range, Float> contacts = new LinkedHashMap<Range, Float>();
+    LinkedHashMap<Range, Float> contacts = new LinkedHashMap<>();
 
     for (Range contact : basePairs.keySet())
     {
index 45bddac..8befb2a 100644 (file)
@@ -128,7 +128,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
         worker.updateParameters(this.preset, paramset);
       }
     }
-    if (sh.action.toLowerCase().contains("disorder"))
+    if (sh.getAction().toLowerCase().contains("disorder"))
     {
       // build IUPred style client. take sequences, returns annotation per
       // sequence.
@@ -156,6 +156,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
    * @see jalview.ws.jws2.Jws2Client#attachWSMenuEntry(javax.swing.JMenu,
    * jalview.ws.jws2.jabaws2.Jws2Instance, jalview.gui.AlignFrame)
    */
+  @Override
   public void attachWSMenuEntry(JMenu wsmenu, final Jws2Instance service,
           final AlignFrame alignFrame)
   {
@@ -166,8 +167,8 @@ public class SequenceAnnotationWSClient extends Jws2Client
     }
     boolean hasparams = service.hasParameters();
     // Assume name ends in WS
-    String calcName = service.serviceType.substring(0,
-            service.serviceType.length() - 2);
+    String calcName = service.getName().substring(0,
+            service.getName().length() - 2);
 
     JMenuItem annotservice = new JMenuItem(MessageManager.formatMessage(
             "label.calcname_with_default_settings", new String[]
@@ -193,6 +194,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
 
       annotservice.addActionListener(new ActionListener()
       {
+        @Override
         public void actionPerformed(ActionEvent e)
         {
           new SequenceAnnotationWSClient(service, alignFrame, null, true);
@@ -217,6 +219,7 @@ public class SequenceAnnotationWSClient extends Jws2Client
                   + "</strong><br/>" + preset.getDescription()));
           methodR.addActionListener(new ActionListener()
           {
+            @Override
             public void actionPerformed(ActionEvent e)
             {
               new SequenceAnnotationWSClient(service, alignFrame, preset,
index 708787e..5cc8f66 100644 (file)
@@ -76,8 +76,8 @@ public class AAConSettings extends jalview.ws.params.AutoCalcSetting
         preset = pr;
         return;
       }
-      List<ArgumentI> oldargs = new ArrayList<ArgumentI>(),
-              newargs = new ArrayList<ArgumentI>();
+      List<ArgumentI> oldargs = new ArrayList<>(),
+              newargs = new ArrayList<>();
       oldargs.addAll(preset.getArguments());
       // need to compare parameters
       for (ArgumentI newparg : pr.getArguments())
@@ -112,6 +112,7 @@ public class AAConSettings extends jalview.ws.params.AutoCalcSetting
             : JabaParamStore.getJwsArgsfromJaba(jobArgset);
   }
 
+  @Override
   public String getWsParamFile()
   {
     List<Option> opts = null;
@@ -142,7 +143,7 @@ public class AAConSettings extends jalview.ws.params.AutoCalcSetting
   @Override
   public String getServiceURI()
   {
-    return service.getServiceTypeURI();
+    return service.getNameURI();
   }
 
   @Override
index 2f3c298..69f9072 100644 (file)
@@ -23,6 +23,7 @@ package jalview.ws.jws2.jabaws2;
 import jalview.gui.AlignFrame;
 import jalview.gui.Desktop;
 import jalview.util.MessageManager;
+import jalview.ws.api.UIinfo;
 import jalview.ws.jws2.JabaParamStore;
 import jalview.ws.jws2.MsaWSClient;
 import jalview.ws.jws2.SequenceAnnotationWSClient;
@@ -38,18 +39,12 @@ import compbio.data.msa.SequenceAnnotation;
 import compbio.metadata.PresetManager;
 import compbio.metadata.RunnerConfig;
 
-public class Jws2Instance
+public class Jws2Instance extends UIinfo
 {
   public String hosturl;
 
-  public String serviceType;
-
-  public String action;
-
   public JABAService service;
 
-  public String description;
-
   public String docUrl;
 
   /**
@@ -69,12 +64,9 @@ public class Jws2Instance
   public Jws2Instance(String hosturl, String serviceType, String action,
           String description, JABAService service)
   {
-    super();
+    super(action, action, serviceType, description);
     this.hosturl = hosturl;
-    this.serviceType = serviceType;
     this.service = service;
-    this.action = action;
-    this.description = description;
     int p = description.indexOf("MORE INFORMATION:");
     if (p > -1)
     {
@@ -115,7 +107,7 @@ public class Jws2Instance
       } catch (Exception ex)
       {
         System.err.println("Exception when retrieving presets for service "
-                + serviceType + " at " + hosturl);
+                + getServiceType() + " at " + hosturl);
       }
     }
     return presets;
@@ -138,7 +130,7 @@ public class Jws2Instance
    */
   public String getActionText()
   {
-    return action + " with " + serviceType;
+    return getAction() + " with " + getServiceType();
   }
 
   /**
@@ -160,7 +152,7 @@ public class Jws2Instance
     throw new Error(MessageManager.formatMessage(
             "error.implementation_error_runner_config_not_available",
             new String[]
-            { serviceType, service.getClass().toString() }));
+            { getServiceType(), service.getClass().toString() }));
   }
 
   @Override
@@ -204,7 +196,7 @@ public class Jws2Instance
     return hosturl
             + (hosturl.lastIndexOf("/") == (hosturl.length() - 1) ? ""
                     : "/")
-            + serviceType;
+            + getServiceType();
   }
 
   private boolean hasParams = false, lookedForParams = false;
@@ -238,9 +230,9 @@ public class Jws2Instance
     }
   }
 
-  public String getServiceTypeURI()
+  public String getNameURI()
   {
-    return "java:" + serviceType;
+    return "java:" + getName();
   }
 
   jalview.ws.uimodel.AlignAnalysisUIText aaui;
index a71b70d..9301c7e 100644 (file)
@@ -99,12 +99,12 @@ public class RestClient extends WSClient
   {
     WebServiceJobTitle = MessageManager
             .formatMessage("label.webservice_job_title", new String[]
-            { service.details.Action, service.details.Name });
-    WebServiceName = service.details.Name;
+            { service.details.getAction(), service.details.getName() });
+    WebServiceName = service.details.getName();
     WebServiceReference = "No reference - go to url for more info";
-    if (service.details.description != null)
+    if (service.details.getDescription() != null)
     {
-      WebServiceReference = service.details.description;
+      WebServiceReference = service.details.getDescription();
     }
     if (!headless)
     {
@@ -141,10 +141,10 @@ public class RestClient extends WSClient
   public void attachWSMenuEntry(final JMenu wsmenu,
           final AlignFrame alignFrame)
   {
-    JMenuItem submit = new JMenuItem(service.details.Name);
+    JMenuItem submit = new JMenuItem(service.details.getName());
     submit.setToolTipText(MessageManager
             .formatMessage("label.rest_client_submit", new String[]
-            { service.details.Action, service.details.Name }));
+            { service.details.getAction(), service.details.getName() }));
     submit.addActionListener(new ActionListener()
     {
 
@@ -344,7 +344,7 @@ public class RestClient extends WSClient
     String action = "Analysis",
             description = "Sequence Harmony and Multi-Relief (Brandt et al. 2010)",
             name = MessageManager.getString("label.multiharmony");
-    Hashtable<String, InputType> iparams = new Hashtable<String, InputType>();
+    Hashtable<String, InputType> iparams = new Hashtable<>();
     jalview.ws.rest.params.JobConstant toolp;
     // toolp = new jalview.ws.rest.JobConstant("tool","jalview");
     // iparams.put(toolp.token, toolp);
@@ -407,7 +407,7 @@ public class RestClient extends WSClient
   {
     if (services == null)
     {
-      services = new Vector<String>();
+      services = new Vector<>();
       try
       {
         for (RestServiceDescription descr : RestServiceDescription
@@ -436,7 +436,7 @@ public class RestClient extends WSClient
 
   public String getAction()
   {
-    return service.details.Action;
+    return service.details.getAction();
   }
 
   public RestServiceDescription getRestDescription()
@@ -446,7 +446,7 @@ public class RestClient extends WSClient
 
   public static Vector<String> getRsbsDescriptions()
   {
-    Vector<String> rsbsDescrs = new Vector<String>();
+    Vector<String> rsbsDescrs = new Vector<>();
     for (RestClient rsbs : getRestClients())
     {
       rsbsDescrs.add(rsbs.getRestDescription().toString());
@@ -459,7 +459,7 @@ public class RestClient extends WSClient
     if (rsbsUrls != null)
     {
       // TODO: consider validating services ?
-      services = new Vector<String>(rsbsUrls);
+      services = new Vector<>(rsbsUrls);
       StringBuffer sprop = new StringBuffer();
       for (String s : services)
       {
index acb7904..ed7fe0c 100644 (file)
@@ -575,12 +575,12 @@ public class RestJobThread extends AWSThread
     /**
      * alignment panels derived from each alignment set returned by service.
      */
-    ArrayList<jalview.gui.AlignmentPanel> destPanels = new ArrayList<jalview.gui.AlignmentPanel>();
+    ArrayList<jalview.gui.AlignmentPanel> destPanels = new ArrayList<>();
     /**
      * list of instructions for how to process each distinct alignment set
      * returned by the job set
      */
-    ArrayList<AddDataTo> resultDest = new ArrayList<AddDataTo>();
+    ArrayList<AddDataTo> resultDest = new ArrayList<>();
     /**
      * when false, zeroth pane is panel derived from input deta.
      */
@@ -599,9 +599,9 @@ public class RestJobThread extends AWSThread
     boolean vsepjobs = restClient.service.isVseparable();
     // total number of distinct alignment sets generated by job set.
     int numAlSets = 0, als = 0;
-    List<AlignmentI> destAls = new ArrayList<AlignmentI>();
-    List<jalview.datamodel.HiddenColumns> destColsel = new ArrayList<jalview.datamodel.HiddenColumns>();
-    List<List<NewickFile>> trees = new ArrayList<List<NewickFile>>();
+    List<AlignmentI> destAls = new ArrayList<>();
+    List<jalview.datamodel.HiddenColumns> destColsel = new ArrayList<>();
+    List<List<NewickFile>> trees = new ArrayList<>();
 
     do
     {
@@ -660,7 +660,7 @@ public class RestJobThread extends AWSThread
 
               if (alset.trees != null)
               {
-                trees.add(new ArrayList<NewickFile>(alset.trees));
+                trees.add(new ArrayList<>(alset.trees));
               }
               else
               {
@@ -688,8 +688,8 @@ public class RestJobThread extends AWSThread
        */
       int vrestjob = 0;
       // Destination alignments for all result data.
-      ArrayList<SequenceGroup> visgrps = new ArrayList<SequenceGroup>();
-      Hashtable<String, SequenceGroup> groupNames = new Hashtable<String, SequenceGroup>();
+      ArrayList<SequenceGroup> visgrps = new ArrayList<>();
+      Hashtable<String, SequenceGroup> groupNames = new Hashtable<>();
       ArrayList<AlignmentAnnotation> visAlAn = null;
       for (nvertsep = 0; nvertsep < nvertseps; nvertsep++)
       {
@@ -953,7 +953,7 @@ public class RestJobThread extends AWSThread
                 }
                 if (visAlAn == null)
                 {
-                  visAlAn = new ArrayList<AlignmentAnnotation>();
+                  visAlAn = new ArrayList<>();
                 }
                 AlignmentAnnotation visan = null;
                 for (AlignmentAnnotation v : visAlAn)
@@ -1037,8 +1037,9 @@ public class RestJobThread extends AWSThread
       HiddenColumns destcs;
       String alTitle = MessageManager
               .formatMessage("label.webservice_job_title_on", new String[]
-              { restClient.service.details.Action,
-                  restClient.service.details.Name, restClient.viewTitle });
+              { restClient.service.details.getAction(),
+                  restClient.service.details.getName(),
+                  restClient.viewTitle });
       switch (action)
       {
       case newAlignment:
@@ -1248,7 +1249,7 @@ public class RestJobThread extends AWSThread
    */
   public boolean isValid()
   {
-    ArrayList<String> _warnings = new ArrayList<String>();
+    ArrayList<String> _warnings = new ArrayList<>();
     boolean validt = true;
     if (jobs != null)
     {
index 285b795..a83c005 100644 (file)
@@ -67,7 +67,7 @@ public class RestServiceDescription
           boolean vseparable, char gapCharacter)
   {
     super();
-    this.details = new UIinfo(action, name, description);
+    this.details = new UIinfo(action, action, name, description);
     this.postUrl = postUrl == null ? "" : postUrl;
     this.urlSuffix = urlSuffix == null ? "" : urlSuffix;
     if (inputParams != null)
@@ -521,7 +521,7 @@ public class RestServiceDescription
     {
       p++;
     }
-    details = new UIinfo(list[p + 1], list[p], list[p + 2]);
+    details = new UIinfo(list[p + 1], list[p + 1], list[p], list[p + 2]);
     invalid |= !configureFromServiceInputProperties(list[p + 3], warnings);
     if (list.length - p > 5 && list[p + 5] != null
             && list[p + 5].trim().length() > 5)