X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Ffts%2Fservice%2Fpdb%2FPDBFTSRestClient.java;h=b4e56606fb9a48f906e7b521b4493b5977c9fb7a;hb=8e7cf85a7f61f425e808cac53ead7bc27e402242;hp=a5b441f10877c2a3f6a48b93542966fb66c5b6a2;hpb=0ddbb5cb5c0ae3e53d344c624c717d5ca3085d5f;p=jalview.git diff --git a/src/jalview/fts/service/pdb/PDBFTSRestClient.java b/src/jalview/fts/service/pdb/PDBFTSRestClient.java index a5b441f..b4e5660 100644 --- a/src/jalview/fts/service/pdb/PDBFTSRestClient.java +++ b/src/jalview/fts/service/pdb/PDBFTSRestClient.java @@ -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 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 jsonObj = (Map) JSONUtils.parse(jsonErrorResponse); + Map errorResponse = (Map) jsonObj.get("error"); - JSONObject responseHeader = (JSONObject) jsonObj + Map responseHeader = (Map) jsonObj .get("responseHeader"); - JSONObject paramsObj = (JSONObject) responseHeader.get("params"); + Map paramsObj = (Map) 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 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 jsonObj = (Map) JSONUtils.parse(pdbJsonResponseString); + Map pdbResponse = (Map) jsonObj.get("response"); + String queryTime = ((Map) jsonObj.get("responseHeader")) .get("QTime").toString(); int numFound = Integer .valueOf(pdbResponse.get("numFound").toString()); if (numFound > 0) { result = new ArrayList(); - JSONArray docs = (JSONArray) pdbResponse.get("docs"); - for (Iterator docIter = docs.iterator(); docIter + List docs = (List) pdbResponse.get("docs"); + for (Iterator docIter = docs.iterator(); docIter .hasNext();) { - JSONObject doc = docIter.next(); + Map doc = (Map) 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 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 jsonObj = (Map) JSONUtils.parse("{\"a\":3}"); System.out.println(jsonObj); } catch (ParseException e) {