JAL-3026 comment in main test method in PDbFtsrestClient.java
[jalview.git] / src / jalview / fts / service / pdb / PDBFTSRestClient.java
index cbeaff1..a5b441f 100644 (file)
@@ -29,6 +29,7 @@ import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
 import jalview.util.MessageManager;
 
+import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -42,15 +43,24 @@ import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
 
+//import jalview.javascript.web.Client;
+//import jalview.javascript.web.ClientResponse;
+//import jalview.javascript.web.WebResource;
+
 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;
 
 /**
  * A rest client for querying the Search endpoint of the PDB API
  * 
+ * BH 2018: just a tiny tweak here - for SwingJS, we coerce the classes to be
+ * from jalview.javascript.web instead of com.sun.jersey.api.client
+ * 
+ * 
  * @author tcnofoegbu
  *
  */
@@ -73,14 +83,15 @@ public class PDBFTSRestClient extends FTSRestClient
    * @return the pdbResponse object for the given request
    * @throws Exception
    */
+  @SuppressWarnings({ "unused", "unchecked" })
   @Override
   public FTSRestResponse executeRequest(FTSRestRequest pdbRestRequest)
           throws Exception
   {
     try
     {
-      ClientConfig clientConfig = new DefaultClientConfig();
-      Client client = Client.create(clientConfig);
+      Client client;
+      WebResource webResource;
 
       String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(
               pdbRestRequest.getWantedFields());
@@ -123,7 +134,24 @@ public class PDBFTSRestClient extends FTSRestClient
                       : " AND status:REL");
 
       // Build request parameters for the REST Request
-      WebResource webResource = null;
+
+      // 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
+      Class<ClientResponse> clientResponseClass;
+      if (/** @j2sNative true || */
+      false)
+      {
+        // 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;
+      }
+
       if (pdbRestRequest.isFacet())
       {
         webResource = client.resource(PDB_SEARCH_ENDPOINT)
@@ -143,9 +171,12 @@ public class PDBFTSRestClient extends FTSRestClient
                 .queryParam("start", String.valueOf(offSet))
                 .queryParam("q", query).queryParam("sort", sortParam);
       }
+
+      URI uri = webResource.getURI();
+
       // Execute the REST request
       ClientResponse clientResponse = webResource
-              .accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
+              .accept(MediaType.APPLICATION_JSON).get(clientResponseClass );
 
       // Get the JSON string from the response object
       String responseString = clientResponse.getEntity(String.class);
@@ -209,6 +240,26 @@ public class PDBFTSRestClient extends FTSRestClient
     StringBuilder errorMessage = new StringBuilder(
             "\n============= PDB Rest Client RunTime error =============\n");
 
+    
+//    {
+//      "responseHeader":{
+//        "status":0,
+//        "QTime":0,
+//        "params":{
+//          "q":"(text:q93xj9_soltu) AND molecule_sequence:['' TO *] AND status:REL",
+//          "fl":"pdb_id,title,experimental_method,resolution",
+//          "start":"0",
+//          "sort":"overall_quality desc",
+//          "rows":"500",
+//          "wt":"json"}},
+//      "response":{"numFound":1,"start":0,"docs":[
+//          {
+//            "experimental_method":["X-ray diffraction"],
+//            "pdb_id":"4zhp",
+//            "resolution":2.46,
+//            "title":"The crystal structure of Potato ferredoxin I with 2Fe-2S cluster"}]
+//      }}
+//    
     try
     {
       JSONParser jsonParser = new JSONParser();
@@ -426,4 +477,33 @@ public class PDBFTSRestClient extends FTSRestClient
     }
     return allDefaultDisplayedStructureDataColumns;
   }
+  
+  public static void main(String[] args) {
+    
+    
+    // check for transpiler fix associated with JSONParser yylex.java use of charAt()
+    // instead of codePointAt()
+
+    String s = "e";
+    char c = 'c';
+    char f = 'f';
+    s += c | f; 
+    int x = c&f;
+    int y = 2 & c;
+    int z = c ^ 5;
+    String result = s +x + y + z;
+    assert (result == "e103982102");
+    JSONParser jsonParser = new JSONParser();
+    try
+    {
+      JSONObject jsonObj = (JSONObject) jsonParser.parse("{\"a\":3}");
+      System.out.println(jsonObj);
+    } catch (ParseException e)
+    {
+      e.printStackTrace();
+    }
+    
+  }
+  
+  
 }