X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fbin%2FCache.java;h=da6b1eacac1dc872d63814f2500552482039173b;hb=d42b7588a34477b24ce97ba75788536e74e6cf86;hp=22a6b697952288bed6dafaa29b526193d586347d;hpb=32504ac62e27ce8849ab331a10b7cc3d0c2322b2;p=jalview.git diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index 22a6b69..da6b1ea 100755 --- a/src/jalview/bin/Cache.java +++ b/src/jalview/bin/Cache.java @@ -24,7 +24,9 @@ import java.awt.Color; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; @@ -34,7 +36,9 @@ import java.net.PasswordAuthentication; import java.net.URL; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.Enumeration; @@ -240,6 +244,9 @@ public class Cache */ public static final String JALVIEWLOGLEVEL = "logs.Jalview.level"; + // for tests + public static final String BOOTSTRAP_TEST = "BOOTSTRAP_TEST"; + /** * Sifts settings */ @@ -320,8 +327,20 @@ public class Cache /** Default file is ~/.jalview_properties */ static String propertiesFile; + private static final String fallbackPropertiesFile = ".jalview_properties"; + private static boolean propsAreReadOnly = Platform.isJS(); + public static boolean isPropsAreReadOnly() + { + return propsAreReadOnly; + } + + public static void setPropsAreReadOnly(boolean propsAreReadOnly) + { + Cache.propsAreReadOnly = propsAreReadOnly; + } + private final static String JS_PROPERTY_PREFIX = "jalview_"; /** @@ -337,7 +356,7 @@ public class Cache { String channelPrefsFilename = ChannelProperties .getProperty("preferences.filename"); - String releasePrefsFilename = ".jalview_properties"; + String releasePrefsFilename = fallbackPropertiesFile; propertiesFile = System.getProperty("user.home") + File.separatorChar + channelPrefsFilename; releasePropertiesFile = System.getProperty("user.home") @@ -518,25 +537,29 @@ public class Cache + orgtimeout + " seconds."); } String remoteVersion = null; - try + if (remoteBuildPropertiesUrl.startsWith("http")) { - System.setProperty("sun.net.client.defaultConnectTimeout", - "5000"); - java.net.URL url = new java.net.URL(remoteBuildPropertiesUrl); + try + { + System.setProperty("sun.net.client.defaultConnectTimeout", + "5000"); - BufferedReader in = new BufferedReader( - new InputStreamReader(url.openStream())); + URL url = new URL(remoteBuildPropertiesUrl); - Properties remoteBuildProperties = new Properties(); - remoteBuildProperties.load(in); - remoteVersion = remoteBuildProperties.getProperty("VERSION"); - } catch (Exception ex) - { - System.out - .println("Non-fatal exception when checking version at " - + remoteBuildPropertiesUrl + ":"); - System.out.println(ex); - remoteVersion = getProperty("VERSION"); + BufferedReader in = new BufferedReader( + new InputStreamReader(url.openStream())); + + Properties remoteBuildProperties = new Properties(); + remoteBuildProperties.load(in); + remoteVersion = remoteBuildProperties.getProperty("VERSION"); + } catch (Exception ex) + { + System.out.println( + "Non-fatal exception when checking version at " + + remoteBuildPropertiesUrl + ":"); + System.out.println(ex); + remoteVersion = getProperty("VERSION"); + } } System.setProperty("sun.net.client.defaultConnectTimeout", orgtimeout); @@ -626,6 +649,11 @@ public class Cache applicationProperties.put("VERSION", buildProperties.getProperty("VERSION")); } + if (buildProperties.getProperty("JAVA_COMPILE_VERSION", null) != null) + { + applicationProperties.put("JAVA_COMPILE_VERSION", + buildProperties.getProperty("JAVA_COMPILE_VERSION")); + } } catch (Exception ex) { System.out.println("Error reading build details: " + ex); @@ -1181,6 +1209,7 @@ public class Cache sb.append("Java version: "); sb.append(System.getProperty("java.version")); sb.append("\n"); + sb.append("Java platform: "); sb.append(System.getProperty("os.arch")); sb.append(" "); sb.append(System.getProperty("os.name")); @@ -1201,17 +1230,19 @@ public class Cache sb.append(" ("); sb.append(lafClass); sb.append(")\n"); + appendIfNotNull(sb, "Channel: ", + ChannelProperties.getProperty("channel"), "\n", null); if (Console.isDebugEnabled() || !"release".equals(ChannelProperties.getProperty("channel"))) { - appendIfNotNull(sb, "Channel: ", - ChannelProperties.getProperty("channel"), "\n", null); appendIfNotNull(sb, "Getdown appdir: ", - System.getProperty("getdownappdir"), "\n", null); + System.getProperty("getdowninstanceappdir"), "\n", null); appendIfNotNull(sb, "Getdown appbase: ", - System.getProperty("getdownappbase"), "\n", null); + System.getProperty("getdowninstanceappbase"), "\n", null); appendIfNotNull(sb, "Java home: ", System.getProperty("java.home"), "\n", "unknown"); + appendIfNotNull(sb, "Preferences file: ", propertiesFile, "\n", + "unknown"); } return sb.toString(); } @@ -1392,10 +1423,11 @@ public class Cache if (customProxySet && // we have a username but no password for the scheme being // requested - (protocol.equalsIgnoreCase("http") - && (httpUser != null && httpUser.length() > 0 - && (httpPassword == null - || httpPassword.length == 0))) + (protocol.equalsIgnoreCase("http") + && (httpUser != null + && httpUser.length() > 0 + && (httpPassword == null + || httpPassword.length == 0))) || (protocol.equalsIgnoreCase("https") && (httpsUser != null && httpsUser.length() > 0 @@ -1591,4 +1623,61 @@ public class Cache String appbase = getGetdownAppbase(); return appbase + "/" + getdownDistDir + "/build_properties"; } + + private static final Collection bootstrapProperties = new ArrayList<>( + Arrays.asList(JALVIEWLOGLEVEL, BOOTSTRAP_TEST)); + + public static Properties bootstrapProperties(String filename) + { + Properties bootstrapProps = new Properties(); + File file = null; + if (filename != null) + { + file = new File(filename); + } + if (file == null || !file.exists()) + { + String channelPrefsFilename = ChannelProperties + .getProperty("preferences.filename"); + String propertiesFilename = System.getProperty("user.home") + + File.separatorChar + channelPrefsFilename; + file = new File(propertiesFilename); + } + if (file == null || !file.exists()) + { + String releasePrefsFilename = fallbackPropertiesFile; + String releasePropertiesFilename = System.getProperty("user.home") + + File.separatorChar + releasePrefsFilename; + file = new File(releasePropertiesFilename); + } + + if (filename == null || !file.exists()) + { + System.err.println("Could not load bootstrap preferences file '" + + filename + "'"); + return null; + } + + try + { + FileInputStream in = new FileInputStream(file.getAbsoluteFile()); + Properties props = new Properties(); + props.load(in); + for (String prop : bootstrapProperties) + { + if (props.containsKey(prop)) + bootstrapProps.put(prop, props.getProperty(prop)); + } + } catch (FileNotFoundException e) + { + System.err.println("Could not find bootstrap preferences file '" + + file.getAbsolutePath() + "'"); + } catch (IOException e) + { + System.err.println( + "IOException when loading bootstrap preferences file '" + + file.getAbsolutePath() + "'"); + } + return bootstrapProps; + } }