Merge branch 'feature/JAL-3121gffAttributeMap' into develop
[jalview.git] / src / jalview / ws / rest / HttpResultSet.java
index 5a70211..5bfe3b5 100644 (file)
@@ -1,11 +1,32 @@
+/*
+ * 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.
+ *  
+ * 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/>.
+ * 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;
@@ -20,7 +41,6 @@ import org.apache.http.HttpResponse;
 import org.apache.http.client.methods.HttpRequestBase;
 import org.apache.http.entity.mime.MultipartEntity;
 import org.apache.james.mime4j.MimeException;
-import org.apache.james.mime4j.parser.ContentHandler;
 import org.apache.james.mime4j.parser.MimeStreamParser;
 
 /**
@@ -30,7 +50,7 @@ import org.apache.james.mime4j.parser.MimeStreamParser;
  * 
  */
 
-public class HttpResultSet extends FileParse
+public class HttpResultSet extends FileParse implements AutoCloseable
 {
 
   private HttpRequestBase cachedRequest;
@@ -69,7 +89,7 @@ public class HttpResultSet extends FileParse
    */
   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));
@@ -77,15 +97,22 @@ public class HttpResultSet extends FileParse
     return dp;
   }
 
+  /**
+   * parses the results of the service output.
+   * 
+   * @return the result of ParsePackedSet.getAlignment()
+   * @throws Exception
+   * @throws Error
+   */
   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.
@@ -127,8 +154,8 @@ 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());
@@ -173,7 +200,7 @@ public class HttpResultSet extends FileParse
   }
 
   @Override
-  protected void finalize() throws Throwable
+  public void close()
   {
     dataIn = null;
     cachedRequest = null;
@@ -188,7 +215,24 @@ public class HttpResultSet extends FileParse
     } catch (Error ex)
     {
     }
-    super.finalize();
+    // no finalize for FileParse
+    // super.close();
+  }
+
+  /**
+   * 
+   * @return the URL that this result set read data from.
+   */
+  public String getUrl()
+  {
+    try
+    {
+      return cachedRequest.getURI().toURL().toString();
+    } catch (Exception x)
+    {
+      x.printStackTrace();
+      return null;
+    }
   }
 
 }