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();
+ }
+ }
}