Author: oheger
Date: Thu Apr 21 19:47:11 2011
New Revision: 1095800
URL: http://svn.apache.org/viewvc?rev=1095800&view=rev
Log:
[CONFIGURATION-447] Added support for environment properties to
DefaultConfigurationBuilder. Ported fix to configuration2 branch.
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/changes/changes.xml
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/DefaultConfigurationBuilder.java
commons/proper/configuration/branches/configuration2_experimental/src/site/xdoc/userguide/howto_configurationbuilder.xml
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestDefaultConfigurationBuilder.java
commons/proper/configuration/branches/configuration2_experimental/src/test/resources/testDigesterConfiguration3.xml
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/changes/changes.xml
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/changes/changes.xml?rev=1095800&r1=1095799&r2=1095800&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/src/changes/changes.xml
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/src/changes/changes.xml
Thu Apr 21 19:47:11 2011
@@ -79,6 +79,10 @@
</release>
<release version="1.7" date="in SVN" description="">
+ <action dev="oheger" type="add" issue="CONFIGURATION-447">
+ DefaultConfigurationBuilder now supports including environment
properties
+ using the "env" tag.
+ </action>
<action dev="oheger" type="update" issue="CONFIGURATION-446">
XMLConfiguration now handles attributes correctly whose value is an
empty string.
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/DefaultConfigurationBuilder.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/DefaultConfigurationBuilder.java?rev=1095800&r1=1095799&r2=1095800&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/DefaultConfigurationBuilder.java
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/DefaultConfigurationBuilder.java
Thu Apr 21 19:47:11 2011
@@ -399,6 +399,10 @@ public class DefaultConfigurationBuilder
private static final ConfigurationProvider INI_PROVIDER =
new FileConfigurationProvider(INIConfiguration.class);
+ /** Constant for the provider for environment properties. */
+ private static final ConfigurationProvider ENV_PROVIDER =
+ new ConfigurationProvider(EnvironmentConfiguration.class);
+
/** Constant for the provider for plist files. */
private static final ConfigurationProvider PLIST_PROVIDER = new
FileExtensionConfigurationProvider(
"org.apache.commons.configuration2.plist.XMLPropertyListConfiguration",
@@ -411,13 +415,13 @@ public class DefaultConfigurationBuilder
/** An array with the names of the default tags. */
private static final String[] DEFAULT_TAGS =
{"properties", "xml", "hierarchicalXml", "jndi", "system", "environment",
- "plist", "configuration", "database", "ini"};
+ "plist", "configuration", "database", "ini", "env"};
/** An array with the providers for the default tags. */
private static final ConfigurationProvider[] DEFAULT_PROVIDERS =
{PROPERTIES_PROVIDER, XML_PROVIDER, XML_PROVIDER, JNDI_PROVIDER,
SYSTEM_PROVIDER, ENVIRONMENT_PROVIDER, PLIST_PROVIDER,
BUILDER_PROVIDER,
- DATABASE_PROVIDER, INI_PROVIDER};
+ DATABASE_PROVIDER, INI_PROVIDER, ENV_PROVIDER};
/**
* The serial version UID.
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/site/xdoc/userguide/howto_configurationbuilder.xml
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/site/xdoc/userguide/howto_configurationbuilder.xml?rev=1095800&r1=1095799&r2=1095800&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/src/site/xdoc/userguide/howto_configurationbuilder.xml
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/src/site/xdoc/userguide/howto_configurationbuilder.xml
Thu Apr 21 19:47:11 2011
@@ -164,6 +164,10 @@
combined configuration. Behind the scenes an instance of
<code><a
href="../apidocs/org/apache/commons/configuration/INIConfiguration.html">
INIConfiguration</a></code> is used to load the ini file.</dd>
+ <dt>env</dt>
+ <dd>With this tag direct access to environment properties can be
enabled.
+ This works in the same way as the <code><system></code> tag for
+ Java system properties.</dd>
</dl>
</p>
<p>
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestDefaultConfigurationBuilder.java
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestDefaultConfigurationBuilder.java?rev=1095800&r1=1095799&r2=1095800&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestDefaultConfigurationBuilder.java
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestDefaultConfigurationBuilder.java
Thu Apr 21 19:47:11 2011
@@ -25,6 +25,7 @@ import java.lang.reflect.Proxy;
import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -676,6 +677,16 @@ public class TestDefaultConfigurationBui
// test INIConfiguration
assertEquals("Property from ini file not found", "yes",
config.getString("testini.loaded"));
+
+ // test environment configuration
+ EnvironmentConfiguration envConf = new EnvironmentConfiguration();
+ for (Iterator<String> it = envConf.getKeys(); it.hasNext();)
+ {
+ String key = it.next();
+ String combinedKey = "env." + key;
+ assertEquals("Wrong value for env property " + key,
+ envConf.getString(key), config.getString(combinedKey));
+ }
}
/**
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/test/resources/testDigesterConfiguration3.xml
URL:
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/resources/testDigesterConfiguration3.xml?rev=1095800&r1=1095799&r2=1095800&view=diff
==============================================================================
---
commons/proper/configuration/branches/configuration2_experimental/src/test/resources/testDigesterConfiguration3.xml
(original)
+++
commons/proper/configuration/branches/configuration2_experimental/src/test/resources/testDigesterConfiguration3.xml
Thu Apr 21 19:47:11 2011
@@ -10,5 +10,6 @@
<properties fileName="testDigesterConfigurationInclude2.properties"
at="mail"/>
<jndi prefix=""/>
<ini fileName="test.ini"/>
+ <env at="env"/>
</additional>
</configuration>