JAL-3070 pull up hostURL and postURL to UIinfo and getter for action ext
[jalview.git] / src / jalview / ws / rest / RestServiceDescription.java
index 311a922..9268975 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9.0b1)
- * Copyright (C) 2015 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.
  * 
@@ -23,6 +23,7 @@ package jalview.ws.rest;
 import jalview.datamodel.SequenceI;
 import jalview.io.packed.DataProvider.JvDataType;
 import jalview.util.StringUtils;
+import jalview.ws.api.UIinfo;
 import jalview.ws.rest.params.Alignment;
 import jalview.ws.rest.params.AnnotationFile;
 import jalview.ws.rest.params.SeqGroupIndexVector;
@@ -66,10 +67,7 @@ public class RestServiceDescription
           boolean vseparable, char gapCharacter)
   {
     super();
-    this.details = new UIinfo();
-    details.Action = action == null ? "" : action;
-    details.description = description == null ? "" : description;
-    details.Name = name == null ? "" : name;
+    this.details = new UIinfo(action, action, name, description, postUrl);
     this.postUrl = postUrl == null ? "" : postUrl;
     this.urlSuffix = urlSuffix == null ? "" : urlSuffix;
     if (inputParams != null)
@@ -92,61 +90,17 @@ public class RestServiceDescription
     boolean diff = (gapCharacter != other.gapCharacter);
     diff |= vseparable != other.vseparable;
     diff |= hseparable != other.hseparable;
-    diff |= !(urlSuffix == null && other.urlSuffix == null || (urlSuffix != null
-            && other.urlSuffix != null && urlSuffix.equals(other.urlSuffix)));
+    diff |= !(urlSuffix == null && other.urlSuffix == null
+            || (urlSuffix != null && other.urlSuffix != null
+                    && urlSuffix.equals(other.urlSuffix)));
     // TODO - robust diff that includes constants and reordering of URL
     // diff |= !(postUrl.equals(other.postUrl));
     // diff |= !inputParams.equals(other.inputParams);
-    diff |= !details.Name.equals(other.details.Name);
-    diff |= !details.Action.equals(other.details.Action);
-    diff |= !details.description.equals(other.details.description);
+    diff |= !details.equals(other.details);
     return !diff;
   }
 
-  /**
-   * Service UI Info { Action, Specific Name of Service, Brief Description }
-   */
-
-  public class UIinfo
-  {
-    public String getAction()
-    {
-      return Action;
-    }
-
-    public void setAction(String action)
-    {
-      Action = action;
-    }
-
-    public String getName()
-    {
-      return Name;
-    }
-
-    public void setName(String name)
-    {
-      Name = name;
-    }
-
-    public String getDescription()
-    {
-      return description;
-    }
-
-    public void setDescription(String description)
-    {
-      this.description = description;
-    }
-
-    String Action;
-
-    String Name;
-
-    String description;
-  }
-
-  public UIinfo details = new UIinfo();
+  public UIinfo details;
 
   public String getAction()
   {
@@ -237,7 +191,7 @@ public class RestServiceDescription
   /**
    * input info given as key/value pairs - mapped to post arguments
    */
-  Map<String, InputType> inputParams = new HashMap<String, InputType>();
+  Map<String, InputType> inputParams = new HashMap<>();
 
   /**
    * assigns the given inputType it to its corresponding input parameter token
@@ -454,7 +408,7 @@ public class RestServiceDescription
     }
     StringTokenizer st = new StringTokenizer(outstring, ";");
     String tok = "";
-    resultData = new ArrayList<JvDataType>();
+    resultData = new ArrayList<>();
     while (st.hasMoreTokens())
     {
       try
@@ -462,8 +416,8 @@ public class RestServiceDescription
         resultData.add(JvDataType.valueOf(tok = st.nextToken()));
       } catch (NoSuchElementException x)
       {
-        warnings.append("Invalid result type: '" + tok
-                + "' (must be one of: ");
+        warnings.append(
+                "Invalid result type: '" + tok + "' (must be one of: ");
         String sep = "";
         for (JvDataType vl : JvDataType.values())
         {
@@ -478,7 +432,7 @@ public class RestServiceDescription
 
   private String getServiceIOProperties()
   {
-    ArrayList<String> vls = new ArrayList<String>();
+    ArrayList<String> vls = new ArrayList<>();
     if (isHseparable())
     {
       vls.add("hseparable");
@@ -491,21 +445,22 @@ public class RestServiceDescription
     ;
     vls.add(new String("gapCharacter='" + gapCharacter + "'"));
     vls.add(new String("returns='" + _genOutputFormatString() + "'"));
-    return StringUtils
-            .arrayToSeparatorList(vls.toArray(new String[0]), ",");
+    return StringUtils.arrayToSeparatorList(vls.toArray(new String[0]),
+            ",");
   }
 
+  @Override
   public String toString()
   {
     StringBuffer result = new StringBuffer();
     result.append("|");
-    result.append(details.Name);
+    result.append(details.getName());
     result.append('|');
-    result.append(details.Action);
+    result.append(details.getAction());
     result.append('|');
-    if (details.description != null)
+    if (details.getDescription() != null)
     {
-      result.append(details.description);
+      result.append(details.getDescription());
     }
     ;
     // list job input flags
@@ -557,7 +512,8 @@ public class RestServiceDescription
    * @param p
    * @return
    */
-  protected int parseServiceList(String[] list, StringBuffer warnings, int p)
+  protected int parseServiceList(String[] list, StringBuffer warnings,
+          int p)
   {
     boolean invalid = false;
     // look for the first non-empty position - expect it to be service name
@@ -565,9 +521,8 @@ public class RestServiceDescription
     {
       p++;
     }
-    details.Name = list[p];
-    details.Action = list[p + 1];
-    details.description = list[p + 2];
+    details = new UIinfo(list[p + 1], list[p + 1], list[p], list[p + 2],
+            postUrl);
     invalid |= !configureFromServiceInputProperties(list[p + 3], warnings);
     if (list.length - p > 5 && list[p + 5] != null
             && list[p + 5].trim().length() > 5)
@@ -582,7 +537,8 @@ public class RestServiceDescription
               && list[p + 4].trim().length() > 5)
       {
         urlSuffix = null;
-        invalid |= !configureFromInputParamEncodedUrl(list[p + 4], warnings);
+        invalid |= !configureFromInputParamEncodedUrl(list[p + 4],
+                warnings);
         p += 5;
       }
     }
@@ -664,7 +620,7 @@ public class RestServiceDescription
     int lastp = 0;
     String url = new String();
     Matcher prms = PARAM_ENCODED_URL_PATTERN.matcher(ipurl);
-    Map<String, InputType> iparams = new Hashtable<String, InputType>();
+    Map<String, InputType> iparams = new Hashtable<>();
     InputType jinput;
     while (prms.find())
     {
@@ -683,8 +639,8 @@ public class RestServiceDescription
         iprmparams = iprm.substring(colon + 1);
         iprm = iprm.substring(0, colon);
       }
-      valid = parseTypeString(prms.group(0), tok, iprm, iprmparams,
-              iparams, warnings);
+      valid = parseTypeString(prms.group(0), tok, iprm, iprmparams, iparams,
+              warnings);
     }
     if (valid)
     {
@@ -707,8 +663,7 @@ public class RestServiceDescription
     // TODO - find a better way of maintaining this classlist
     return new Class[] { jalview.ws.rest.params.Alignment.class,
         jalview.ws.rest.params.AnnotationFile.class,
-        SeqGroupIndexVector.class,
-        jalview.ws.rest.params.SeqIdVector.class,
+        SeqGroupIndexVector.class, jalview.ws.rest.params.SeqIdVector.class,
         jalview.ws.rest.params.SeqVector.class,
         jalview.ws.rest.params.Tree.class };
   }
@@ -726,7 +681,7 @@ public class RestServiceDescription
         jinput = (InputType) (type.getConstructor().newInstance());
         if (iprm.equalsIgnoreCase(jinput.getURLtokenPrefix()))
         {
-          ArrayList<String> al = new ArrayList<String>();
+          ArrayList<String> al = new ArrayList<>();
           for (String prprm : StringUtils.separatorListToArray(iprmparams,
                   ","))
           {
@@ -801,7 +756,8 @@ public class RestServiceDescription
   /**
    * search the input types for an instance of the given class
    * 
-   * @param <validInput.inputType> class1
+   * @param <validInput.inputType>
+   *          class1
    * @return
    */
   public boolean inputInvolves(Class<?> class1)
@@ -835,7 +791,7 @@ public class RestServiceDescription
     return jobId + urlSuffix;
   }
 
-  private List<JvDataType> resultData = new ArrayList<JvDataType>();
+  private List<JvDataType> resultData = new ArrayList<>();
 
   /**
    * 
@@ -849,7 +805,7 @@ public class RestServiceDescription
   {
     if (resultData == null)
     {
-      resultData = new ArrayList<JvDataType>();
+      resultData = new ArrayList<>();
     }
     resultData.add(dt);
   }
@@ -880,7 +836,7 @@ public class RestServiceDescription
           String services) throws Exception
   {
     String[] list = StringUtils.separatorListToArray(services, "|");
-    List<RestServiceDescription> svcparsed = new ArrayList<RestServiceDescription>();
+    List<RestServiceDescription> svcparsed = new ArrayList<>();
     int p = 0, lastp = 0;
     StringBuffer warnings = new StringBuffer();
     do