X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=blobdiff_plain;f=src%2Fjalview%2Fext%2Fparadise%2FAnnotate3D.java;fp=src%2Fjalview%2Fext%2Fparadise%2FAnnotate3D.java;h=caff3bbab03e648d36d0eb35e137afc4d89303e1;hp=b8ba8475ff1d9eff05d5ba8958e622c95cd18dc8;hb=e95c5f895775891d55d9f23d5da64f8ce6bd07bb;hpb=74f21ca6ca8fa17d53708e457d191e15904f8310 diff --git a/src/jalview/ext/paradise/Annotate3D.java b/src/jalview/ext/paradise/Annotate3D.java index b8ba847..caff3bb 100644 --- a/src/jalview/ext/paradise/Annotate3D.java +++ b/src/jalview/ext/paradise/Annotate3D.java @@ -20,6 +20,7 @@ */ package jalview.ext.paradise; +import jalview.util.JSONUtils; import jalview.util.MessageManager; import jalview.ws.HttpClientUtils; @@ -32,11 +33,10 @@ import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; import org.json.simple.parser.ContentHandler; import org.json.simple.parser.ParseException; @@ -151,22 +151,90 @@ public class Annotate3D } + /** + * @param respons + * @return + * @throws Exception + */ public static Iterator processJsonResponseFor(Reader respons) throws Exception { - org.json.simple.parser.JSONParser jp = new org.json.simple.parser.JSONParser(); + // BH 2019 never called? try { - final JSONArray responses = (JSONArray) jp.parse(respons); - final RvalsIterator rvals = new RvalsIterator(responses); - return rvals; + @SuppressWarnings("unchecked") + final Iterator rvals = ((List) JSONUtils.parse(respons)).iterator(); + return new Iterator<>() + { + @Override + public boolean hasNext() + { + return rvals.hasNext(); + } + + @SuppressWarnings("unchecked") + @Override + public Reader next() + { + Map val = (Map) rvals.next(); + + Object sval = null; + try + { + sval = val.get("2D"); + } catch (Exception x) + { + x.printStackTrace(); + } + if (sval == null) + { + System.err.println( + "DEVELOPER WARNING: Annotate3d didn't return a '2D' tag in its response. Consider checking output of server. Response was :" + + val.toString()); + + sval = ""; + } + return new StringReader(sval.toString()); + + } + + @Override + public void remove() + { + throw new Error( + MessageManager.getString("error.not_implemented_remove")); + + } + + @Override + protected Object clone() throws CloneNotSupportedException + { + throw new CloneNotSupportedException( + MessageManager.getString("error.not_implemented_clone")); + } + + @Override + public boolean equals(Object obj) + { + return super.equals(obj); + } + + @Override + protected void finalize() throws Throwable + { + while (rvals.hasNext()) + { + rvals.next(); + } + super.finalize(); + } + }; } catch (Exception foo) { throw new Exception(MessageManager.getString( "exception.couldnt_parse_responde_from_annotated3d_server"), foo); } - } public static Iterator getRNAMLForPDBId(String pdbid) @@ -186,77 +254,3 @@ public class Annotate3D } } - -class RvalsIterator implements Iterator, AutoCloseable -{ - private Iterator rvals; - - protected RvalsIterator(JSONArray responses) - { - this.rvals = responses.iterator(); - } - - @Override - public boolean hasNext() - { - return rvals.hasNext(); - } - - @Override - public Reader next() - { - JSONObject val = (JSONObject) rvals.next(); - - Object sval = null; - try - { - sval = val.get("2D"); - } catch (Exception x) - { - x.printStackTrace(); - } - ; - if (sval == null) - { - System.err.println( - "DEVELOPER WARNING: Annotate3d didn't return a '2D' tag in its response. Consider checking output of server. Response was :" - + val.toString()); - - sval = ""; - } - return new StringReader( - (sval instanceof JSONObject) ? ((JSONObject) sval).toString() - : sval.toString()); - - } - - @Override - public void remove() - { - throw new Error( - MessageManager.getString("error.not_implemented_remove")); - - } - - @Override - protected Object clone() throws CloneNotSupportedException - { - throw new CloneNotSupportedException( - MessageManager.getString("error.not_implemented_clone")); - } - - @Override - public boolean equals(Object obj) - { - return super.equals(obj); - } - - @Override - public void close() - { - while (rvals.hasNext()) - { - rvals.next(); - } - } -}