Author: gk
Date: Mon Sep  8 14:54:26 2014
New Revision: 1623418

URL: http://svn.apache.org/r1623418
Log:
- Upgrade to Commons Configuration Version 1.10.
- Loading mechanism: 
  Using more URL-like basepath and checking for RFC2396 conformant file path 
component.
  Added a Test for extended configuration using ConfigurationBuilder.xml

Modified:
    turbine/core/trunk/pom.xml
    turbine/core/trunk/src/java/org/apache/turbine/Turbine.java
    turbine/core/trunk/src/test/org/apache/turbine/ConfigurationTest.java

Modified: turbine/core/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/pom.xml?rev=1623418&r1=1623417&r2=1623418&view=diff
==============================================================================
--- turbine/core/trunk/pom.xml (original)
+++ turbine/core/trunk/pom.xml Mon Sep  8 14:54:26 2014
@@ -816,7 +816,7 @@
     <dependency>
       <groupId>commons-configuration</groupId>
       <artifactId>commons-configuration</artifactId>
-      <version>1.9</version>
+      <version>1.10</version>
       <type>jar</type>
     </dependency>
     <dependency>

Modified: turbine/core/trunk/src/java/org/apache/turbine/Turbine.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/Turbine.java?rev=1623418&r1=1623417&r2=1623418&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/Turbine.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/Turbine.java Mon Sep  8 
14:54:26 2014
@@ -128,10 +128,10 @@ public class Turbine
      */
     private static boolean firstInit = true;
 
-       /**
-        * The pipeline to use when processing requests.
-        */
-       private static Pipeline pipeline = null;
+    /**
+     * The pipeline to use when processing requests.
+     */
+    private static Pipeline pipeline = null;
 
     /** Whether init succeeded or not. */
     private static Throwable initFailure = null;
@@ -295,44 +295,59 @@ public class Turbine
         // /WEB-INF/conf/TurbineResources.properties relative to the
         // web application root.
 
+        String confStyle = "unset";
+        String confPath= null;
+        // first test
         String confFile= findInitParameter(context, config,
                 TurbineConfig.CONFIGURATION_PATH_KEY,
                 null);
-
-        String confPath;
-        String confStyle = "unset";
-
         if (StringUtils.isNotEmpty(confFile))
         {
-            confPath = getRealPath(confFile);
-            DefaultConfigurationBuilder configurationBuilder = new 
DefaultConfigurationBuilder(confFile);
-            
configurationBuilder.setBasePath(getRealPath(getApplicationRoot()));
-            configuration = configurationBuilder.getConfiguration();
-            confStyle = "XML";
-        }
-        else
+            confStyle = "XML"; 
+        } else // // second test
         {
             confFile = findInitParameter(context, config,
                     TurbineConfig.PROPERTIES_PATH_KEY,
+                                         null); 
+            if (StringUtils.isNotEmpty((confFile)) ) 
+            {
+                confStyle = "Properties";
+            }
+        }
+        // more tests ..
+        // last test
+        if (confStyle.equals( "unset" )) 
+        {  // last resort
+             confFile = findInitParameter(context, config,
+                    TurbineConfig.PROPERTIES_PATH_KEY,
                     TurbineConfig.PROPERTIES_PATH_DEFAULT);
-
-            confPath = getRealPath(confFile);
-
-            // This should eventually be a Configuration
-            // interface so that service and app configuration
-            // can be stored anywhere.
-            configuration = new PropertiesConfiguration(confPath);
-            confStyle = "Properties";
+             confStyle = "Properties";
+        }
+        // now begin loading
+        if (!confStyle.equals( "unset" )) 
+        {
+             if (confStyle.equals( "XML" )) {
+                 if (confFile.startsWith( "/" )) 
+                 {
+                     confFile = confFile.substring( 1 ); // cft. RFC2396 
should not start with a slash, if not absolute path
+                 }
+                 DefaultConfigurationBuilder configurationBuilder = new 
DefaultConfigurationBuilder(confFile);
+                 confPath = new File(applicationRoot).toURI().toString();// 
relative base path used for this and child configuration files 
+                 configurationBuilder.setBasePath(confPath);
+                 configuration = configurationBuilder.getConfiguration();
+             } else {
+                 confPath = getRealPath(confFile);
+                 
//configurationBuilder.setBasePath(getRealPath(getApplicationRoot()));
+                 configuration = new PropertiesConfiguration(confPath);
+             }
         }
-
-
         //
         // Set up logging as soon as possible
         //
         configureLogging();
 
         // Now report our successful configuration to the world
-        log.info("Loaded configuration  (" + confStyle + ") from " + confFile 
+ " (" + confPath + ")");
+        log.info("Loaded configuration  (" + confStyle + ") from " + confFile 
+ " (" + confPath + ") style: "+ configuration.toString());
 
         setTurbineServletConfig(config);
         setTurbineServletContext(context);

Modified: turbine/core/trunk/src/test/org/apache/turbine/ConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/test/org/apache/turbine/ConfigurationTest.java?rev=1623418&r1=1623417&r2=1623418&view=diff
==============================================================================
--- turbine/core/trunk/src/test/org/apache/turbine/ConfigurationTest.java 
(original)
+++ turbine/core/trunk/src/test/org/apache/turbine/ConfigurationTest.java Mon 
Sep  8 14:54:26 2014
@@ -24,8 +24,13 @@ package org.apache.turbine;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.File;
+import java.net.URL;
 
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.FileSystem;
 import org.apache.turbine.test.BaseTestCase;
 import org.apache.turbine.util.TurbineConfig;
 import org.apache.turbine.util.TurbineXmlConfig;
@@ -107,5 +112,55 @@ public class ConfigurationTest extends B
             tc.dispose();
         }
     }
+    
+    @Test
+    public void testCreateTurbineWithXMLBuilderConfiguration() throws Exception
+    {
+        String configurationRessourcePath 
="conf/test/ConfigurationBuilder.xml"; 
+        tc = new TurbineXmlConfig(".",configurationRessourcePath );
+
+        try
+        {
+            tc.initialize();
+
+            Configuration configuration = Turbine.getConfiguration();
+            assertNotNull("No Configuration Object found!", configuration);
+            assertFalse("Make sure we have values", configuration.isEmpty());
+            
+            //assertTrue("Test  combined configuration is"+ configuration, 
configuration instanceof CombinedConfiguration);
+
+            // overridden value
+            String key = "scheduledjob.cache.size";
+            assertEquals("Read a config value " + key + ", received:" + 
configuration.getInt(key), 100, configuration.getInt(key));
+            
+            // double overridden value
+            key = "module.cache";
+            assertEquals("Read a config value " + key + ", received:" + 
configuration.getBoolean(key), false, configuration.getBoolean(key));
+            // new property
+            key = "tests.test";
+            configuration.addProperty( key, 123 );
+            assertEquals("Read a config value " + key + ", received:" + 
configuration.getInt(key), 123, configuration.getInt(key));
+            // not set
+            key="test.nulltest3";
+            assertEquals("Read a included config value " + key + ", received:" 
+ configuration.getString(key), null, configuration.getString(key));
+            // overridden value
+            key="services.PullService.earlyInit";
+            assertEquals("Read a config value " + key + ", received:" + 
configuration.getBoolean(key), true, configuration.getBoolean(key));
+            configuration.setProperty( key, false );
+            assertEquals("Read a config value " + key + ", received:" + 
configuration.getBoolean(key), false, configuration.getBoolean(key));
+            
+            // converts to URL, cft. RFC2396
+            URL testURL = FileSystem.getDefaultFileSystem().locateFromURL(new 
File( Turbine.getApplicationRoot()).toURI().toString() , 
configurationRessourcePath);
+            assertNotNull( "Should be a valid URL",testURL);
+        }
+        catch (Exception e)
+        {
+            throw e;
+        }
+        finally
+        {
+            tc.dispose();
+        }
+    }
 
 }


Reply via email to