From e632e27a0fba2bb789ba055f3e06f90cab0082e6 Mon Sep 17 00:00:00 2001
From: tcarver <tjc>
Date: Fri, 30 Aug 2013 11:49:37 +0100
Subject: [PATCH] check to ensure not recursively trying to read from the same
 file

---
 .../artemis/components/UserDefinedQualifiers.java  | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/uk/ac/sanger/artemis/components/UserDefinedQualifiers.java b/uk/ac/sanger/artemis/components/UserDefinedQualifiers.java
index 0030834ee..9d4544fb3 100644
--- a/uk/ac/sanger/artemis/components/UserDefinedQualifiers.java
+++ b/uk/ac/sanger/artemis/components/UserDefinedQualifiers.java
@@ -479,7 +479,7 @@ class UserDefinedQualifiers extends JFrame
    */
   private QualifierVector loadQualifiers(final Document doc) throws IOException
   {
-    QualifierVector qualifiers = loadObo(doc.getInputStream());
+    QualifierVector qualifiers = loadObo(doc);
     if(qualifiers.size() == 0)
       qualifiers = loadText(doc.getInputStream());
     return qualifiers;
@@ -489,11 +489,12 @@ class UserDefinedQualifiers extends JFrame
    * Load in qualifiers from an input stream that are in OBO format.
    * @param ins
    * @return
+   * @throws IOException 
    */
-  private QualifierVector loadObo(final InputStream ins)
+  private QualifierVector loadObo(final Document doc) throws IOException
   {
     final LinePushBackReader reader = new LinePushBackReader(
-        new BufferedReader(new InputStreamReader(ins)));
+        new BufferedReader(new InputStreamReader(doc.getInputStream())));
     final QualifierVector qualifiers = new QualifierVector();
     try
     {
@@ -539,8 +540,11 @@ class UserDefinedQualifiers extends JFrame
         else if(line.startsWith("import:"))
         {
           // import OBO file from a URL
-          final URL url = new URL(line.substring(7).trim());
-          createObo(new URLDocument(url));
+          final URLDocument urlDoc = new URLDocument(
+              new URL(line.substring(7).trim()) );
+          // check to ensure not recursively reading from same file
+          if(!doc.getLocation().equals(urlDoc.getLocation()))
+            createObo(urlDoc);
         }
       }
       reader.close();
-- 
GitLab