JAL-1784 minimise data duplication, and report out of memory errors and other kinds...
authorJim Procter <jprocter@issues.jalview.org>
Wed, 17 Jun 2015 20:54:39 +0000 (21:54 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Wed, 17 Jun 2015 20:54:39 +0000 (21:54 +0100)
src/jalview/io/HtmlFile.java

index e847c58..a4e9bf4 100644 (file)
@@ -67,15 +67,23 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile
   {
     try
     {
-      StringBuilder htmlData = new StringBuilder();
-      String currentLine;
-      while ((currentLine = nextLine()) != null)
-      {
-        htmlData.append(currentLine);
+      Element content = null;
+      Document doc = null;
+      try {
+         StringBuilder htmlData = new StringBuilder();
+          String currentLine;
+          while ((currentLine = nextLine()) != null)
+          {
+            htmlData.append(currentLine);
+          }
+
+          doc = Jsoup.parse(htmlData.toString());
+      } catch (OutOfMemoryError oom) {
+         errormessage = "Not enough memory to process HTML document";
+         throw new IOException(errormessage);
       }
-
-      Document doc = Jsoup.parse(htmlData.toString());
-      Element content = doc.getElementById("seqData");
+      content = doc.getElementById("seqData");
+      
       JSONFile jsonFile = new JSONFile().parse(new StringReader(content.val()));
       this.seqs = jsonFile.getSeqs();
       this.seqGroups = jsonFile.getSeqGroups();
@@ -86,7 +94,8 @@ public class HtmlFile extends AlignFile implements ComplexAlignFile
       this.columnSelection = jsonFile.getColumnSelection();
     } catch (Exception e)
     {
-      e.printStackTrace();
+      errormessage = "Failed to extract data from HTML document.";
+      throw new IOException("Unexpected exception whilst extracting JSon from HTML.",e);
     }
   }