X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2Fweb%2FClientResponse.java;h=8fca88aab50a05918baff04cd84fb6b4adbf8e4e;hb=d654b1f014790b7ae25e6eec631847170a930987;hp=e33dd984c3e0a6651de5950a9f9f6391c5b37d82;hpb=5a256ef0ca648a8f4722da20475cbd01655d9de4;p=jalview.git diff --git a/src/jalview/javascript/web/ClientResponse.java b/src/jalview/javascript/web/ClientResponse.java index e33dd98..8fca88a 100644 --- a/src/jalview/javascript/web/ClientResponse.java +++ b/src/jalview/javascript/web/ClientResponse.java @@ -1,54 +1,113 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.javascript.web; -import java.net.URI; +import jalview.javascript.json.JSON; +import jalview.util.Platform; +import java.net.URL; + +/** + * minimal implementation of com.sun.jersey.api.client.ClientResponse + * + * @author hansonr + * + */ public class ClientResponse { - + private String response; - private String encoding; - public ClientResponse(String response, String encoding) + private boolean isJSON; + + private Object jsonData; + + int responseCode = -1; + + public ClientResponse(URL url, String[] encoding) { - this.response = response; - this.encoding = encoding; + // OK, so it turns out that ajax "json" format - or for that matter, any + // format for json is still just text. There is no point in getting this + // using special jQuery "json" formats. Duh. BH wasted a whole day try to + // "do it right". + response = Platform.getFileAsString(url.toString()); + responseCode = (response == null || response == "" ? 404 : 200); + isJSON = encoding[0].equals("application/json"); + if (isJSON) + { + try + { + jsonData = JSON.parse(response); + } catch (Exception e) + { + jsonData = null; + } + if (jsonData == null) + { + responseCode = 400; + } + } } - public String getEntity(Class c) - { - - // c will be String.class - + public Object getEntity(Class c) + { + + if (c == java.util.Map.class) + { + return jsonData; + } return response; } // https://www.ebi.ac.uk/pdbe/search/pdb/select?wt=json&fl=pdb_id,title,experimental_method,resolution&rows=500&start=0&q=(text:q93xj9_soltu)+AND+molecule_sequence:%5B%27%27+TO+*%5D+AND+status:REL&sort=overall_quality+desc - -//{ -//"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"}] -//}} -// + + // { + // "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"}] + // }} + // public int getStatus() { - // note, we could get the actual response. I am just assuming it is 200 or 400 - return (response != null && (response.startsWith("{") == encoding.equals("application/json")) - ? 200 : 400); + return responseCode; + } + + public Object getJSONData() + { + return jsonData; } }