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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]