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>&lt;system&gt;</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>


Reply via email to