X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Fjalview%2Fbin%2FCache.java;h=f4c88543a307ddb5c22067d4ac1fd148c17ffa32;hb=b382fe5af3f138ede6db2ab1efc05ddd0819eea6;hp=9d3152e20e871c2ed30e834be57f2ea6a5e78aa4;hpb=7dcec14f584c3b4fc95e316e3d91e7d452889e5c;p=jalview.git diff --git a/src/jalview/bin/Cache.java b/src/jalview/bin/Cache.java index 9d3152e..f4c8854 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; @@ -42,7 +46,6 @@ import java.util.Locale; import java.util.Properties; import java.util.StringTokenizer; import java.util.TreeSet; -import java.util.regex.Pattern; import javax.swing.LookAndFeel; import javax.swing.UIManager; @@ -241,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 */ @@ -321,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_"; /** @@ -338,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") @@ -365,10 +383,13 @@ public class Cache { // props file provided as URL fis = new URL(propertiesFile).openStream(); - System.out.println( - "Loading jalview properties from : " + propertiesFile); - System.out.println( - "Disabling Jalview writing to user's local properties file."); + if (!Jalview.quiet()) + { + System.out.println( + "Loading jalview properties from : " + propertiesFile); + System.out.println( + "Disabling Jalview writing to user's local properties file."); + } propsAreReadOnly = true; } catch (Exception ex) { @@ -396,7 +417,8 @@ public class Cache fis.close(); } catch (Exception ex) { - System.out.println("Error reading properties file: " + ex); + if (!Jalview.quiet()) + System.out.println("Error reading properties file: " + ex); } } @@ -452,7 +474,8 @@ public class Cache } } catch (Exception ex) { - System.out.println("Error reading author details: " + ex); + if (!Jalview.quiet()) + System.out.println("Error reading author details: " + ex); authorDetails = null; } if (authorDetails == null) @@ -515,29 +538,36 @@ public class Cache if (orgtimeout == null) { orgtimeout = "30"; - System.out.println("# INFO: Setting default net timeout to " - + orgtimeout + " seconds."); + Console.debug("Setting default net timeout to " + 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) + { + if (!Jalview.quiet()) + { + 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); @@ -634,7 +664,8 @@ public class Cache } } catch (Exception ex) { - System.out.println("Error reading build details: " + ex); + if (!Jalview.quiet()) + System.out.println("Error reading build details: " + ex); applicationProperties.remove("VERSION"); } String codeVersion = getProperty("VERSION"); @@ -655,7 +686,7 @@ public class Cache if (printVersion && reportVersion) { System.out.println(ChannelProperties.getProperty("app_name") - + " Version: " + codeVersion + codeInstallation); + + " version: " + codeVersion + codeInstallation); } } @@ -716,8 +747,9 @@ public class Cache def = Integer.parseInt(string); } catch (NumberFormatException e) { - System.out.println("Error parsing int property '" + property - + "' with value '" + string + "'"); + if (!Jalview.quiet()) + System.out.println("Error parsing int property '" + property + + "' with value '" + string + "'"); } } @@ -758,8 +790,9 @@ public class Cache } } catch (Exception ex) { - System.out.println( - "Error setting property: " + key + " " + obj + "\n" + ex); + if (!Jalview.quiet()) + System.out.println( + "Error setting property: " + key + " " + obj + "\n" + ex); } return oldValue; } @@ -789,7 +822,8 @@ public class Cache out.close(); } catch (Exception ex) { - System.out.println("Error saving properties: " + ex); + if (!Jalview.quiet()) + System.out.println("Error saving properties: " + ex); } } } @@ -1127,7 +1161,8 @@ public class Cache } } catch (Exception ex) { - System.out.println("Error loading User ColourFile\n" + ex); + if (!Jalview.quiet()) + System.out.println("Error loading User ColourFile\n" + ex); } } if (!files.equals(coloursFound.toString())) @@ -1159,8 +1194,11 @@ public class Cache { return; } - String line = prefix + (value != null ? value : defaultValue) + suffix; - sb.append(line); + if (prefix != null) + sb.append(prefix); + sb.append(value == null ? defaultValue : value); + if (suffix != null) + sb.append(suffix); } /** @@ -1184,6 +1222,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")); @@ -1204,17 +1243,19 @@ public class Cache sb.append(" ("); sb.append(lafClass); sb.append(")\n"); - // Not displayed in release version ( determined by possible version number - // regex 9[9.]*9[.-_a9]* ) - if (Pattern.matches("^\\d[\\d\\.]*\\d[\\.\\-\\w]*$", - Cache.getDefault("VERSION", "TEST"))) + appendIfNotNull(sb, "Channel: ", + ChannelProperties.getProperty("channel"), "\n", null); + if (Console.isDebugEnabled() + || !"release".equals(ChannelProperties.getProperty("channel"))) { 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(); } @@ -1395,10 +1436,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 @@ -1594,4 +1636,63 @@ 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) + return null; + if (!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; + } }