JAL-3210 Improvements to eclipse detection. New src tree and SwingJS updated from...
[jalview.git] / src / jalview / ext / paradise / Annotate3D.java
index 3c443de..3b7044b 100644 (file)
@@ -137,13 +137,13 @@ public class Annotate3D
   public static Iterator<Reader> getRNAMLForPDBFileAsString(String pdbfile)
           throws Exception
   {
-    List<NameValuePair> vals = new ArrayList<>();
+    List<NameValuePair> vals = new ArrayList<NameValuePair>();
     vals.add(new BasicNameValuePair("tool", "rnaview"));
     vals.add(new BasicNameValuePair("data", pdbfile));
     vals.add(new BasicNameValuePair("output", "rnaml"));
     // return processJsonResponseFor(HttpClientUtils.doHttpUrlPost(twoDtoolsURL,
     // vals));
-    ArrayList<Reader> readers = new ArrayList<>();
+    ArrayList<Reader> readers = new ArrayList<Reader>();
     final BufferedReader postResponse = HttpClientUtils
             .doHttpUrlPost(twoDtoolsURL, vals, 0, 0);
     readers.add(postResponse);
@@ -159,23 +159,90 @@ public class Annotate3D
   public static Iterator<Reader> processJsonResponseFor(Reader respons)
           throws Exception
   {
+         // BH 2019 never called?
     try
     {
       @SuppressWarnings("unchecked")
-       List<Object> responses = (List<Object>) JSONUtils.parse(respons);
-      return new RvalsIterator(responses);
+       final Iterator<Object> rvals = ((List<Object>) JSONUtils.parse(respons)).iterator();
+      return new Iterator<Reader>()
+      {
+        @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)
           throws Exception
   {
-    List<NameValuePair> vals = new ArrayList<>();
+    List<NameValuePair> vals = new ArrayList<NameValuePair>();
     vals.add(new BasicNameValuePair("tool", "rnaview"));
     vals.add(new BasicNameValuePair("pdbid", pdbid));
     vals.add(new BasicNameValuePair("output", "rnaml"));
@@ -183,70 +250,9 @@ public class Annotate3D
             + pdbid + "&output=rnaml");
     // return processJsonResponseFor(new
     // InputStreamReader(geturl.openStream()));
-    ArrayList<Reader> readers = new ArrayList<>();
+    ArrayList<Reader> readers = new ArrayList<Reader>();
     readers.add(new InputStreamReader(geturl.openStream()));
     return readers.iterator();
   }
 
 }
-
-class RvalsIterator implements Iterator<Reader>, AutoCloseable
-{
-  private Iterator<Object> rvals;
-
-  protected RvalsIterator(List<Object> responses)
-  {
-    this.rvals = responses.iterator();
-  }
-
-  @Override
-  public boolean hasNext()
-  {
-    return rvals.hasNext();
-  }
-
-  @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 UnsupportedOperationException();
-  }
-
-  @Override
-  protected Object clone() throws CloneNotSupportedException
-  {
-    throw new UnsupportedOperationException();
-  }
-
-  @Override
-  public void close()
-  {
-    while (rvals.hasNext())
-    {
-      rvals.next();
-    }
-  }
-}