*/
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 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;
*
*/
-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(MessageManager.getString("error.implementation_error_need_to_have_httpresponse"));
+ 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());
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.
: 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;
}
@Override
- protected void finalize() throws Throwable
+ public void close()
{
dataIn = null;
cachedRequest = null;
} catch (Error ex)
{
}
- super.finalize();
+ // no finalize for FileParse
+ // super.close();
}
/**