JAL-3210 Merge branch 'develop' into trialMerge
[jalview.git] / src / jalview / ext / paradise / Annotate3D.java
index b8ba847..caff3bb 100644 (file)
@@ -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<Reader> 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<Object> rvals = ((List<Object>) JSONUtils.parse(respons)).iterator();
+      return new Iterator<>()
+      {
+        @Override
+        public boolean hasNext()
+        {
+          return rvals.hasNext();
+        }
+
+        @SuppressWarnings("unchecked")
+               @Override
+        public Reader next()
+        {
+          Map<String, Object> val = (Map<String, Object>) 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<Reader> 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();
-    }
-  }
-}