isJS cleanup
[jalview.git] / src / jalview / fts / service / uniprot / UniProtFTSRestClient.java
index 262ed86..1f4d56a 100644 (file)
@@ -29,6 +29,7 @@ import jalview.fts.core.FTSRestClient;
 import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
 import jalview.util.MessageManager;
+import jalview.util.Platform;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -40,13 +41,16 @@ 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
 {
   private static final String DEFAULT_UNIPROT_DOMAIN = "https://www.uniprot.org";
 
+  static {
+         Cache.addJ2SDirectDatabaseCall(DEFAULT_UNIPROT_DOMAIN);
+  }
+  
   private static FTSRestClientI instance = null;
 
   public final String uniprotSearchEndpoint;
@@ -55,39 +59,59 @@ 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 (Platform.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
+       * 
+       * @j2sNative
+       */
+      {
+        // Java only
+        client = Client.create(new DefaultClientConfig());
+        clientResponseClass = ClientResponse.class;
       }
 
       WebResource webResource = null;
@@ -99,7 +123,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 +137,13 @@ public class UniProtFTSRestClient extends FTSRestClient
         throw new Exception(errorMessage);
 
       }
-      int xTotalResults = Integer.valueOf(
-              clientResponse.getHeaders().get("X-Total-Results").get(0));
+      int xTotalResults = Platform.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();