changeset 778:28cc32272dba

JNLPRuntime.config changed to proper singleton.
author Jiri Vanek <jvanek@redhat.com>
date Wed, 18 Dec 2013 16:23:00 +0100
parents d690fd6e8510
children c7bd4f6cf1b7
files ChangeLog netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java
diffstat 3 files changed, 43 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Dec 13 13:44:54 2013 +0100
+++ b/ChangeLog	Wed Dec 18 16:23:00 2013 +0100
@@ -1,3 +1,15 @@
+2013-12-17  Jiri Vanek  <jvanek@redhat.com>
+
+	JNLPRuntime.config changed to proper singleton.
+	* netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java: added
+	field with getter rand setter to save loading exception.
+	* netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java: (config) field is no
+	longer initialized in static block, but on demand in (getConfig).
+	(initialize) no longer load (config). (initialize) call to 
+	KeyStores.setConfiguration is using (getConfig) instead (config).
+	(getConfig) is initializing and loading (config), marking exception and sterr
+	it in case of debug on. Made synchronized.
+
 2013-12-13  Jiri Vanek  <jvanek@redhat.com>
 
 	itw itself and unittests warning cleanup: fixed rawtypes, redundant casts and  unchecks, added braces and  Override.
@@ -12,7 +24,7 @@
 	* netx/net/sourceforge/jnlp/controlpanel/CachePane.java
 	* netx/net/sourceforge/jnlp/controlpanel/ControlPanel.java
 	* netx/net/sourceforge/jnlp/controlpanel/DebuggingPanel.java
-	* netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.java
+	* netx/net/sourceforge/jnlp/controlpanel/DesktopShortcutPanel.javaZ
 	* netx/net/sourceforge/jnlp/controlpanel/TemporaryInternetFilesPanel.java
 	* netx/net/sourceforge/jnlp/controlpanel/UnsignedAppletsTrustingListPanel.java
 	* netx/net/sourceforge/jnlp/runtime/AppletEnvironment.java
--- a/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java	Fri Dec 13 13:44:54 2013 +0100
+++ b/netx/net/sourceforge/jnlp/config/DeploymentConfiguration.java	Wed Dec 18 16:23:00 2013 +0100
@@ -167,6 +167,16 @@
      */
     public static final String KEY_PLUGIN_JVM_ARGUMENTS= "deployment.plugin.jvm.arguments";
     public static final String KEY_JRE_DIR= "deployment.jre.dir";
+    private ConfigurationException loadingException = null;
+
+    public void setLoadingException(ConfigurationException ex) {
+        loadingException = ex;
+    }
+
+    public ConfigurationException getLoadingException() {
+        return loadingException;
+    }
+    
 
     public enum ConfigType {
         System, User
--- a/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java	Fri Dec 13 13:44:54 2013 +0100
+++ b/netx/net/sourceforge/jnlp/runtime/JNLPRuntime.java	Wed Dec 18 16:23:00 2013 +0100
@@ -89,7 +89,7 @@
     /** the localized resource strings */
     private static ResourceBundle resources;
 
-    private static final DeploymentConfiguration config = new DeploymentConfiguration();
+    private static DeploymentConfiguration config;
 
     /** the security manager */
     private static JNLPSecurityManager security;
@@ -184,18 +184,13 @@
     public static void initialize(boolean isApplication) throws IllegalStateException {
         checkInitialized();
 
-        try {
-            config.load();
-            config.copyTo(System.getProperties());
-        } catch (ConfigurationException e) {
-            /* exit if there is a fatal exception loading the configuration */
-            if (isApplication) {
+        /* exit if there is a fatal exception loading the configuration */
+        if (isApplication && getConfiguration().getLoadingException() != null) {
                 System.out.println(getMessage("RConfigurationError"));
                 System.exit(1);
-            }
         }
 
-        KeyStores.setConfiguration(config);
+        KeyStores.setConfiguration(getConfiguration());
 
         initializeStreams();
 
@@ -356,10 +351,10 @@
      * duplicating them as required.
      */
     private static void initializeStreams() {
-        Boolean enableLogging = Boolean.valueOf(config
+        Boolean enableLogging = Boolean.valueOf(getConfiguration()
                 .getProperty(DeploymentConfiguration.KEY_ENABLE_LOGGING));
         if (redirectStreams || enableLogging) {
-            String logDir = config.getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR);
+            String logDir = getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_LOG_DIR);
 
             try {
                 File errFile = new File(logDir, JNLPRuntime.STDERR_FILE);
@@ -387,7 +382,20 @@
      * @return a {@link DeploymentConfiguration} object that can be queried to
      * find relevant configuration settings
      */
-    public static DeploymentConfiguration getConfiguration() {
+    public synchronized static DeploymentConfiguration getConfiguration() {
+        if (config == null){
+            config = new DeploymentConfiguration();
+            try{
+                config.load();
+                config.copyTo(System.getProperties());
+            }catch(ConfigurationException ex){
+                if (JNLPRuntime.isDebug()) {
+                    ex.printStackTrace();
+                }
+                //mark this exceptionas we can die on it later
+                config.setLoadingException(ex);
+            }
+        }
         return config;
     }