X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fws%2Frest%2FHttpResultSet.java;h=204e3eb618651ce04ac7c04ab07dc7f300555fdb;hb=d043ce47fc710d3eb2629ba926a8a7417bd67d8c;hp=7ecbd273adf7abc37a1005012ce878a5bcd86018;hpb=ad20cd92225f2ee8c251d39b00b90555d382a616;p=jalview.git diff --git a/src/jalview/ws/rest/HttpResultSet.java b/src/jalview/ws/rest/HttpResultSet.java index 7ecbd27..204e3eb 100644 --- a/src/jalview/ws/rest/HttpResultSet.java +++ b/src/jalview/ws/rest/HttpResultSet.java @@ -1,28 +1,32 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) - * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.ws.rest; -import jalview.bin.Cache; +import jalview.bin.Console; import jalview.io.FileParse; import jalview.io.packed.DataProvider; +import jalview.io.packed.DataProvider.JvDataType; import jalview.io.packed.ParsePackedSet; import jalview.io.packed.SimpleDataProvider; -import jalview.io.packed.DataProvider.JvDataType; +import jalview.util.MessageManager; import jalview.ws.io.mime.JalviewMimeContentHandler; import java.io.BufferedReader; @@ -36,6 +40,7 @@ import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpRequestBase; import org.apache.http.entity.mime.MultipartEntity; +import org.apache.http.util.EntityUtils; import org.apache.james.mime4j.MimeException; import org.apache.james.mime4j.parser.MimeStreamParser; @@ -46,7 +51,7 @@ import org.apache.james.mime4j.parser.MimeStreamParser; * */ -public class HttpResultSet extends FileParse +public class HttpResultSet extends FileParse implements AutoCloseable { private HttpRequestBase cachedRequest; @@ -85,7 +90,7 @@ public class HttpResultSet extends FileParse */ public List createResultDataProviders() { - List dp = new ArrayList(); + List dp = new ArrayList<>(); for (JvDataType type : restJob.rsd.getResultDataTypes()) { dp.add(new SimpleDataProvider(type, this, null)); @@ -102,33 +107,32 @@ public class HttpResultSet extends FileParse */ public Object[] parseResultSet() throws Exception, Error { - List dp = new ArrayList(); + List dp = new ArrayList<>(); Object[] results = null; if (en == null) { - throw new Error( - "Implementation Error: need to have an HttpResponse to process."); + throw new Error(MessageManager.getString( + "error.implementation_error_need_to_have_httpresponse")); } jalview.io.packed.JalviewDataset ds = restJob.newJalviewDataset(); // Decide how we deal with content. - if (en instanceof MultipartEntity) + // TODO : verify we are detecting a multipart response correctly + if (en.getContentType().getValue().startsWith("multipart/form-data")) { // Multipart messages should be properly typed, so we parse them as we go. - MultipartEntity mpe = (MultipartEntity) en; - // multipart JalviewMimeContentHandler handler = new JalviewMimeContentHandler(ds); MimeStreamParser parser = new MimeStreamParser(); parser.setContentHandler(handler); try { - parser.parse(mpe.getContent()); + parser.parse(en.getContent()); } catch (MimeException me) { error = true; errormessage = "Couldn't parse message from web service."; - Cache.log.warn("Failed to parse MIME multipart content", me); - en.consumeContent(); + Console.warn("Failed to parse MIME multipart content", me); + EntityUtils.consume(en); } return new ParsePackedSet().getAlignment(ds, handler.getJalviewDataProviders()); @@ -150,23 +154,23 @@ public class HttpResultSet extends FileParse if (!(en instanceof MultipartEntity)) { // assume content is simple text stream that can be read from - String enc = (en.getContentEncoding() == null) ? null : en - .getContentEncoding().getValue(); + String enc = (en.getContentEncoding() == null) ? null + : en.getContentEncoding().getValue(); if (en.getContentType() != null) { - Cache.log.debug("Result Type: " + en.getContentType().toString()); + Console.debug("Result Type: " + en.getContentType().toString()); } else { - Cache.log.debug("No Result Type Specified."); + Console.debug("No Result Type Specified."); } if (enc == null || enc.length() < 1) { - Cache.log.debug("Assuming 'Default' Result Encoding."); + Console.debug("Assuming 'Default' Result Encoding."); } else { - Cache.log.debug("Result Encoded as : " + enc); + Console.debug("Result Encoded as : " + enc); } // attempt to identify file and construct an appropriate DataSource // identifier for it. @@ -180,9 +184,9 @@ public class HttpResultSet extends FileParse : new InputStreamReader(en.getContent()); } catch (UnsupportedEncodingException e) { - Cache.log.error("Can't handle encoding '" + enc + Console.error("Can't handle encoding '" + enc + "' for response from webservice.", e); - en.consumeContent(); + EntityUtils.consume(en); error = true; errormessage = "Can't handle encoding for response from webservice"; return; @@ -196,7 +200,7 @@ public class HttpResultSet extends FileParse } @Override - protected void finalize() throws Throwable + public void close() { dataIn = null; cachedRequest = null; @@ -211,7 +215,8 @@ public class HttpResultSet extends FileParse } catch (Error ex) { } - super.finalize(); + // no finalize for FileParse + // super.close(); } /**