URI uri = webResource.getURI();
+ System.out.println(uri);
+
// Execute the REST request
ClientResponse clientResponse = webResource
.accept(MediaType.APPLICATION_JSON).get(clientResponseClass );
- // Get the JSON string from the response object
- String responseString = clientResponse.getEntity(String.class);
+ int status = clientResponse.getStatus();
+
+ // Get the JSON string from the response object or directly from the
+ // client (JavaScript)
+ Map<String, Object> jsonObj = (status == 200
+ ? clientResponse.getEntity(Map.class)
+ : null);
+ String responseString = (jsonObj == null
+ ? clientResponse.getEntity(String.class)
+ : null);
+
// System.out.println("query >>>>>>> " + pdbRestRequest.toString());
// Check the response status and report exception if one occurs
- if (clientResponse.getStatus() != 200)
+ switch (status)
{
- String errorMessage = "";
- if (clientResponse.getStatus() == 400)
- {
- errorMessage = parseJsonExceptionString(responseString);
- throw new Exception(errorMessage);
- }
- else
- {
- errorMessage = getMessageByHTTPStatusCode(
- clientResponse.getStatus(), "PDB");
- throw new Exception(errorMessage);
- }
+ case 200:
+ break;
+ case 400:
+ throw new Exception(parseJsonExceptionString(responseString));
+ default:
+ throw new Exception(getMessageByHTTPStatusCode(status, "PDB"));
}
// Make redundant objects eligible for garbage collection to conserve
client = null;
// Process the response and return the result to the caller.
- return parsePDBJsonResponse(responseString, pdbRestRequest);
+ return parsePDBJsonResponse(responseString, jsonObj, pdbRestRequest);
} catch (Exception e)
{
String exceptionMsg = e.getMessage();
* JSON string
* @return
*/
- @SuppressWarnings("unchecked")
public static FTSRestResponse parsePDBJsonResponse(
String pdbJsonResponseString, FTSRestRequest pdbRestRequest)
{
+ return parsePDBJsonResponse(pdbJsonResponseString,
+ (Map<String, Object>) null, pdbRestRequest);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static FTSRestResponse parsePDBJsonResponse(
+ String pdbJsonResponseString, Map<String, Object> jsonObj,
+ FTSRestRequest pdbRestRequest)
+ {
FTSRestResponse searchResult = new FTSRestResponse();
List<FTSData> result = null;
try
{
- Map<String, Object> jsonObj = (Map<String, Object>) JSONUtils.parse(pdbJsonResponseString);
+ if (jsonObj == null)
+ {
+ 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();