JSON refactoring of a few methods; fixing JavaScript issues
[jalview.git] / src / jalview / ext / ensembl / EnsemblRestClient.java
index 56d63bb..9a647f4 100644 (file)
@@ -21,8 +21,6 @@
 package jalview.ext.ensembl;
 
 import jalview.bin.Cache;
-import jalview.javascript.json.JSON;
-import jalview.util.JSONUtils;
 import jalview.util.Platform;
 import jalview.util.StringUtils;
 
@@ -30,8 +28,6 @@ import java.io.BufferedReader;
 import java.io.DataOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
 import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.ProtocolException;
@@ -282,10 +278,12 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher
    *          in milliseconds
    * @return
    * @throws IOException
+   * @throws ParseException
    */
-  private BufferedReader getHttpResponse(URL url, List<String> ids,
-          int readTimeout) throws IOException
+  private Object getJSON(URL url, List<String> ids, int readTimeout)
+          throws IOException, ParseException
   {
+
     if (readTimeout < 0)
     {
       readTimeout = DEFAULT_READ_TIMEOUT;
@@ -294,10 +292,7 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher
     HttpURLConnection connection = null;
     int responseCode = 0;
 
-    if (Platform.isJS())
-    {
-      JSON.setAjax(url);
-    }
+    Platform.setAjaxJSON(url);
 
     while (retriesLeft > 0)
     {
@@ -325,15 +320,12 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher
 
     InputStream response = connection.getInputStream();
 
-    if (Platform.isJS())
-    {
-      return JSON.getJSONReader(response);
-    }
-
-    // System.out.println(getClass().getName() + " took "
-    // + (System.currentTimeMillis() - now) + "ms to fetch");
+    Platform.timeCheck(null, Platform.TIME_MARK);
+    Object ret = Platform.parseJSON(response);
+    Platform.timeCheck("EnsemblRestClient.getJSON " + url,
+            Platform.TIME_MARK);
 
-    return new BufferedReader(new InputStreamReader(response, "UTF-8"));
+    return ret;
   }
 
   /**
@@ -515,50 +507,26 @@ abstract class EnsemblRestClient extends EnsemblSequenceFetcher
       url = getUrl(ids);
     }
 
-    Reader br = null;
-    try
-    {
-      Platform.timeCheck(null, Platform.TIME_MARK);
-
-      br = (url == null ? null : getHttpResponse(url, ids, msDelay));
-
-      Object ret = (br == null ? null : JSONUtils.parse(br));
-
-      Platform.timeCheck("EnsemblRestClient.getJSON " + url,
-              Platform.TIME_MARK);
+    Object json = (url == null ? null : getJSON(url, ids, msDelay));
 
-      if (ret != null && mapKey != null)
-      {
-        ret = ((Map<String, Object>) ret).get(mapKey);
-      }
-      if (ret == null)
-      {
-        return null;
-      }
-      switch (mode)
-      {
-      case MODE_ARRAY:
-      case MODE_MAP:
-        break;
-      case MODE_ITERATOR:
-        ret = ((List<Object>) ret).iterator();
-        break;
-      }
-      return ret;
-
-    } finally
+    if (json != null && mapKey != null)
     {
-      if (br != null)
-      {
-        try
-        {
-          br.close();
-        } catch (IOException e)
-        {
-          // ignore
-        }
-      }
+      json = ((Map<String, Object>) json).get(mapKey);
+    }
+    if (json == null)
+    {
+      return null;
+    }
+    switch (mode)
+    {
+    case MODE_ARRAY:
+    case MODE_MAP:
+      break;
+    case MODE_ITERATOR:
+      json = ((List<Object>) json).iterator();
+      break;
     }
+    return json;
   }
 
   /**