JAL-2001 - note about possible side effect on JalviewLite.selectIn due to refactored...
[jalview.git] / src / jalview / bin / JalviewLite.java
index 30b8d54..095cfd3 100644 (file)
@@ -48,6 +48,7 @@ import jalview.javascript.JsCallBack;
 import jalview.javascript.MouseOverStructureListener;
 import jalview.structure.SelectionListener;
 import jalview.structure.StructureSelectionManager;
+import jalview.util.HttpUtils;
 import jalview.util.MessageManager;
 
 import java.applet.Applet;
@@ -62,8 +63,6 @@ import java.awt.event.ActionEvent;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.URL;
 import java.util.ArrayList;
@@ -460,6 +459,9 @@ public class JalviewLite extends Applet implements
         if (csel != null)
         {
           List<Integer> cs = csel.getSelected();
+          // note - the following actually clears cs as well, since
+          // csel.getSelected returns a reference. Need to check if we need to
+          // have a concurrentModification exception thrown here
           csel.clear();
           for (Integer selectedCol : cs)
           {
@@ -851,7 +853,7 @@ public class JalviewLite extends Applet implements
   {
     AlignmentI al = null;
 
-    String format = new IdentifyFile().Identify(text,
+    String format = new IdentifyFile().identify(text,
             AppletFormatAdapter.PASTE);
     try
     {
@@ -1820,7 +1822,7 @@ public class JalviewLite extends Applet implements
        */
       URL documentBase = getDocumentBase();
       String withDocBase = resolveUrlForLocalOrAbsolute(path, documentBase);
-      if (urlExists(withDocBase))
+      if (HttpUtils.isValidUrl(withDocBase))
       {
         if (debug)
         {
@@ -1837,7 +1839,8 @@ public class JalviewLite extends Applet implements
       URL codeBase = getCodeBase();
       String withCodeBase = applet.resolveUrlForLocalOrAbsolute(path,
               codeBase);
-      if (!withCodeBase.equals(withDocBase) && urlExists(withCodeBase))
+      if (!withCodeBase.equals(withDocBase)
+              && HttpUtils.isValidUrl(withCodeBase))
       {
         protocol = AppletFormatAdapter.URL;
         if (debug)
@@ -1967,7 +1970,7 @@ public class JalviewLite extends Applet implements
         return null;
       }
       String resolvedFile = resolveFileProtocol(fileParam);
-      String format = new IdentifyFile().Identify(resolvedFile, protocol);
+      String format = new IdentifyFile().identify(resolvedFile, protocol);
       dbgMsg("File identified as '" + format + "'");
       AlignmentI al = null;
       try
@@ -2404,97 +2407,10 @@ public class JalviewLite extends Applet implements
         return rtn;
       } catch (Exception ex)
       {
-        System.out.println("Exception checking resources: " + f + " "
-                + ex);
+        System.out.println("Exception checking resources: " + f + " " + ex);
         return false;
       }
     }
-
-    /**
-     * If the file is not already in URL format, tries to locate it by resolving
-     * as a URL.
-     * 
-     * @param f
-     * @return
-     */
-    String addProtocol(final String f)
-    {
-      if (f.indexOf("://") != -1)
-      {
-        // already has URL format
-        return f;
-      }
-
-      /*
-       * Try relative to document base
-       */
-      URL documentBase = getDocumentBase();
-      System.err.println("Trying documentbase: " + documentBase);
-      String url = applet.resolveUrlForLocalOrAbsolute(f, documentBase);
-      if (urlExists(url))
-      {
-        if (true/* debug */)
-        {
-          System.err.println("Prepended document base '" + documentBase
-                  + "' to make: '" + url + "'");
-        }
-        return url;
-      }
-
-      /*
-       * Try relative to codebase
-       */
-      URL codeBase = getCodeBase();
-      System.err.println("Trying codebase: " + codeBase);
-      url = applet.resolveUrlForLocalOrAbsolute(f, codeBase);
-      if (urlExists(url))
-      {
-        if (true/* debug */)
-        {
-          System.err.println("Prepended codebase '" + codeBase
-                  + "' to make: '" + url + "'");
-        }
-        return url;
-      }
-
-      return f;
-    }
-
-    /**
-     * Returns true if an input stream can be opened on the specified URL, else
-     * false.
-     * 
-     * @param url
-     * @return
-     */
-    private boolean urlExists(String url)
-    {
-      InputStream is = null;
-      try
-      {
-        is = new URL(url).openStream();
-        if (is != null)
-        {
-          return true;
-        }
-      } catch (Exception x)
-      {
-        // ignore
-      } finally
-      {
-        if (is != null)
-        {
-          try
-          {
-            is.close();
-          } catch (IOException e)
-          {
-            // ignore
-          }
-        }
-      }
-      return false;
-    }
   }
 
   /**
@@ -2946,6 +2862,15 @@ public class JalviewLite extends Applet implements
           URL localref)
   {
     String resolvedPath = "";
+    if (targetPath.startsWith("/"))
+    {
+      String codebase = localref.toString();
+      String localfile = localref.getFile();
+      resolvedPath = codebase.substring(0,
+              codebase.length() - localfile.length())
+              + targetPath;
+      return resolvedPath;
+    }
 
     /*
      * get URL path and strip off any trailing file e.g.