*/
package jalview.fts.service.pdb;
+import jalview.bin.Jalview;
import jalview.datamodel.SequenceI;
import jalview.fts.api.FTSData;
import jalview.fts.api.FTSDataColumnI;
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;
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
{
{
try
{
- Client client;
- WebResource webResource;
-
String wantedFields = getDataColumnsFieldsAsCommaDelimitedString(
pdbRestRequest.getWantedFields());
int responseSize = (pdbRestRequest.getResponseSize() == 0)
// 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();
clientResponseClass = ClientResponse.class;
}
+ WebResource webResource;
if (pdbRestRequest.isFacet())
{
webResource = client.resource(PDB_SEARCH_ENDPOINT)
* 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");
//
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();
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);
return searchResult;
}
- public static FTSData getFTSData(JSONObject pdbJsonDoc,
+ public static FTSData getFTSData(Map<String, Object> pdbJsonDoc,
FTSRestRequest request)
{
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()
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)
{