*/
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;
-
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;
import org.json.simple.parser.ParseException;
+import jalview.util.Platform;
+import jalview.util.StringUtils;
+
/**
* Base class for Ensembl REST service clients
*
static
{
- Cache.addJ2SDirectDatabaseCall("http://rest.ensembl");
- Cache.addJ2SDirectDatabaseCall("https://rest.ensembl");
+ Platform.addJ2SDirectDatabaseCall("http://rest.ensembl");
+ Platform.addJ2SDirectDatabaseCall("https://rest.ensembl");
}
private static final int DEFAULT_READ_TIMEOUT = 5 * 60 * 1000; // 5 minutes
* @see https://github.com/Ensembl/ensembl-rest/wiki/Change-log
* @see http://rest.ensembl.org/info/rest?content-type=application/json
*/
- private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "9.0";
+ private static final String LATEST_ENSEMBLGENOMES_REST_VERSION = "15.2";
- private static final String LATEST_ENSEMBL_REST_VERSION = "9.0";
+ private static final String LATEST_ENSEMBL_REST_VERSION = "15.2";
private static final String REST_CHANGE_LOG = "https://github.com/Ensembl/ensembl-rest/wiki/Change-log";
return pingString != null;
} catch (Throwable t)
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Error connecting to " + pingUrl + ": " + t.getMessage());
} finally
{
* 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;
HttpURLConnection connection = null;
int responseCode = 0;
- if (Platform.isJS())
- {
- JSON.setAjax(url);
- }
+ Platform.setAjaxJSON(url);
while (retriesLeft > 0)
{
* note: a GET request for an invalid id returns an error code e.g. 415
* but POST request returns 200 and an empty Fasta response
*/
- System.err.println("Response code " + responseCode);// + " for " + url);
+ jalview.bin.Console.errPrintln("Response code " + responseCode);// + " for " + url);
return null;
}
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;
}
/**
protected HttpURLConnection tryConnection(URL url, List<String> ids,
int readTimeout) throws IOException, ProtocolException
{
- // System.out.println(System.currentTimeMillis() + " " + url);
+ // jalview.bin.Console.outPrintln(System.currentTimeMillis() + " " + url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int retrySecs = Integer.valueOf(retryDelay);
if (retrySecs > 0 && retrySecs < 10)
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Ensembl REST service rate limit exceeded, waiting "
+ retryDelay + " seconds before retrying");
Thread.sleep(1000 * retrySecs);
}
} catch (NumberFormatException | InterruptedException e)
{
- System.err.println("Error handling Retry-After: " + e.getMessage());
+ jalview.bin.Console.errPrintln("Error handling Retry-After: " + e.getMessage());
}
}
}
url = getUrl(ids);
}
- Reader br = null;
- try
- {
- Platform.timeCheck(null, Platform.TIME_MARK);
-
- br = (url == null ? null : getHttpResponse(url, ids, msDelay));
+ Object json = (url == null ? null : getJSON(url, ids, msDelay));
- Object ret = (br == null ? null : JSONUtils.parse(br));
-
- Platform.timeCheck("EnsemblRestClient.getJSON " + url,
- Platform.TIME_MARK);
-
- 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;
}
/**
}
} catch (NumberFormatException e)
{
- System.err.println("Error in REST version: " + e.toString());
+ jalview.bin.Console.errPrintln("Error in REST version: " + e.toString());
}
/*
expected) == 1;
if (laterVersion)
{
- System.err.println(String.format(
+ jalview.bin.Console.errPrintln(String.format(
"EnsemblRestClient expected %s REST version %s but found %s, see %s",
getDbSource(), expected, version, REST_CHANGE_LOG));
}
info.restVersion = version;
} catch (Throwable t)
{
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Error checking Ensembl REST version: " + t.getMessage());
}
}
domainData.get(getDomain()).dataVersion = versions.get(0).toString();
} catch (Throwable e)
{// could be IOException | ParseException e) {
- System.err.println(
+ jalview.bin.Console.errPrintln(
"Error checking Ensembl data version: " + e.getMessage());
}
}