Merge branch 'feature/JAL-3144noJTree' into
[jalview.git] / src / jalview / fts / service / uniprot / UniProtFTSRestClient.java
index 262ed86..b4100cb 100644 (file)
@@ -22,6 +22,7 @@
 package jalview.fts.service.uniprot;
 
 import jalview.bin.Cache;
+import jalview.bin.Jalview;
 import jalview.fts.api.FTSData;
 import jalview.fts.api.FTSDataColumnI;
 import jalview.fts.api.FTSRestClientI;
@@ -40,7 +41,6 @@ import javax.ws.rs.core.MediaType;
 import com.sun.jersey.api.client.Client;
 import com.sun.jersey.api.client.ClientResponse;
 import com.sun.jersey.api.client.WebResource;
-import com.sun.jersey.api.client.config.ClientConfig;
 import com.sun.jersey.api.client.config.DefaultClientConfig;
 
 public class UniProtFTSRestClient extends FTSRestClient
@@ -55,39 +55,54 @@ public class UniProtFTSRestClient extends FTSRestClient
   {
     super();
     uniprotSearchEndpoint = Cache.getDefault("UNIPROT_DOMAIN",
-            DEFAULT_UNIPROT_DOMAIN) + "/uniprot/?";
+            DEFAULT_UNIPROT_DOMAIN) + "/uniprot/";
   }
 
   @Override
-  public FTSRestResponse executeRequest(FTSRestRequest uniportRestRequest)
+  public FTSRestResponse executeRequest(FTSRestRequest uniprotRestRequest)
           throws Exception
   {
     try
     {
-      ClientConfig clientConfig = new DefaultClientConfig();
-      Client client = Client.create(clientConfig);
-
       String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(
-              uniportRestRequest.getWantedFields());
-      int responseSize = (uniportRestRequest.getResponseSize() == 0)
+              uniprotRestRequest.getWantedFields());
+      int responseSize = (uniprotRestRequest.getResponseSize() == 0)
               ? getDefaultResponsePageSize()
-              : uniportRestRequest.getResponseSize();
+              : uniprotRestRequest.getResponseSize();
 
-      int offSet = uniportRestRequest.getOffSet();
+      int offSet = uniprotRestRequest.getOffSet();
       String query;
-      if (isAdvancedQuery(uniportRestRequest.getSearchTerm()))
+      if (isAdvancedQuery(uniprotRestRequest.getSearchTerm()))
       {
-        query = uniportRestRequest.getSearchTerm();
+        query = uniprotRestRequest.getSearchTerm();
       }
       else
       {
-        query = uniportRestRequest.getFieldToSearchBy()
+        query = uniprotRestRequest.getFieldToSearchBy()
                 .equalsIgnoreCase("Search All")
-                        ? uniportRestRequest.getSearchTerm()
+                        ? uniprotRestRequest.getSearchTerm()
                                 + " or mnemonic:"
-                                + uniportRestRequest.getSearchTerm()
-                        : uniportRestRequest.getFieldToSearchBy() + ":"
-                                + uniportRestRequest.getSearchTerm();
+                                + uniprotRestRequest.getSearchTerm()
+                        : uniprotRestRequest.getFieldToSearchBy() + ":"
+                                + uniprotRestRequest.getSearchTerm();
+      }
+
+      // BH 2018 the trick here is to coerce the classes in Javascript to be
+      // different from the ones in Java yet still allow this to be correct for
+      // Java
+      Client client;
+      Class<ClientResponse> clientResponseClass;
+      if (Jalview.isJS())
+      {
+        // JavaScript only -- coerce types to Java types for Java
+        client = (Client) (Object) new jalview.javascript.web.Client();
+        clientResponseClass = (Class<ClientResponse>) (Object) jalview.javascript.web.ClientResponse.class;
+      }
+      else
+      {
+        // Java only
+        client = Client.create(new DefaultClientConfig());
+        clientResponseClass = ClientResponse.class;
       }
 
       WebResource webResource = null;
@@ -99,7 +114,7 @@ public class UniProtFTSRestClient extends FTSRestClient
               .queryParam("sort", "score").queryParam("query", query);
       // Execute the REST request
       ClientResponse clientResponse = webResource
-              .accept(MediaType.TEXT_PLAIN).get(ClientResponse.class);
+              .accept(MediaType.TEXT_PLAIN).get(clientResponseClass);
       String uniProtTabDelimittedResponseString = clientResponse
               .getEntity(String.class);
       // Make redundant objects eligible for garbage collection to conserve
@@ -113,12 +128,13 @@ public class UniProtFTSRestClient extends FTSRestClient
         throw new Exception(errorMessage);
 
       }
-      int xTotalResults = Integer.valueOf(
-              clientResponse.getHeaders().get("X-Total-Results").get(0));
+      int xTotalResults = Jalview.isJS() ? 1
+              : Integer.valueOf(clientResponse.getHeaders()
+                      .get("X-Total-Results").get(0));
       clientResponse = null;
       client = null;
       return parseUniprotResponse(uniProtTabDelimittedResponseString,
-              uniportRestRequest, xTotalResults);
+              uniprotRestRequest, xTotalResults);
     } catch (Exception e)
     {
       String exceptionMsg = e.getMessage();