You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2010/04/07 16:57:30 UTC

svn commit: r931577 - /portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheConfigResource.java

Author: rwatler
Date: Wed Apr  7 14:57:30 2010
New Revision: 931577

URL: http://svn.apache.org/viewvc?rev=931577&view=rev
Log:
JS2-1077: allow EhCache configuration to be reset during multiple in-process unit test runs

Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheConfigResource.java

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheConfigResource.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheConfigResource.java?rev=931577&r1=931576&r2=931577&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheConfigResource.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-cm/src/main/java/org/apache/jetspeed/cache/impl/EhCacheConfigResource.java Wed Apr  7 14:57:30 2010
@@ -20,15 +20,18 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.Map;
+import java.util.HashMap;
 
 import org.springframework.core.io.AbstractResource;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 import org.springframework.beans.factory.InitializingBean;
 
+import org.apache.jetspeed.components.util.ConfigurationProperties;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.jetspeed.components.util.ConfigurationProperties;
 
 /**
  * EhCacheConfigResource
@@ -69,19 +72,23 @@ public class EhCacheConfigResource exten
     public static final String EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME = "org.apache.jetspeed.ehcache.pagemanager.maxfiles";
     public static final String EHCACHE_PAGE_MANAGER_MAX_FILES_DEFAULT = "1000";
 
+    // Class Members
+    
+    private static Map overrideSystemProperties;
+    
     // Singleton implementation
     
     private static EhCacheConfigResource instance;
     
-    public static EhCacheConfigResource getInstance(final String defaultConfigResource, final boolean test)
+    public static synchronized EhCacheConfigResource getInstance(String defaultConfigResource, boolean test)
     {
-        // construct and return a default instance
-        if ( instance == null)
+        // construct and return a default or new instance
+        if (test || (instance == null))
         {
-            instance = new EhCacheConfigResource();
-            instance.setDefaultConfigResource(defaultConfigResource);
-            instance.setTest(test);
-            instance.afterPropertiesSet();
+            EhCacheConfigResource newInstance = new EhCacheConfigResource();
+            newInstance.setDefaultConfigResource(defaultConfigResource);
+            newInstance.setTest(test);
+            newInstance.afterPropertiesSet();
         }
         return instance;
     }
@@ -109,101 +116,174 @@ public class EhCacheConfigResource exten
      */
     public void afterPropertiesSet()
     {
-        // copy specified configuration settings
-        if (configuration != null)
-        {
-            if (configuration.getString(EHCACHE_CONFIG_RESOURCE_PROP_NAME) != null)
-            {
-                defaultConfigResource = configuration.getString(EHCACHE_CONFIG_RESOURCE_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_GROUP_ADDRESS_PROP_NAME) != null)
-            {
-                defaultGroupAddress = configuration.getString(EHCACHE_GROUP_ADDRESS_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_GROUP_PORT_PROP_NAME) != null)
-            {
-                defaultGroupPort = configuration.getString(EHCACHE_GROUP_PORT_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_GROUP_TTL_PROP_NAME) != null)
-            {
-                defaultGroupTTL = configuration.getString(EHCACHE_GROUP_TTL_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_HOSTNAME_PROP_NAME) != null)
-            {
-                defaultHostname = configuration.getString(EHCACHE_HOSTNAME_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_PORT_PROP_NAME) != null)
-            {
-                defaultPort = configuration.getString(EHCACHE_PORT_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME) != null)
-            {
-                defaultPageManagerMaxElements = configuration.getString(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME) != null)
-            {
-                defaultPageManagerElementTTL = configuration.getString(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME);
-            }
-            if (configuration.getString(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME) != null)
-            {
-                defaultPageManagerMaxFiles = configuration.getString(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME);
-            }
-        }
-        
-        // set system properties used in global cache configuration
-        if (System.getProperty(EHCACHE_CONFIG_RESOURCE_PROP_NAME) == null)
-        {
-            System.setProperty(EHCACHE_CONFIG_RESOURCE_PROP_NAME, ((defaultConfigResource != null) ? defaultConfigResource : EHCACHE_CONFIG_RESOURCE_DEFAULT));
-        }
-        if (System.getProperty(EHCACHE_GROUP_ADDRESS_PROP_NAME) == null)
-        {
-            System.setProperty(EHCACHE_GROUP_ADDRESS_PROP_NAME, ((defaultGroupAddress != null) ? defaultGroupAddress : EHCACHE_GROUP_ADDRESS_DEFAULT));
-        }
-        if (System.getProperty(EHCACHE_GROUP_PORT_PROP_NAME) == null)
-        {
-            System.setProperty(EHCACHE_GROUP_PORT_PROP_NAME, ((defaultGroupPort != null) ? defaultGroupPort : EHCACHE_GROUP_PORT_DEFAULT));
-        }
-        if (System.getProperty(EHCACHE_GROUP_TTL_PROP_NAME) == null)
-        {
-            System.setProperty(EHCACHE_GROUP_TTL_PROP_NAME, ((defaultGroupTTL != null) ? defaultGroupTTL : (test ? EHCACHE_GROUP_TTL_TEST_DEFAULT : EHCACHE_GROUP_TTL_DEFAULT)));
-        }
-        if (System.getProperty(EHCACHE_HOSTNAME_PROP_NAME) == null)
-        {
-            System.setProperty(EHCACHE_HOSTNAME_PROP_NAME, ((defaultHostname != null) ? defaultHostname : (test ? EHCACHE_HOSTNAME_TEST_DEFAULT : EHCACHE_HOSTNAME_DEFAULT)));
-        }
-        if (System.getProperty(EHCACHE_PORT_PROP_NAME) == null)
+        synchronized (EhCacheConfigResource.class)
         {
-            System.setProperty(EHCACHE_PORT_PROP_NAME, ((defaultPort != null) ? defaultPort : EHCACHE_PORT_DEFAULT));
-        }
-        
-        // set system properties used in page manager cache configuration
-        if (System.getProperty(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME) == null)
-        {
-            String pageManagerMaxElements = ((defaultPageManagerMaxElements != null) ? defaultPageManagerMaxElements : System.getProperty(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_LEGACY_PROP_NAME, EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_DEFAULT));
-            if ((pageManagerMaxElements != null) && (Integer.parseInt(pageManagerMaxElements) < 0))
-            {
-                pageManagerMaxElements = EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_DEFAULT;
-            }
-            System.setProperty(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME, pageManagerMaxElements);
-        }
-        if (System.getProperty(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME) == null)
-        {
-            String pageManagerElementTTL = ((defaultPageManagerElementTTL != null) ? defaultPageManagerElementTTL : System.getProperty(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_LEGACY_PROP_NAME, EHCACHE_PAGE_MANAGER_ELEMENT_TTL_DEFAULT));
-            if ((pageManagerElementTTL != null) && (Integer.parseInt(pageManagerElementTTL) < 0))
+            // copy specified configuration settings
+            if (configuration != null)
             {
-                pageManagerElementTTL = EHCACHE_PAGE_MANAGER_ELEMENT_TTL_DEFAULT;
-            }
-            System.setProperty(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME, pageManagerElementTTL);
-        }
-        if (System.getProperty(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME) == null)
-        {
-            System.setProperty(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME, ((defaultPageManagerMaxFiles != null) ? defaultPageManagerMaxFiles : System.getProperty(EHCACHE_PAGE_MANAGER_MAX_FILES_LEGACY_PROP_NAME, EHCACHE_PAGE_MANAGER_MAX_FILES_DEFAULT)));
-        }
+                if (configuration.getString(EHCACHE_CONFIG_RESOURCE_PROP_NAME) != null)
+                {
+                    defaultConfigResource = configuration.getString(EHCACHE_CONFIG_RESOURCE_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_GROUP_ADDRESS_PROP_NAME) != null)
+                {
+                    defaultGroupAddress = configuration.getString(EHCACHE_GROUP_ADDRESS_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_GROUP_PORT_PROP_NAME) != null)
+                {
+                    defaultGroupPort = configuration.getString(EHCACHE_GROUP_PORT_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_GROUP_TTL_PROP_NAME) != null)
+                {
+                    defaultGroupTTL = configuration.getString(EHCACHE_GROUP_TTL_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_HOSTNAME_PROP_NAME) != null)
+                {
+                    defaultHostname = configuration.getString(EHCACHE_HOSTNAME_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_PORT_PROP_NAME) != null)
+                {
+                    defaultPort = configuration.getString(EHCACHE_PORT_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME) != null)
+                {
+                    defaultPageManagerMaxElements = configuration.getString(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME) != null)
+                {
+                    defaultPageManagerElementTTL = configuration.getString(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME);
+                }
+                if (configuration.getString(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME) != null)
+                {
+                    defaultPageManagerMaxFiles = configuration.getString(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME);
+                }
+            }
+
+            // save override system properties
+            if (overrideSystemProperties == null)
+            {
+                overrideSystemProperties = new HashMap();
+                String overrideConfigResource = System.getProperty(EHCACHE_CONFIG_RESOURCE_PROP_NAME);
+                if (overrideConfigResource != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_CONFIG_RESOURCE_PROP_NAME, overrideConfigResource);
+                }
+                String overrideGroupAddress = System.getProperty(EHCACHE_GROUP_ADDRESS_PROP_NAME);
+                if (overrideGroupAddress != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_GROUP_ADDRESS_PROP_NAME, overrideGroupAddress);
+                }
+                String overrideGroupPort = System.getProperty(EHCACHE_GROUP_PORT_PROP_NAME);
+                if (overrideGroupPort != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_GROUP_PORT_PROP_NAME, overrideGroupPort);
+                }
+                String overrideGroupTTL = System.getProperty(EHCACHE_GROUP_TTL_PROP_NAME);
+                if (overrideGroupTTL != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_GROUP_TTL_PROP_NAME, overrideGroupTTL);
+                }
+                String overrideHostname = System.getProperty(EHCACHE_HOSTNAME_PROP_NAME);
+                if (overrideHostname != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_HOSTNAME_PROP_NAME, overrideHostname);
+                }
+                String overridePort = System.getProperty(EHCACHE_PORT_PROP_NAME);
+                if (overridePort != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_PORT_PROP_NAME, overridePort);
+                }
+                String overridePageManagerMaxElements = System.getProperty(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME);
+                if (overridePageManagerMaxElements != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME, overridePageManagerMaxElements);
+                }
+                String overridePageManagerElementTTL = System.getProperty(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME);
+                if (overridePageManagerElementTTL != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME, overridePageManagerElementTTL);
+                }
+                String overridePageManagerMaxFiles = System.getProperty(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME);
+                if (overridePageManagerMaxFiles != null)
+                {
+                    overrideSystemProperties.put(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME, overridePageManagerMaxFiles);
+                }
+            }
+            
+            // set system properties used in global cache configuration
+            String setConfigResource = (String)overrideSystemProperties.get(EHCACHE_CONFIG_RESOURCE_PROP_NAME);
+            if (setConfigResource == null)
+            {
+                setConfigResource = ((defaultConfigResource != null) ? defaultConfigResource : EHCACHE_CONFIG_RESOURCE_DEFAULT);
+            }
+            System.setProperty(EHCACHE_CONFIG_RESOURCE_PROP_NAME, setConfigResource);
+            String setGroupAddress = (String)overrideSystemProperties.get(EHCACHE_GROUP_ADDRESS_PROP_NAME);
+            if (setGroupAddress == null)
+            {
+                setGroupAddress = ((defaultGroupAddress != null) ? defaultGroupAddress : EHCACHE_GROUP_ADDRESS_DEFAULT);
+            }
+            System.setProperty(EHCACHE_GROUP_ADDRESS_PROP_NAME, setGroupAddress);
+            String setGroupPort = (String)overrideSystemProperties.get(EHCACHE_GROUP_PORT_PROP_NAME);
+            if (setGroupPort == null)
+            {
+                setGroupPort = ((defaultGroupPort != null) ? defaultGroupPort : EHCACHE_GROUP_PORT_DEFAULT);
+            }
+            System.setProperty(EHCACHE_GROUP_PORT_PROP_NAME, setGroupPort);
+            String setGroupTTL = (String)overrideSystemProperties.get(EHCACHE_GROUP_TTL_PROP_NAME);
+            if (setGroupTTL == null)
+            {
+                setGroupTTL = ((defaultGroupTTL != null) ? defaultGroupTTL : (test ? EHCACHE_GROUP_TTL_TEST_DEFAULT : EHCACHE_GROUP_TTL_DEFAULT));
+            }
+            System.setProperty(EHCACHE_GROUP_TTL_PROP_NAME, setGroupTTL);
+            String setHostname = (String)overrideSystemProperties.get(EHCACHE_HOSTNAME_PROP_NAME);
+            if (setHostname == null)
+            {
+                setHostname = ((defaultHostname != null) ? defaultHostname : (test ? EHCACHE_HOSTNAME_TEST_DEFAULT : EHCACHE_HOSTNAME_DEFAULT));
+            }
+            System.setProperty(EHCACHE_HOSTNAME_PROP_NAME, setHostname);
+            String setPort = (String)overrideSystemProperties.get(EHCACHE_PORT_PROP_NAME);
+            if (setPort == null)
+            {
+                setPort = ((defaultPort != null) ? defaultPort : EHCACHE_PORT_DEFAULT);
+            }
+            System.setProperty(EHCACHE_PORT_PROP_NAME, setPort);
+
+            // set system properties used in page manager cache configuration
+            String setPageManagerMaxElements = (String)overrideSystemProperties.get(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME);
+            if (setPageManagerMaxElements == null)
+            {
+                setPageManagerMaxElements = ((defaultPageManagerMaxElements != null) ? defaultPageManagerMaxElements : System.getProperty(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_LEGACY_PROP_NAME, EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_DEFAULT));
+                if ((setPageManagerMaxElements != null) && (Integer.parseInt(setPageManagerMaxElements) < 0))
+                {
+                    setPageManagerMaxElements = EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_DEFAULT;
+                }
+            }
+            System.setProperty(EHCACHE_PAGE_MANAGER_MAX_ELEMENTS_PROP_NAME, setPageManagerMaxElements);
+            String setPageManagerElementTTL = (String)overrideSystemProperties.get(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME);
+            if (setPageManagerElementTTL == null)
+            {
+                setPageManagerElementTTL = ((defaultPageManagerElementTTL != null) ? defaultPageManagerElementTTL : System.getProperty(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_LEGACY_PROP_NAME, EHCACHE_PAGE_MANAGER_ELEMENT_TTL_DEFAULT));
+                if ((setPageManagerElementTTL != null) && (Integer.parseInt(setPageManagerElementTTL) < 0))
+                {
+                    setPageManagerElementTTL = EHCACHE_PAGE_MANAGER_ELEMENT_TTL_DEFAULT;
+                }
+            }
+            System.setProperty(EHCACHE_PAGE_MANAGER_ELEMENT_TTL_PROP_NAME, setPageManagerElementTTL);
+            String setPageManagerMaxFiles = (String)overrideSystemProperties.get(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME);
+            if (setPageManagerMaxFiles == null)
+            {
+                setPageManagerMaxFiles = ((defaultPageManagerMaxFiles != null) ? defaultPageManagerMaxFiles : System.getProperty(EHCACHE_PAGE_MANAGER_MAX_FILES_LEGACY_PROP_NAME, EHCACHE_PAGE_MANAGER_MAX_FILES_DEFAULT));
+            }
+            System.setProperty(EHCACHE_PAGE_MANAGER_MAX_FILES_PROP_NAME, setPageManagerMaxFiles);
+
+            // setup delegate ClassPathResource
+            String configResource = System.getProperty(EHCACHE_CONFIG_RESOURCE_PROP_NAME);
+            log.info("Configured with resource: "+configResource);
+            classPathResource = new ClassPathResource(configResource);
 
-        // setup delegate ClassPathResource
-        final String configResource = System.getProperty(EHCACHE_CONFIG_RESOURCE_PROP_NAME);
-        log.info("Configured with resource: "+configResource);
-        classPathResource = new ClassPathResource(configResource);
+            // save global instance
+            instance = this;
+        }
     }
     
     // AbstractResource implementation



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org