/*
- * 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 <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
*/
package jalview.ws.rest;
import jalview.bin.Cache;
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;
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;
-
/**
* data source instantiated from the response of an httpclient request.
*
*
*/
-public class HttpResultSet extends FileParse
+public class HttpResultSet extends FileParse implements AutoCloseable
{
private HttpRequestBase cachedRequest;
*/
public List<DataProvider> createResultDataProviders()
{
- List<DataProvider> dp = new ArrayList<DataProvider>();
+ List<DataProvider> dp = new ArrayList<>();
for (JvDataType type : restJob.rsd.getResultDataTypes())
{
dp.add(new SimpleDataProvider(type, this, null));
*/
public Object[] parseResultSet() throws Exception, Error
{
- List<DataProvider> dp = new ArrayList<DataProvider>();
+ List<DataProvider> 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();
+ EntityUtils.consume(en);
}
return new ParsePackedSet().getAlignment(ds,
handler.getJalviewDataProviders());
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());
{
Cache.log.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;
}
@Override
- protected void finalize() throws Throwable
+ public void close()
{
dataIn = null;
cachedRequest = null;
} catch (Error ex)
{
}
- super.finalize();
+ // no finalize for FileParse
+ // super.close();
}
/**