JSON refactoring
[jalview.git] / src / jalview / fts / service / pdb / PDBFTSRestClient.java
index a5b441f..b4e5660 100644 (file)
@@ -20,6 +20,7 @@
  */
 package jalview.fts.service.pdb;
 
+import jalview.bin.Jalview;
 import jalview.datamodel.SequenceI;
 import jalview.fts.api.FTSData;
 import jalview.fts.api.FTSDataColumnI;
@@ -27,6 +28,7 @@ import jalview.fts.api.FTSRestClientI;
 import jalview.fts.core.FTSRestClient;
 import jalview.fts.core.FTSRestRequest;
 import jalview.fts.core.FTSRestResponse;
+import jalview.util.JSONUtils;
 import jalview.util.MessageManager;
 
 import java.net.URI;
@@ -34,35 +36,22 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 import javax.ws.rs.core.MediaType;
 
-import org.json.simple.JSONArray;
-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
- *
  */
 public class PDBFTSRestClient extends FTSRestClient
 {
@@ -90,9 +79,6 @@ public class PDBFTSRestClient extends FTSRestClient
   {
     try
     {
-      Client client;
-      WebResource webResource;
-
       String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(
               pdbRestRequest.getWantedFields());
       int responseSize = (pdbRestRequest.getResponseSize() == 0)
@@ -137,9 +123,9 @@ public class PDBFTSRestClient extends FTSRestClient
 
       // 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 (/** @j2sNative true || */
-      false)
+      if (Jalview.isJS())
       {
         // JavaScript only -- coerce types to Java types for Java
         client = (Client) (Object) new jalview.javascript.web.Client();
@@ -152,6 +138,7 @@ public class PDBFTSRestClient extends FTSRestClient
         clientResponseClass = ClientResponse.class;
       }
 
+      WebResource webResource;
       if (pdbRestRequest.isFacet())
       {
         webResource = client.resource(PDB_SEARCH_ENDPOINT)
@@ -235,7 +222,8 @@ public class PDBFTSRestClient extends FTSRestClient
    *          the JSON string containing error message from the server
    * @return the processed error message from the JSON string
    */
-  public static String parseJsonExceptionString(String jsonErrorResponse)
+  @SuppressWarnings("unchecked")
+public static String parseJsonExceptionString(String jsonErrorResponse)
   {
     StringBuilder errorMessage = new StringBuilder(
             "\n============= PDB Rest Client RunTime error =============\n");
@@ -262,13 +250,12 @@ public class PDBFTSRestClient extends FTSRestClient
 //    
     try
     {
-      JSONParser jsonParser = new JSONParser();
-      JSONObject jsonObj = (JSONObject) jsonParser.parse(jsonErrorResponse);
-      JSONObject errorResponse = (JSONObject) jsonObj.get("error");
+      Map<String, Object> jsonObj = (Map<String, Object>) JSONUtils.parse(jsonErrorResponse);
+      Map<String, Object> errorResponse = (Map<String, Object>) jsonObj.get("error");
 
-      JSONObject responseHeader = (JSONObject) jsonObj
+      Map<String, Object> responseHeader = (Map<String, Object>) jsonObj
               .get("responseHeader");
-      JSONObject paramsObj = (JSONObject) responseHeader.get("params");
+      Map<String, Object> paramsObj = (Map<String, Object>) responseHeader.get("params");
       String status = responseHeader.get("status").toString();
       String message = errorResponse.get("msg").toString();
       String query = paramsObj.get("q").toString();
@@ -306,23 +293,20 @@ public class PDBFTSRestClient extends FTSRestClient
     List<FTSData> result = null;
     try
     {
-      JSONParser jsonParser = new JSONParser();
-      JSONObject jsonObj = (JSONObject) jsonParser
-              .parse(pdbJsonResponseString);
-
-      JSONObject pdbResponse = (JSONObject) jsonObj.get("response");
-      String queryTime = ((JSONObject) jsonObj.get("responseHeader"))
+      Map<String, Object> jsonObj = (Map<String, Object>) JSONUtils.parse(pdbJsonResponseString);
+      Map<String, Object> pdbResponse = (Map<String, Object>) jsonObj.get("response");
+      String queryTime = ((Map<String, Object>) jsonObj.get("responseHeader"))
               .get("QTime").toString();
       int numFound = Integer
               .valueOf(pdbResponse.get("numFound").toString());
       if (numFound > 0)
       {
         result = new ArrayList<FTSData>();
-        JSONArray docs = (JSONArray) pdbResponse.get("docs");
-        for (Iterator<JSONObject> docIter = docs.iterator(); docIter
+        List<Object> docs = (List<Object>) pdbResponse.get("docs");
+        for (Iterator<Object> docIter = docs.iterator(); docIter
                 .hasNext();)
         {
-          JSONObject doc = docIter.next();
+          Map<String, Object> doc = (Map<String, Object>) docIter.next();
           result.add(getFTSData(doc, pdbRestRequest));
         }
         searchResult.setNumberOfItemsFound(numFound);
@@ -336,7 +320,7 @@ public class PDBFTSRestClient extends FTSRestClient
     return searchResult;
   }
 
-  public static FTSData getFTSData(JSONObject pdbJsonDoc,
+  public static FTSData getFTSData(Map<String, Object> pdbJsonDoc,
           FTSRestRequest request)
   {
 
@@ -478,7 +462,8 @@ public class PDBFTSRestClient extends FTSRestClient
     return allDefaultDisplayedStructureDataColumns;
   }
   
-  public static void main(String[] args) {
+  @SuppressWarnings("unchecked")
+public static void main(String[] args) {
     
     
     // check for transpiler fix associated with JSONParser yylex.java use of charAt()
@@ -493,10 +478,9 @@ public class PDBFTSRestClient extends FTSRestClient
     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}");
+      Map<String, Object> jsonObj = (Map<String, Object>) JSONUtils.parse("{\"a\":3}");
       System.out.println(jsonObj);
     } catch (ParseException e)
     {