import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.Proxy;
+import java.net.SocketAddress;
+import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
+import jalview.bin.HiDPISetting;
import jalview.bin.MemorySetting;
-import com.install4j.api.launcher.Variables;
+//import com.install4j.api.launcher.Variables;
import com.threerings.getdown.util.*;
// avoid ambiguity with java.util.Base64 which we can't use as it's 1.8+
}
// pass along our proxy settings
- String proxyHost;
- if ((proxyHost = System.getProperty("http.proxyHost")) != null) {
+ String proxyHost = System.getProperty("http.proxyHost");
+ String proxyPort = StringUtil.isBlank(System.getProperty("http.proxyPort")) ? "80" : System.getProperty("http.proxyPort");
+ if (StringUtil.isBlank(proxyHost) && ! proxy.equals(Proxy.NO_PROXY)) {
+ try {
+ SocketAddress a = proxy.address();
+ if (a != null && a instanceof InetSocketAddress) {
+ InetSocketAddress ia = (InetSocketAddress)a;
+ proxyHost = ia.getHostString();
+ proxyPort = String.valueOf(ia.getPort());
+ }
+ } catch (Exception e) {
+ log.error("Problem obtaining proxy settings from Proxy object");
+ e.printStackTrace();
+ }
+ }
+ if (proxyHost != null) {
+ log.info("Using proxy settings "+proxyHost+":"+proxyPort);
args.add("-Dhttp.proxyHost=" + proxyHost);
- args.add("-Dhttp.proxyPort=" + System.getProperty("http.proxyPort"));
+ args.add("-Dhttp.proxyPort=" + proxyPort);
args.add("-Dhttps.proxyHost=" + proxyHost);
- args.add("-Dhttps.proxyPort=" + System.getProperty("http.proxyPort"));
- }
+ args.add("-Dhttps.proxyPort=" + proxyPort);
+ } else {
+ log.info("Not setting proxy");
+ }
// add the marker indicating the app is running in getdown
args.add("-D" + Properties.GETDOWN + "=true");
args.add("-Dinstaller_template_version=" + System.getProperty("installer_template_version"));
args.add("-Dlauncher_version=" + Build.version());
+ // set HiDPI property if wanted
+ String scalePropertyArg = HiDPISetting.getScalePropertyArg();
+ if (scalePropertyArg != null)
+ {
+ args.add(scalePropertyArg);
+ }
+
// set the native library path if we have native resources
// @TODO optional getdown.txt parameter to set addCurrentLibraryPath to true or false?
ClassPath javaLibPath = PathBuilder.buildLibsPath(this, true);
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;
+ if (jalviewUri != null) {
+ String scheme = jalviewUri.getScheme();
+ if (scheme != null && (scheme.equals("jalview") || scheme.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"));
}
- _appargs.add(URLDecoder.decode(refArg, "UTF-8"));
}
+
}
-
}
} catch (URISyntaxException e) {
log.error("Malformed jalview URI", uri);
String[] sargs = args.toArray(new String[args.size()]);
log.info("Running " + StringUtil.join(sargs, "\n "));
- return Runtime.getRuntime().exec(sargs, envp, getAppDir());
+ // don't set the working dir, leave it the same as the working dir of the invocation
+ //return Runtime.getRuntime().exec(sargs, envp, getAppDir());
+ return Runtime.getRuntime().exec(sargs, envp);
}
/**
clearValidationMarkers();
// if the new copy validates, reinitialize ourselves; otherwise report baffling hoseage
if (_digest.validateResource(crsrc, null)) {
+ // unset _initialisedConfig so new file is initialised
+ _initialisedConfig = null;
init(true);
} else {
log.warning(CONFIG_FILE + " failed to validate even after redownloading. " +