JAL-3394 Added a 'jalview://' and 'jalviews://' parser into getdown, uses fragment...
authorBen Soares <bsoares@dundee.ac.uk>
Tue, 17 Dec 2019 20:56:24 +0000 (20:56 +0000)
committerBen Soares <bsoares@dundee.ac.uk>
Tue, 17 Dec 2019 20:56:24 +0000 (20:56 +0000)
getdown/lib/getdown-core.jar
getdown/lib/getdown-launcher-local.jar
getdown/lib/getdown-launcher.jar
getdown/src/getdown/ant/pom.xml
getdown/src/getdown/core/pom.xml
getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java
getdown/src/getdown/launcher/pom.xml
getdown/src/getdown/mvn_cmd
getdown/src/getdown/pom.xml
j11lib/getdown-core.jar
j8lib/getdown-core.jar

index 8f9d06f..5d88768 100644 (file)
Binary files a/getdown/lib/getdown-core.jar and b/getdown/lib/getdown-core.jar differ
index 1c021ef..710ab06 100644 (file)
Binary files a/getdown/lib/getdown-launcher-local.jar and b/getdown/lib/getdown-launcher-local.jar differ
index 024855c..e2b648d 100644 (file)
Binary files a/getdown/lib/getdown-launcher.jar and b/getdown/lib/getdown-launcher.jar differ
index 13b77c6..b68fa8b 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-1.2.1_FJVL</version>
+    <version>1.8.3-1.2.2_FJVL</version>
   </parent>
 
   <artifactId>getdown-ant</artifactId>
index 590d5da..a170813 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-1.2.1_FJVL</version>
+    <version>1.8.3-1.2.2_FJVL</version>
   </parent>
 
   <artifactId>getdown-core</artifactId>
index 8d65d28..e7f21c6 100644 (file)
@@ -9,9 +9,12 @@ import java.io.*;
 import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.Proxy;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.net.URLConnection;
+import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileLock;
@@ -811,27 +814,13 @@ public class Application
         }
 
         // see if a percentage of physical memory, or max heap size options exist
-        String jvmmempc = config.getString("jvmmempc", null);
-        String jvmmemmax = config.getString("jvmmemmax", null);
+        jvmmempc = config.getString("jvmmempc", null);
+        jvmmemmax = config.getString("jvmmemmax", null);
         // app_id prefixed setting overrides
         if (appPrefix.length() > 0) {
             jvmmempc = config.getString(appPrefix + "jvmmempc", jvmmempc);
             jvmmemmax = config.getString(appPrefix + "jvmmemmax", jvmmemmax);
         }
-        long maxMemLong = -1;
-        maxMemLong = MemorySetting.getMemorySetting(jvmmemmax, jvmmempc);
-        if (maxMemLong > 0)
-        {
-          String[] maxMemHeapArg = new String[]{"-Xmx"+Long.toString(maxMemLong)};
-          // remove other max heap size arg
-          ARG: for (int i = 0; i < _jvmargs.size(); i++) {
-            if (_jvmargs.get(i) instanceof java.lang.String && _jvmargs.get(i).startsWith("-Xmx")) {
-              _jvmargs.remove(i);
-              break ARG;
-            }
-          }
-          addAll(maxMemHeapArg, _jvmargs);
-        }
 
         // get the set of optimum JVM arguments
         _optimumJvmArgs = config.getMultiValue("optimum_jvmarg");
@@ -1098,6 +1087,84 @@ public class Application
             }
         }
 
+        // test for jalview/s URL
+        if (_appargs.size() > 0) {
+          String uri = _appargs.get(0);
+          try {
+            log.info("TRYING TO PARSE URL '"+uri+"'");
+            URI jalviewUri = new URI(uri);
+            if (jalviewUri.getScheme().equals("jalview") || jalviewUri.getScheme().equals("jalviews")) {
+              boolean https = jalviewUri.getScheme().equals("jalviews");
+              String host = jalviewUri.getHost();
+              int port = jalviewUri.getPort();
+              String file = jalviewUri.getPath();
+              String ref = jalviewUri.getFragment();
+              String query = jalviewUri.getQuery();
+              
+              _appargs.clear();
+              _appargs.add("-open");
+              if (host != null && host.length() > 0) {
+                URL newUrl = new URL(
+                        (https?"https":"http")
+                        + "://"
+                        + host
+                        + (port > -1? String.valueOf(port) : "")
+                        + jalviewUri.getRawPath()
+                        + (query != null && query.length() > 0 ? "?" + jalviewUri.getRawQuery() : "")
+                        );
+                _appargs.add(newUrl.toString());
+              } else {
+                _appargs.add(file);
+              }
+              
+              if (ref != null && ref.length() > 0) {
+                String[] refArgs = ref.split("&");
+                for (String refArg : refArgs) {
+                  if (refArg.startsWith("jvmmempc=")) {
+                    jvmmempc = refArg.substring(9);
+                    continue;
+                  }
+                  if (refArg.startsWith("jvmmemmax=")) {
+                    jvmmemmax = refArg.substring(10);
+                    continue;
+                  }
+                  _appargs.add(URLDecoder.decode(refArg, "UTF-8"));
+                }
+              }
+              
+            }
+          } catch (URISyntaxException e) {
+            log.error("Malformed jalview URI", uri);
+          }
+        }
+        
+        for (String argString: _appargs) {
+          if (argString.startsWith("-jvmmempc=")) {
+            jvmmempc = argString.substring(10);
+            continue;
+          }
+          if (argString.startsWith("-jvmmemmax=")) {
+            jvmmemmax = argString.substring(11);
+            continue;
+          }
+        }
+        
+        // add the memory setting from jvmmempc and jvmmemmax
+        long maxMemLong = -1;
+        maxMemLong = MemorySetting.getMemorySetting(jvmmemmax, jvmmempc);
+        if (maxMemLong > 0)
+        {
+          String[] maxMemHeapArg = new String[]{"-Xmx"+Long.toString(maxMemLong)};
+          // remove other max heap size arg
+          ARG: for (int i = 0; i < _jvmargs.size(); i++) {
+            if (_jvmargs.get(i) instanceof java.lang.String && _jvmargs.get(i).startsWith("-Xmx")) {
+              _jvmargs.remove(i);
+              break ARG;
+            }
+          }
+          addAll(maxMemHeapArg, _jvmargs);
+        }
         // add the JVM arguments
         for (String string : _jvmargs) {
             args.add(processArg(string));
@@ -1148,7 +1215,7 @@ public class Application
         for (String string : _appargs) {
             args.add(processArg(string));
         }
-        
+
         String[] envp = createEnvironment();
         String[] sargs = args.toArray(new String[args.size()]);
         log.info("Running " + StringUtil.join(sargs, "\n  "));
@@ -2025,4 +2092,6 @@ public class Application
     private Config _initialisedConfig = null;
     
     public static String i4jVersion = null;
+    private String jvmmempc = null;
+    private String jvmmemmax = null;
 }
index 1610211..109636a 100644 (file)
@@ -4,7 +4,7 @@
   <parent>
     <groupId>com.threerings.getdown</groupId>
     <artifactId>getdown</artifactId>
-    <version>1.8.3-1.2.1_FJVL</version>
+    <version>1.8.3-1.2.2_FJVL</version>
   </parent>
 
   <artifactId>getdown-launcher</artifactId>
index e9e6c32..cb001aa 100755 (executable)
@@ -3,7 +3,7 @@
 if [ x$JVLVERSION != x ]; then
   export VERSION=$JVLVERSION
 else
-  export VERSION=1.8.3-1.2.1_JVL
+  export VERSION=1.8.3-1.2.2_JVL
 fi
 
 if [ x${VERSION%_JVL} = x$VERSION ]; then
index 84411af..586f595 100644 (file)
@@ -10,7 +10,7 @@
   <groupId>com.threerings.getdown</groupId>
   <artifactId>getdown</artifactId>
   <packaging>pom</packaging>
-  <version>1.8.3-1.2.1_FJVL</version>
+  <version>1.8.3-1.2.2_FJVL</version>
 
   <name>getdown</name>
   <description>An application installer and updater.</description>
index 8f9d06f..5d88768 100644 (file)
Binary files a/j11lib/getdown-core.jar and b/j11lib/getdown-core.jar differ
index 8f9d06f..5d88768 100644 (file)
Binary files a/j8lib/getdown-core.jar and b/j8lib/getdown-core.jar differ