Merge branch 'Jalview-BH/JAL-3026-JAL-3063-JAXB' into Jalview-JS/demo
[jalview.git] / src / jalview / ext / ensembl / EnsemblXref.java
index 77768a6..eedfe97 100644 (file)
@@ -23,6 +23,7 @@ package jalview.ext.ensembl;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.DBRefEntry;
 import jalview.util.DBRefUtils;
+import jalview.util.JSONUtils;
 
 import java.io.BufferedReader;
 import java.io.IOException;
@@ -31,10 +32,8 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
-import org.json.simple.JSONArray;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
 
 /**
@@ -99,66 +98,19 @@ class EnsemblXref extends EnsemblRestClient
    *          an Ensembl stable identifier
    * @return
    */
+  @SuppressWarnings("unchecked")
   public List<DBRefEntry> getCrossReferences(String identifier)
   {
     List<DBRefEntry> result = new ArrayList<>();
     List<String> ids = new ArrayList<>();
     ids.add(identifier);
 
-    BufferedReader br = null;
     try
     {
-      URL url = getUrl(identifier);
-      if (url != null)
-      {
-        br = getHttpResponse(url, ids);
-        if (br != null)
-        {
-          result = parseResponse(br);
-        }
-      }
-    } catch (IOException e)
-    {
-      // ignore
-    } finally
-    {
-      if (br != null)
-      {
-        try
-        {
-          br.close();
-        } catch (IOException e)
-        {
-          // ignore
-        }
-      }
-    }
-
-    return result;
-  }
-
-  /**
-   * Parses "primary_id" and "dbname" values from the JSON response and
-   * constructs a DBRefEntry. Returns a list of the DBRefEntry created. Note we
-   * don't parse "synonyms" as they appear to be either redirected or obsolete
-   * in Uniprot.
-   * 
-   * @param br
-   * @return
-   * @throws IOException
-   */
-  protected List<DBRefEntry> parseResponse(BufferedReader br)
-          throws IOException
-  {
-    JSONParser jp = new JSONParser();
-    List<DBRefEntry> result = new ArrayList<>();
-    try
-    {
-      JSONArray responses = (JSONArray) jp.parse(br);
-      Iterator rvals = responses.iterator();
+      Iterator<Object> rvals = (Iterator<Object>) getJSON(getUrl(identifier), ids, -1, MODE_ITERATOR, null);
       while (rvals.hasNext())
       {
-        JSONObject val = (JSONObject) rvals.next();
+        Map<String, Object> val = (Map<String, Object>) rvals.next();
         String db = val.get("dbname").toString();
         String id = val.get("primary_id").toString();
         if (db != null && id != null
@@ -169,13 +121,30 @@ class EnsemblXref extends EnsemblRestClient
           result.add(dbref);
         }
       }
-    } catch (ParseException e)
+    } catch (ParseException | IOException e)
     {
       // ignore
     }
     return result;
   }
 
+//  /**
+//   * Parses "primary_id" and "dbname" values from the JSON response and
+//   * constructs a DBRefEntry. Returns a list of the DBRefEntry created. Note we
+//   * don't parse "synonyms" as they appear to be either redirected or obsolete
+//   * in Uniprot.
+//   * 
+//   * @param br
+//   * @return
+//   * @throws IOException
+//   */
+//  @SuppressWarnings("unchecked")
+//protected List<DBRefEntry> parseResponse(BufferedReader br)
+//          throws IOException
+//  {
+//    return result;
+//  }
+//
   private String xrefVersion = "ENSEMBL:0";
 
   /**