You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by oh...@apache.org on 2006/04/23 20:31:03 UTC

svn commit: r396301 - in /jakarta/commons/proper/configuration/trunk: src/java/org/apache/commons/configuration/ConfigurationUtils.java src/test/org/apache/commons/configuration/TestConfigurationUtils.java xdocs/changes.xml

Author: oheger
Date: Sun Apr 23 11:31:01 2006
New Revision: 396301

URL: http://svn.apache.org/viewcvs?rev=396301&view=rev
Log:
Added new method convertToHierarchical() to ConfigurationUtils

Modified:
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationUtils.java
    jakarta/commons/proper/configuration/trunk/xdocs/changes.xml

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java?rev=396301&r1=396300&r2=396301&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/ConfigurationUtils.java Sun Apr 23 11:31:01 2006
@@ -152,6 +152,36 @@
     }
 
     /**
+     * Converts the passed in configuration to a hierarchical one. If the
+     * configuration is already hierarchical, it is directly returned. Otherwise
+     * all properties are copied into a new hierarchical configuration.
+     *
+     * @param conf the configuration to convert
+     * @return the new hierarchical configuration (the result is <b>null</b> if
+     * and only if the passed in configuration is <b>null</b>)
+     * @since 1.3
+     */
+    public static HierarchicalConfiguration convertToHierarchical(
+            Configuration conf)
+    {
+        if (conf == null)
+        {
+            return null;
+        }
+
+        if (conf instanceof HierarchicalConfiguration)
+        {
+            return (HierarchicalConfiguration) conf;
+        }
+        else
+        {
+            HierarchicalConfiguration hc = new HierarchicalConfiguration();
+            ConfigurationUtils.copy(conf, hc);
+            return hc;
+        }
+    }
+
+    /**
      * Constructs a URL from a base path and a file name. The file name can
      * be absolute, relative or a full URL. If necessary the base path URL is
      * applied.

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationUtils.java?rev=396301&r1=396300&r2=396301&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationUtils.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/TestConfigurationUtils.java Sun Apr 23 11:31:01 2006
@@ -19,6 +19,7 @@
 import java.io.File;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
 
 import junit.framework.TestCase;
@@ -197,5 +198,49 @@
         {
             Thread.currentThread().setContextClassLoader(cl);
         }
+    }
+
+    /**
+     * Tests converting a configuration into a hierarchical one.
+     */
+    public void testConvertToHierarchical()
+    {
+        Configuration conf = new BaseConfiguration();
+        for (int i = 0; i < 10; i++)
+        {
+            conf.addProperty("test" + i, "value" + i);
+            conf.addProperty("test.list", "item" + i);
+        }
+
+        HierarchicalConfiguration hc = ConfigurationUtils
+                .convertToHierarchical(conf);
+        for (Iterator it = conf.getKeys(); it.hasNext();)
+        {
+            String key = (String) it.next();
+            assertEquals("Wrong value for key " + key, conf.getProperty(key),
+                    hc.getProperty(key));
+        }
+    }
+
+    /**
+     * Tests converting a configuration into a hierarchical one that is already
+     * hierarchical.
+     */
+    public void testConvertHierarchicalToHierarchical()
+    {
+        Configuration conf = new HierarchicalConfiguration();
+        conf.addProperty("test", "yes");
+        assertSame("Wrong configuration returned", conf, ConfigurationUtils
+                .convertToHierarchical(conf));
+    }
+
+    /**
+     * Tests converting a null configuration to a hierarchical one. The result
+     * should be null, too.
+     */
+    public void testConvertNullToHierarchical()
+    {
+        assertNull("Wrong conversion result for null config",
+                ConfigurationUtils.convertToHierarchical(null));
     }
 }

Modified: jakarta/commons/proper/configuration/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/xdocs/changes.xml?rev=396301&r1=396300&r2=396301&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/xdocs/changes.xml (original)
+++ jakarta/commons/proper/configuration/trunk/xdocs/changes.xml Sun Apr 23 11:31:01 2006
@@ -23,6 +23,11 @@
   <body>
 
     <release version="1.3-SNAPSHOT" date="in SVN">
+      <action dev="oheger" type="add">
+        A new method convertToHierarchical() was added to ConfigurationUtils,
+        which is able to convert an arbitrary configuration object into a
+        hierarchical configuration.
+      </action>
       <action dev="oheger" type="update" issue="39169">
         Loading of file-based configurations no longer throws a NullPointerException
         in setups where the thread context class loader is not set. 



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