From: Ben Soares Date: Tue, 17 Dec 2019 20:56:24 +0000 (+0000) Subject: JAL-3394 Added a 'jalview://' and 'jalviews://' parser into getdown, uses fragment... X-Git-Tag: Develop-2_11_2_0-d20201215~80^2~28^2~8 X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=commitdiff_plain;h=4ece480999d5e1e5c14bf56f22cf858d59013d86 JAL-3394 Added a 'jalview://' and 'jalviews://' parser into getdown, uses fragment for cli args --- diff --git a/getdown/lib/getdown-core.jar b/getdown/lib/getdown-core.jar index 8f9d06f..5d88768 100644 Binary files a/getdown/lib/getdown-core.jar and b/getdown/lib/getdown-core.jar differ diff --git a/getdown/lib/getdown-launcher-local.jar b/getdown/lib/getdown-launcher-local.jar index 1c021ef..710ab06 100644 Binary files a/getdown/lib/getdown-launcher-local.jar and b/getdown/lib/getdown-launcher-local.jar differ diff --git a/getdown/lib/getdown-launcher.jar b/getdown/lib/getdown-launcher.jar index 024855c..e2b648d 100644 Binary files a/getdown/lib/getdown-launcher.jar and b/getdown/lib/getdown-launcher.jar differ diff --git a/getdown/src/getdown/ant/pom.xml b/getdown/src/getdown/ant/pom.xml index 13b77c6..b68fa8b 100644 --- a/getdown/src/getdown/ant/pom.xml +++ b/getdown/src/getdown/ant/pom.xml @@ -4,7 +4,7 @@ com.threerings.getdown getdown - 1.8.3-1.2.1_FJVL + 1.8.3-1.2.2_FJVL getdown-ant diff --git a/getdown/src/getdown/core/pom.xml b/getdown/src/getdown/core/pom.xml index 590d5da..a170813 100644 --- a/getdown/src/getdown/core/pom.xml +++ b/getdown/src/getdown/core/pom.xml @@ -4,7 +4,7 @@ com.threerings.getdown getdown - 1.8.3-1.2.1_FJVL + 1.8.3-1.2.2_FJVL getdown-core diff --git a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java index 8d65d28..e7f21c6 100644 --- a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java +++ b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/data/Application.java @@ -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; } diff --git a/getdown/src/getdown/launcher/pom.xml b/getdown/src/getdown/launcher/pom.xml index 1610211..109636a 100644 --- a/getdown/src/getdown/launcher/pom.xml +++ b/getdown/src/getdown/launcher/pom.xml @@ -4,7 +4,7 @@ com.threerings.getdown getdown - 1.8.3-1.2.1_FJVL + 1.8.3-1.2.2_FJVL getdown-launcher diff --git a/getdown/src/getdown/mvn_cmd b/getdown/src/getdown/mvn_cmd index e9e6c32..cb001aa 100755 --- a/getdown/src/getdown/mvn_cmd +++ b/getdown/src/getdown/mvn_cmd @@ -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 diff --git a/getdown/src/getdown/pom.xml b/getdown/src/getdown/pom.xml index 84411af..586f595 100644 --- a/getdown/src/getdown/pom.xml +++ b/getdown/src/getdown/pom.xml @@ -10,7 +10,7 @@ com.threerings.getdown getdown pom - 1.8.3-1.2.1_FJVL + 1.8.3-1.2.2_FJVL getdown An application installer and updater. diff --git a/j11lib/getdown-core.jar b/j11lib/getdown-core.jar index 8f9d06f..5d88768 100644 Binary files a/j11lib/getdown-core.jar and b/j11lib/getdown-core.jar differ diff --git a/j8lib/getdown-core.jar b/j8lib/getdown-core.jar index 8f9d06f..5d88768 100644 Binary files a/j8lib/getdown-core.jar and b/j8lib/getdown-core.jar differ