[CONFIGURATION-784] Javadoc improvements.

Adapted description in changes.xml.
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2407e6a..a897329 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -1,2634 +1,2634 @@
-<?xml version="1.0"?>

-<!--

-   Licensed to the Apache Software Foundation (ASF) under one or more

-   contributor license agreements.  See the NOTICE file distributed with

-   this work for additional information regarding copyright ownership.

-   The ASF licenses this file to You under the Apache License, Version 2.0

-   (the "License"); you may not use this file except in compliance with

-   the License.  You may obtain a copy of the License at

-

-       http://www.apache.org/licenses/LICENSE-2.0

-

-   Unless required by applicable law or agreed to in writing, software

-   distributed under the License is distributed on an "AS IS" BASIS,

-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-   See the License for the specific language governing permissions and

-   limitations under the License.

--->

-<document>

-  <properties>

-    <title>Apache Commons Configuration Release Notes</title>

-    <author email="dev@commons.apache.org">Apache Commons Community</author>

-  </properties>

-

-  <body>

-    <release version="2.7" date="2019-MM-DD"

-             description="Minor release with new features and updated dependencies.">

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-761" due-to="Gary Gregory">

-        Single argument DataConfiguration APIs always create empty arrays.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-762" due-to="Gary Gregory">

-        Use variable arguments.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Update ]com.puppycrawl.tools:checkstyle from 8.24 to  8.25.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-763" due-to="Gary Gregory">

-        Update com.fasterxml.jackson.core:jackson-databind from 2.9.9 to 2.10.0.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-765" due-to="Gary Gregory">

-        Refactor XMLConfiguration.write(Writer) to add XMLConfiguration.write(Writer, Transformer).

-      </action>

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-767" due-to="Gary Gregory">

-        NullPointerException in XMLConfiguration#createTransformer() when no FileLocator is set.

-      </action>

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-768" due-to="Gary Gregory">

-        XMLConfiguration#write does not indent XML elements.

-      </action>

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-771" due-to="Gary Gregory">

-        Update com.fasterxml.jackson.core:jackson-databind 2.10.0 -> 2.10.1.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        [test] org.easymock:easymock 4.0.2 -> 4.1.

-      </action>

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-773" due-to="Dan Dragut">

-        User's Guide &gt; Properties files &gt; Saving - small documentation bugs #41.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-775" due-to="Gary Gregory">

-        Update Apache Commons VFS from 2.4.1 to 2.5.0.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-777" due-to="Gary Gregory">

-        Update Apache Commons VFS from 2.5.0 to 2.6.0.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-778" due-to="Gary Gregory">

-        Update optional Apache Commons Codec from 1.13 to 1.14.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Update tests from JUnit 4.12 to 4.13.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-779" due-to="Gary Gregory">

-        Update optional jackson-databind from 2.10.1 to 2.10.2.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-783" due-to="Gary Gregory">

-        Update com.fasterxml.jackson.core:jackson-databind from 2.10.2 to 2.10.3.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-784" due-to="Gary Gregory">

-        Update org.yaml:snakeyaml from 1.25 to 1.26.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-785" due-to="Gary Gregory">

-        Update org.springframework:spring-* from 4.3.25.RELEASE to 4.3.26.RELEASE.

-      </action>

-    </release>

-    

-    <release version="2.6" date="2019-09-13"

-             description="Minor release with new features and updated dependencies.">

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-750" due-to="Jason Pickens, Gary Gregory, Emmanuel Bourg">

-        XMLPropertyListConfiguration cannot set arrays in the correct plist form.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-751" due-to="Gary Gregory">

-        Update Apache Commons Text from 1.6 to 1.7.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-752" due-to="Gary Gregory">

-        Update Apache Commons VFS from 2.3 to 2.4.1.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-754" due-to="Gary Gregory">

-        Update Apache Commons Text from 1.7 to 1.8.

-      </action>

-      <action dev="ggregory" type="fix" due-to="Gary Gregory">

-        Fix Javadoc for org.apache.commons.configuration2.PropertiesConfiguration.getIncludeOptional().

-      </action>

-      <action dev="ggregory" type="add" due-to="Gary Gregory">

-        Document "includeOptional" on the site.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-755" due-to="Gary Gregory">

-        [CVE-2014-0114] Update Apache Commons BeanUtils from 1.9.3 to 1.9.4.

-      </action>

-      <action dev="ggregory" type="update" due-to="Kevin Wang">

-        Fix syntax in user guide documentation #33.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-756" due-to="Gary Gregory">

-        Allow for custom behavior to handle errors loading included properties files.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-757" due-to="Gary Gregory">

-        Update org.yaml:snakeyaml from 1.24 to 1.25.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Update tests from org.apache.commons:commons-dbcp2 2.6.0 to 2.7.0.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Update tests from org.apache.commons:commons-pool2 2.6.2 to 2.7.0.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-758" due-to="Gary Gregory">

-        Update commons-codec:commons-codec from 1.12 to 1.13.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Update tests from org.hsqldb:hsqldb 2.4.1 to 2.5.0.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Update tests from com.sun.mail:mailapi 1.6.3 to 1.6.4.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-759" due-to="Gary Gregory">

-        Update Spring from 4.3.24.RELEASE to 4.3.25.RELEASE.

-      </action>

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-760" due-to="Gary Gregory">

-        Properties file using cyclical includes cause a StackOverflowError instead of detecting the misconfiguration.

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Update maven-checkstyle-plugin from 3.0.0 to 3.1.0. 

-      </action>

-      <action dev="ggregory" type="update" due-to="Gary Gregory">

-        Use current version of Checkstyle: 6.18 to 8.24.

-      </action>

-    </release>

-    <release version="2.5" date="2019-05-23"

-             description="Minor release with new features and updated dependencies.">

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-731" due-to="Shuai Zhang, Gary Gregory">

-        Allow user to specify the comments and separator chars.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-738" due-to="Gary Gregory">

-        Update Jackson from 2.9.7 to 2.9.8.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-739" due-to="Gary Gregory">

-        Update Apache Commons Codec from 1.11 to 1.12.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-740" due-to="Gary Gregory">

-        Update Apache Commons VFS from 2.2 to 2.3.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-741" due-to="Gary Gregory">

-        Update Spring from 4.3.19 to 4.3.22.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-743" due-to="Gary Gregory">

-        Update optional library snakeyaml from 1.23 to 1.24.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-747" due-to="Gary Gregory">

-        Update Apache Commons Lang from 3.8.1 to 3.9.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-746" due-to="Gary Gregory">

-        Update Jackson from 2.9.8 to 2.9.9.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-747" due-to="Gary Gregory">

-        Update Spring from 4.3.22 to 4.3.24.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-745" due-to="Gary Gregory">

-        Add the special key "includeoptional" for properties files.

-      </action>

-    </release>

-    <release version="2.4" date="2018-10-23"

-             description="Minor release with new features and updated dependencies.">

-      <action dev="oheger" type="fix" issue="CONFIGURATION-710" due-to="thc202">

-        Fixed numerous typos in user guides.

-      </action>

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-711">

-        Update Apache Commons Lang from 3.7 to 3.8.1.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-712" due-to="Rolland Hobbie">

-        FileHandlerReloadingDetector now has a new refresh() method to

-        initialize the reloading state from the underlying file. This new

-        method is called by DefaultReloadingDetectorFactory when a new detector

-        instance is created. This makes sure that a changed configuration file

-        is directly detected on the first invocation of the

-        isReloadingRequired() method.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-713" due-to="Lars W">

-        Configuration properties can now be converted to regular expressions.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-715" due-to="Patrick Schmidt">

-        With JupIOFactory a new IOFactory implementation is now available that

-        implements handling of whitespace in a way closer to java.util.Properties.

-        This class can be used when stricter compatibility with Java standard

-        methods for reading and writing properties files is needed.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-716" due-to="Patrick Schmidt">

-        JupIOFactory (introduced for CONFIGURATION-715) also implements

-        handling of escape sequences in a way closer to java.util.Properties.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-720">

-        Replace use of deprecated Commons Lang string substitution code for Commons Text.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-694">

-        Update Java requirement from version 7 to 8.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-721">

-        Update Jackson from 2.9.6 to 2.9.7.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-722">

-        Update optional dependency snakeyaml from 1.21 to 1.23.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-723">

-        Update optional Spring dependencies from 4.3.18.RELEASE to 4.3.19.RELEASE.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-724">

-        Add support for Commons Text 1.4 localhost string lookup as a default lookup.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-725">

-        Update Apache Commons Text from 1.4 to 1.5.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-726">

-        Add support for Commons Text 1.5 new string lookups as default lookups.

-      </action>

-      <action dev="ggregory" type="fix" issue="CONFIGURATION-727">

-        org.apache.commons.configuration2.DatabaseConfiguration never closes result sets and statements.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-728">

-        Update Apache Commons Text from 1.5 to 1.6.

-      </action>

-    </release>

-

-    <release version="2.3" date="2018-08-04"

-             description="Minor release with new features and updated dependencies.">

-      <action dev="ggregory" type="update" issue="CONFIGURATION-707">

-        Update Spring from 4.3.14.RELEASE to 4.3.18.RELEASE.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-706">

-        Update optional dependency snakeyaml from 1.20 to 1.21.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-705">

-        Update Jackson from 2.9.5 to 2.9.6.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-652" due-to="Claude Warren">

-        Root node attributes are now updated correctly when loading XML

-        configuration files.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-675">

-        Added a .gitignore file to the project.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-678">

-        Update Apache Commons Codec from 1.10 to 1.11.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-679">

-        Update Jackson from 2.8.9 to 2.9.3.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-680">

-        Update Apache Commons Lang from 3.6 to 3.7.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-681">

-        Update Apache Commons VFS from 2.1 to 2.2.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-682">

-        Update Snakeyaml from 1.18 to 1.19.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-696">

-        Update optional dependency snakeyaml from 1.19 to 1.20.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-683">

-        Update Spring from 4.3.9.RELEASE to 4.3.13.RELEASE.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-695">

-        Update optional dependency Jackson from 2.9.3 to 2.9.5.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-697">

-        Update optional dependency Spring from 4.3.13.RELEASE to 4.3.14.RELEASE.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-686">

-        JSONConfiguration can now handle list structures with complex objects

-        as elements.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-687">

-        Fixed a memory leak in CombinedConfigurationBuilder. Builder for the

-        child sources were created each time a new result configuration was

-        requested; thus the list with child builders got longer and longer.

-        This also had an impact on reloading because unnecessary reloading

-        operations could be triggered. Now it is guaranteed that child builders

-        are created only once.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-688">

-        Fixed a bug related to the handling of multiple include files in

-        PropertiesConfiguration.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-690">

-        ExprLookup.getVariables() no longer returns null, but a copy of the

-        current variables of this lookup object.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-691">

-        ExprLookup now handles expressions that do not return a string result

-        by converting them to string.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-692">

-        ConversionExceptions thrown when accessing the properties of a

-        configuration now contain the original cause of the exception.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-693" due-to="Lars W">

-        Configuration properties can now be converted to the data types File

-        and Path.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-698">

-        Add org.apache.commons.configuration2.MapConfiguration.toString().

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-701" due-to="Nicholas Verbeck">

-        CompositeConfiguration now supports an addConfigurationFirst() method

-        to add child configurations with a higher priority.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-703" due-to="Pascal Essiembre">

-        XMLConfiguration now handles elements correctly whose value consists

-        only of whitespace if the xml:space attribute is set to preserve.

-      </action>

-    </release>

-

-    <release version="2.2" date="2017-10-12"

-             description="Minor release with new APIs and bug fixes.">

-      <action dev="oheger" type="add" issue="CONFIGURATION-673" due-to="Andreas Kuhtz ">

-        Added an Automatic-Module-Name header to the manifest for compatibility

-        with the Java 9 module system.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-671">

-        Fixed a NPE in INIConfiguration when saving a configuration with an

-        empty section.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-670">

-        The node model returned by SubnodeConfiguration.getNodeModel() has now

-        the correct root node set.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-669">

-        Update optional Spring dependency from 4.2.5.RELEASE to 4.3.9.RELEASE.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-667">

-        Update Apache Commons Lang from 3.3.2 to 3.6.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-666">

-        Add convenience ctor ConfigurationRuntimeException(String, Object...).

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-665">

-        Add org.apache.commons.configuration2.AbstractHierarchicalConfiguration.toString().

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-664">

-        Add API org.apache.commons.configuration2.tree.ImmutableNode.getChildren(String).

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-663">

-        Fixed a typo in the upgrade to 2.0 guide.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-661">

-        Update platform requirement from Java 6 to 7.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-660">

-        Add toString() methods here and there to help debugging.

-      </action>

-      <action dev="ggregory" type="add" issue="CONFIGURATION-658">

-        Add API org.apache.commons.configuration2.DataConfiguration.getURI(String) methods.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-656" due-to="The Alchemist">

-        Added new YAMLConfiguration class to support configuration files in

-        YAML format.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-653" due-to="Vincent Maurin">

-        ConfigurationUtils and ConfigurationConverter now offer better support

-        for immutable configurations.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-647" due-to="Vladimir Martinek">

-        INIConfiguration can now be configured to use a custom separator

-        between properties and values when writing an ini file.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-258" due-to="The Alchemist">

-        Added new JSONConfiguration class to support configuration files in

-        JSON format.

-      </action>

-    </release>

-

-    <release version="2.1.1" date="2017-02-05"

-      description="Bugfix release for 2.1">

-      <action dev="oheger" type="fix" issue="CONFIGURATION-649">

-        Improved the handling of lists defined by a string with delimiter

-        characters in XMLConfiguration. Such lists now retain their original

-        format when the configuration is saved.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-648">

-        Made the IOFactory property of PropertiesBuilderParameter compatible

-        with the most recent version of Commons BeanUtils. This version

-        changed the handling of properties starting with multiple uppercase

-        letters.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-646">

-        PropertiesConfiguration now works correctly with the auto-save mode.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-644" due-to="Andrew DeMaria">

-        PropertiesConfigurationLayout no longer duplicates a header comment

-        if a file with another comment is loaded.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-643">

-        Documentation improvements for the user's guide.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-641">

-        Improved documentation of FileBased interface. The Javadocs now state

-        explicitly that the methods should not be called by client code.

-        Exception handling in configuration classes implementing

-        FileLocatorAware has been improved.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-640">

-        PropertiesConfiguration now correctly unescapes some special characters

-        that are always escaped in Java properties files.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-639"  due-to="Rico Neubauer">

-        In the OSGi bundle manifest of the Commons Configuration bundle the

-        package imports for Spring packages are now marked as optional.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-638"  due-to="Ahmet Celik">

-        Improved handling of temporary files and folders in unit tests.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-627">

-        Updated dependency to Commons BeanUtils to version 1.9.3. This fixes an

-        issue with an exception stacktrace that was logged when a

-        ConfigurationBuilder was used.

-      </action>

-    </release>

-

-    <release version="2.1" date="2016-08-20"

-      description="First maintenance release for Configuration 2.x.">

-      <action dev="oheger" type="fix" issue="CONFIGURATION-636"  due-to="Tim Lark">

-        PropertiesConfigurationLayout now allows manipulating the order of keys

-        when the properties file is written.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-634"  due-to="Raviteja Lokineni">

-        HomeDirectoryLocationStrategy now works correctly in the mode that

-        evaluates the FileLocator's base path.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-633">

-        Interpolation was improved to better support properties with multiple

-        values.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-632">

-        The methods getStringArray() and getList() of CompositeConfiguration

-        now support the interpolation of variables that reference properties

-        with multiple values.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-628">

-        Support for the ant build was dropped.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-626">

-        ImmutableConfiguration.getArray() has been deprecated. Arrays can now

-        be queried using the generic get() method in a type-safe way.

-      </action>

-      <action dev="deki" type="add" issue="CONFIGURATION-624">

-        Support Commons Configuration as PropertySource in Spring.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-622">

-        Fixed a problem in INIConfiguration.write() with keys containing a

-        separator character. This separator had been duplicated. Such keys

-        are now handled correctly when the configuration is saved.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-631">

-        Update Apache Commons VFS from 2.0 to 2.1.

-      </action>

-      <action dev="ggregory" type="update" issue="CONFIGURATION-635">

-        Update optional dependency Apache Commons Codec from 1.9 to 1.10.

-      </action>

-    </release>

-

-    <release version="2.0" date="2016-03-24"

-      description="Major redesign of the Configuration 1.x API">

-      <action dev="oheger" type="update" issue="CONFIGURATION-621">

-        Moved ConfigurationLogger class to io package to avoid cyclic

-        dependencies between packages.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-620" due-to="Mark Vedder">

-        Fixed two invalid examples in the user's guide for file-based

-        configurations.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-619">

-        CombinedConfigurationBuilder now supports inheritance of its parameters

-        to child configuration sources. This is enabled by default.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-618">

-        When using immutable configurations exceptions thrown by the wrapped

-        configuration came out as UndeclaredThrowableException. This has been

-        fixed; now the correct original exception is thrown.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-615">

-        Changed generic types in the signatures of a MapConfiguration

-        constructor and AbstractConfiguration.getList(String, List). These

-        changes were made in version 1.10 as fixes for CONFIGURATION-557 and

-        CONFIGURATION-558. But it had been missed to merge them to trunk.

-      </action>

-    </release>

-

-    <release version="2.0-beta2" date="2015-12-05"

-      description="Second beta release, some minor API changes.">

-      <action dev="oheger" type="update" issue="CONFIGURATION-614">

-        References to Commons Logging have been removed from the Configuration

-        API. It is still possible to influence logging by making use of the new

-        ConfigurationLogger abstraction.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-612" due-to="Jon Weygand">

-        The return type of ConfigurationBuilder.getConfiguration() was changed

-        from Configuration to ImmutableConfiguration because this is the base

-        interface for all configuration objects.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-609">

-        Fixed a bug in PropertiesConfiguration related to the loading of include

-        files. The FileHandler used for this purpose was not fully initialized.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-608">

-        Adapted the return type of ReloadingFileBasedConfigurationBuilder.configure().

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-605">

-        XMLConfiguration no longer drops keys when list delimiter characters

-        occur in element values.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-604">

-        Fixed a problem in the conversion of a flat configuration to a

-        hierarchical one that could cause the loss of properties in a

-        combined configuration constructed by an override combiner.

-      </action>

-    </release>

-

-    <release version="2.0-beta1" date="2015-06-19"

-      description="First beta release, getting closer to final.">

-      <action dev="oheger" type="update" issue="CONFIGURATION-598" due-to="Bjarne Bostr&#xF6;m">

-        Removed obsolete ConfigurationBuilder interface in the base package.

-      </action>

-    </release>

-

-    <release version="2.0-alpha2" date="2014-12-20"

-      description="Some more API fine-tuning.">

-      <action dev="oheger" type="add" issue="CONFIGURATION-574">

-        DefaultExpressionEngine can now be customized to match configuration

-        keys in a case-insensitive manner. This is useful for instance for

-        dealing with Windows INI files.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-565">

-        Added support for querying encoded properties.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-564">

-        PropertiesConfiguration now supports again properties without a value

-        and a separator character. The keys of such properties are added to

-        the configuration with an empty String as value.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-427">

-        XMLPropertyListConfiguration can now save arrays in the correct form.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-200">

-        A size() method was added to the ImmutableConfiguration interface.

-      </action>

-    </release>

-

-    <release version="2.0-alpha1" date="2014-09-23"

-      description="First alpha release after a major redesign.">

-      <action dev="oheger" type="update" issue="CONFIGURATION-591">

-        Removed methods from ConfigurationConverter related to ExtendedProperties.

-        This class is no longer supported by recent versions of Commons

-        Collections.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-590">

-        Removed Serializable interface from all configuration implementations.

-        Some configuration classes declared this interface without being

-        actually serializable.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-588">

-        The name of the top-level package and the maven coordinates have been

-        changed to allow a coexistence of Commons Configuration 1.x with 2.0.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-584">

-        The event mechanism has been reworked. There is now a generic event

-        listener interface which can be used to receive notifications from

-        multiple types of event sources.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-582">

-        Fixed a StringIndexOutOfBoundsException in PropertiesConfigurationLayout

-        which was caused by lines containing only whitespace.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-579">

-        A migration guide has been created which supports when upgrading from

-        version 1.x to 2.0.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-578">

-        The user's guide has been fully reworked to cover all new and enhanced

-        features of version 2.0.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-577">

-        The dependency to Commons Collections is no longer needed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-576">

-        A new abstract base class for hierarchical configurations was introduced

-        which supports arbitrary hierarchical data structures. The type of the

-        nodes used by the configuration can now be specified as a generic type

-        argument. This makes the integration of other hierarchical structures

-        easier.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-575">

-        Hierarchical configurations now operate on immutable structures.

-        Data is no longer represented by ConfigurationNode objects. The

-        ImmutableNode class now serves as data container.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-573">

-        XPathExpressionEngine can now deal with namespace prefixes in node and

-        attribute names.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-572">

-        When a CombinedConfiguration is cleared it removes itself as change

-        listener from all child configurations. This fixes a possible memory

-        leak.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-570">

-        Fixed a possible ConcurrentModificationException when a SystemConfiguration

-        instance is passed to the append() or copy() methods.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-567" due-to="Shen liang">

-        XMLBeanDeclaration now escapes node names before they are used to

-        determine nested properties.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-563">

-        The DefaultExpressionEngine class is now immutable. An instance can be

-        shared between multiple configuration objects.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-562">

-        Improved the API of ExprLookup.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-559">

-        It is now possible to define default values for initialization

-        properties of configurations.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-555">

-        Fixed a bug in the handling of the xml:space attribute in

-        XMLConfiguration. The attribute is now also applied to the current

-        element, not only to sub elements.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-554">

-        BeanHelper is no longer a static utility class. Instances can be

-        created with a specific configuration of bean factories. There is still

-        a default instance which can be obtained via the BeanHelper.INSTANCE

-        field.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-553">

-        The code for accessing configuration files hs been reworked. Methods

-        related to locating configuration files have been moved from

-        ConfigurationUtils to a new FileLocatorUtils class. Customizable

-        strategy classes (implementing the new FileLocationStrategy) can be

-        used for searching for configuration files.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-551">

-        The data type conversion mechanism has been made extensible. There is a

-        new interface ConversionHandler which controls the data type conversions

-        available for a configuration object. By setting a custom implementation,

-        conversions can be adapted or extended.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-550">

-        Conversion to Character is now supported.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-546" due-to="Justin Couch">

-        BeanHelper can now process BeanDefinitions initializing properties of

-        collection types of their target beans.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-544" due-to="Oliver Kopp">

-        Added missing dependencies to build.xml.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-542">

-        The mechanism for synchronizing configurations has been completely

-        redesigned. It is now based on Synchronizer objects which can be

-        configured by client code. A new chapter was added to the user's guide

-        regarding thread-safety of configurations.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-540">

-        MapConfiguration now directly uses a Properties object passed to its

-        constructor as data store rather than copying it. This allows

-        SystemConfiguration to be connected to system properties; i.e.

-        changing a property through SystemConfiguration immediately affects

-        the corresponding system property.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-541">

-        Multi-file configurations are no longer restricted to XML configuration

-        files. Arbitrary file-based configurations are now supported.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-539">

-        The deprecated INIConfiguration class was removed.

-        HierarchicalINIConfiguration was renamed to INIConfiguration.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-537">

-        The deprecated ConfigurationFactory class was removed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-536">

-        File-based configurations are now implemented in a different way.

-        The interfaces FileConfiguration and ReloadingStrategy have been

-        removed, also the base classes AbstractFileConfiguration and

-        AbstractHierarchicalFileConfiguration. They are replaced by the

-        FileBased interface and the FileHandler class which implements

-        central I/O functionality. Reloading is now in the responsibility of

-        configuration builders.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-535">

-        DatabaseConfiguration now provides get methods for querying its

-        properties defining the underlying database structures.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-534">

-        The includesAllowed property of PropertyConfiguration is now independent

-        from the existence of a base path.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-533">

-        DatabaseConfiguration now automatically converts CLOBs to strings if

-        they appear in property values.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-530">

-        Concurrent access to configurations and reloading have been completely

-        redesigned. Because reloading is now handled by configuration builders

-        there is no need to acquire a lock in order to protected against a

-        reload operations.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-527" due-to="Matthias Richter">

-        AbstractConfiguration.clearPropertyDirect() is now abstract.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-526" due-to="Oliver Kopp">

-        XMLPropertiesConfiguration now supports loading from and saving to DOM

-        nodes.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-525">

-        PropertiesConfiguration now keeps a comment at the bottom of a

-        properties file. A new footer property was added for reading and

-        writing this footer comment.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-524">

-        Interpolation now works correctly after a configuration was cloned.

-        The ConfigurationInterpolator instance is now cloned, too.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-521" due-to="Oliver Kopp">

-        ConfigurationUtils.fileFromUrl() now correctly handles URL containing

-        encoded percent characters.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-520">

-        Support for reloading of configuration data has been reworked.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-519">

-        Configuration objects are now created via configuration builders. A new

-        API for configuration builders has been added.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-518">

-        Classes and interfaces related to interpolation have been slightly

-        reworked. ConfigurationInterpolator is now thread-safe. There are

-        multiple ways to define the ConfigurationInterpolator object to be

-        used by an AbstractConfiguration instance.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-517">

-        Hierarchical configurations now provide methods to obtain sub

-        configurations for all child elements of a given key.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-516">

-        PropertiesConfiguration no longer escapes double quotes on saving.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-515">

-        The visibility of some internal methods of PropertiesConfiguration.PropertiesWriter

-        has been increased to protected. This simplifies the implementation of

-        a custom escaping strategy.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-514">

-        Bean declarations now support constructor invocations.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-513">

-        HierarchicalConfiguration is now an interface. The base implementation

-        class is named BaseHierarchicalConfiguration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-512">

-        It is now possible to obtain an immutable view on a Configuration or

-        HierarchicalConfiguration object. New interfaces,

-        ImmutableConfiguration, and ImmutableHierarchicalConfiguration have

-        been introduced.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-508">

-        Generic get() methods have been added to the Configuration interface.

-        These methods expect a target class and try to convert the value of

-        the specified property to this target class.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-506">

-        Removed obsolete nested classes Node and NodeVisitor of

-        HierarchicalConfiguration. The related deprecated class

-        ConfigurationKey was removed, too.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-505">

-        XMLConfiguration no longer supports attributes with multiple values or

-        list delimiter parsing in attributes. This feature was complex and

-        error prone and brought little value to the user.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-504">

-        SubnodeConfiguration now provides a new method for clearing it and

-        removing its root node from the parent configuration. The method

-        HierarchicalConfiguration.configurationsAt() now returns a list

-        of SubnodeConfiguration so that it is easier to make direct use of

-        this feature.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-500">

-        XMLConfiguration now adds attributes of elements defining a list to

-        all list nodes.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-496">

-        Concurrent access to configurations and reloading have been completely

-        redesigned. This should reduce the amount of synchronization.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-486">

-        Removed some static fields for specifying global default values.

-        Using static fields in this way is thread-hostile. There are now

-        alternatives for setting default values.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-462">

-        Updated dependency to Commons Lang from version 2.6 to 3.1.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-419">

-        EventSource is now an interface. With BaseEventSource there is a

-        default implementation.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-418">

-        The handling of list delimiters and their escape characters has been

-        reworked. A new ListDelimiterHandler interface was introduced allowing

-        applications to customize the treatment of list delimiters.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-330">

-        Concurrent access to configurations has been reworked.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-204">

-        With the new reloading mechanism automatic and periodic reloading checks

-        can be performed.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-202">

-        Reloading checks can now be performed in a background thread.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-153">

-        It is now possible to define the strategy used for locating

-        configuration files.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-136">

-        Reloading can no longer corrupt a configuration instance. This is now

-        handled by a configuration builder; the original configuration instance

-        is not modified.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-26">

-        It is now possible to influence the conversion from a container object

-        (a collection or an array) to a single value (e.g. what is returned by

-        getString() if the current property has multiple values). Per default,

-        the first value is returned. By overriding methods of the

-        configuration's ConversionHandler, this behavior can be changed.

-      </action>

-    </release>

-

-    <release version="1.10" date="2013-10-27"

-      description="Minor bug fixes and improvements">

-      <action dev="oheger" type="update" issue="CONFIGURATION-500">

-        XMLConfiguration now adds attributes of elements defining a list to

-        all list nodes.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-525">

-        PropertiesConfiguration now keeps a comment at the bottom of a

-        properties file. A new footer property was added for reading and

-        writing this footer comment.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-526" due-to="Oliver Kopp">

-        XMLPropertiesConfiguration now supports loading from and saving to DOM

-        nodes.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-534">

-        The includesAllowed property of PropertyConfiguration is now independent

-        from the existence of a base path.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-546" due-to="Justin Couch">

-        BeanHelper can now process BeanDefinitions initializing properties of

-        collection types of their target beans.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-550">

-        Conversion to Character is now supported.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-555">

-        Fixed a bug in the handling of the xml:space attribute in

-        XMLConfiguration. The attribute is now also applied to the current

-        element, not only to sub elements.

-      </action>

-      <action dev="henning" type="fix" issue="CONFIGURATION-556">

-        In 1.7 and before, any change to the system properties was

-        immediately reflected in a SystemConfiguration object. This

-        behavior broke in 1.8 and 1.9. This has been fixed for 1.10.

-      </action>

-      <action dev="henning" type="fix" issue="CONFIGURATION-557">

-        In 1.7 and before, it was possible to pass an arbitrary Map

-        into the constructor of MapConfiguration. With the

-        generification in 1.8, this actually broke and it was no

-        longer possible to pass in e.g. a Map&lt;String, String&gt;

-        because the signature now required a Map&lt;String,

-        Object&gt;. Changing the constructor to accept a

-        Map&lt;String, ?&gt; restores this.

-      </action>

-      <action dev="henning" type="fix" issue="CONFIGURATION-558">

-        Similar to CONFIGURATION-557, the getList(String, List) method

-        was generified to be getList(String, List&lt;Object&gt;) but

-        needs to be getList(String, List&lt;?&gt;) so that code that

-        used a more specific list (such as a List&lt;String&gt;) still

-        compiles against the new API.

-      </action>

-    </release>

-

-    <release version="1.9" date="2012-08-22"

-      description="Minor bug fixes and improvements">

-      <action dev="oheger" type="update" issue="CONFIGURATION-503" due-to="Tino Sino">

-        Small changes in user guide documentation.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-502" due-to="Tino Sino">

-        Improvements of basic features and AbstractConfiguration documentation.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-501">

-        XMLPropertyListConfiguration no longer swallows exception caused by

-        invalid date properties. Now a warning message is logged.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-495">

-        List properties can now be set correctly on a HierarchicalConfiguration

-        if delimiter parsing is disabled.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-488">

-        Made static DateFormat fields in XMLPropertyListConfiguration.PListNode

-        final and added a note about proper synchronization.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-487">

-        DataConfiguration.get() now also works with String properties and if no

-        data type conversion is required.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-483">

-        DatabaseConfiguration now always closes the result set.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-482" due-to="Chris Seieroe">

-        The Import-Package section in the OSGi manifest now uses the

-        resolution:=optional directive for optional dependencies.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-481">

-        Variable substitution in configuration sources declared in a definition

-        file for DefaultConfigurationBuilder now works across multiple sources.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-477">

-        PropertyListConfiguration now can deal with C-style comments in plist

-        configuration files. Both block and single-line comments are supported.

-      </action>

-    </release>

-

-    <release version="1.8" date="2012-02-04"

-      description="Support for Java 1.5">

-      <action dev="oheger" type="fix" issue="CONFIGURATION-476">

-        Fixed possible ClassCastExceptions in CompositeConfiguration related to

-        special in-memory configurations.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-475">

-        Class ConfigurationKey was deprecated in favor of DefaultConfigurationKey.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-474">

-        Implemented delimiter parsing in HierarchicalINIConfiguration to be

-        consistent with other Configuration implementations. Note that this can

-        impact existing code. To switch back to the old behavior, call

-        setDelimiterParsingDisabled(true) before loading the configuration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-471">

-        CompositeConfiguration now provides better support for child

-        configurations that are used as in-memory configuration.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-470">

-        Classes generated by JavaCC are now created dynamically during the

-        build process.

-      </action>

-      <action dev="ebourg" type="add">

-        Commons Configuration now requires Java 5 or later.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-466">

-        Binary literals are now supported (i.e Ob11010001).

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-465">

-        Updated the dependency to Commons Jexl to version 2.1.1. This version

-        provides correct OSGi manifest headers.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-463">

-        Improved documentation of AbstractFileConfiguration related to load()

-        methods and their impact on the base path.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-461">

-        The project now uses standard Maven directory layout.

-      </action>

-    </release>

-

-    <release version="1.7" date="2011-09-07"

-      description="Many bugfixes, some new features.">

-      <action dev="oheger" type="fix" issue="CONFIGURATION-460">

-        Reloading now also works for configuration sources declared in the

-        additional section of a configuration definition file for

-        DefaultConfigurationBuilder.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-459">

-        ConfigurationFactory has been deprecated. The user guide was updated to

-        no more mention this class.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-458">

-        HierarchicalConfiguration now provides a specific implementation of the

-        clear() method. This is more efficient and also solves some other

-        problems related to clearing a SubnodeConfiguration.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-456">

-        Improved Javadocs of getKeys(String) method for some configuration

-        classes.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-455">

-        HierarchicalINIConfiguration.getSection() now creates a section if it

-        does not exist. The SubnodeConfiguration returned by this method is now

-        always connected to the parent ini configuration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-452">

-        XPathExpressionEngine now provides better support for the setProperty()

-        method.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-448">

-        The parsing of ini files has been improved for property definitions

-        containing multiple separator characters.

-      </action>

-      <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.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-445">

-        Transforming a CombinedConfiguration with ViewNodes to an

-        XMLConfiguration could cause problems with attributes. This has been

-        fixed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-439">

-        Child configuration builders created for a &lt;configuration&gt; element

-        in a configuration definition file now inherit the configuration and

-        error listeners from the original DefaultConfigurationBuilder. This

-        makes it possible to suppress log output created for optional

-        configurations.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-438" due-to="Mike Noordermeer">

-        JNDIConfiguration.getKeys() no more logs an exception if the prefix does

-        not exist.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-437">

-        Child configuration builders created for a &lt;configuration&gt; element

-        in a configuration definition file now inherit some of their properties

-        from the builder object which processed the file.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-436">

-        The optional dependency to Apache Ant has been changed to the new

-        groupId org.apache.ant. The version was updated to the most recent

-        version 1.8.2 (older versions should still work).

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-434">

-        HierarchicalINIConfiguration now recognizes comment characters in

-        property definitions only if they are preceded by whitespace. Thus

-        comment characters can now be part of the property value. This is for

-        instance required for the definition of file paths which use the

-        semicolon as path separator.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-433">

-        Minor improvements of the support for indexed properties in

-        ConfigurationDynaBean.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-432">

-        The methods getList() and getStringArray() of AbstractConfiguration can

-        now handle single-valued properties of primitive types.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-428">

-        XMLConfiguration no longer escapes backslashs in the values of

-        XML elements.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-424">

-        HierarchicalINIConfiguration now works correctly with configurations

-        that contain only properties in the global section.

-      </action>

-      <action dev="rgoers" type="fix" issue="CONFIGURATION-423" due-to="William Buckley">

-        testFromClassPath() can fail when it should not because of inconsistent escaping of output from

-        PropertiesConfiguration.getURL() and FileChangedReloadingStrategy.getFile().toURL().

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-418">

-        A bug related to the interpretation of escape sequences for backslashes

-        has been fixed. The user guide has also been improved in this area.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-415">

-        Files with a plus character in their names are now handled correctly.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-413" due-to="Alexander Prishchepov">

-        SubsetConfiguration now produces correct events.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-412">

-        DatabaseConfiguration can now be instructed to perform a commit after an

-        update of the managed database table. This makes it usable in

-        environments where the connections do not use auto-commit mode.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-410">

-        Added a refresh() method to AbstractFileConfiguration and

-        AbstractHierarchicalFileConfiguration.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-409">

-        HierarchicalINIConfiguration now correctly saves sections whose name

-        contains delimiter characters.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-408">

-        PropertiesConfiguration.save() escaped slashes in properties values.

-        This was caused by a bug in commons-lang 2.4. Updating to the new

-        version commons-lang 2.5 fixed this problem.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-407">

-        Fixed a potential IllegalStateException in HierarchicalINIConfiguration

-        that can be thrown when the global section is requested concurrently.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-405">

-        XMLPropertyListConfiguration no longer throws a ConfigurationException

-        if the file to be loaded does not have an outer dict element.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-404" due-to="Rob Walker">

-        The default expression engine used by hierarchical configurations used to

-        throw a NumberFormatException if invalid indices were used in property

-        keys. This has been fixed. As a side effect brackets can now be used in

-        property keys.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-403">

-        When an empty XMLConfiguration was saved and reloaded the root element

-        was assigned an empty text value. Because of this isEmpty() returned

-        false for this configuration. This has been fixed.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-399">

-        Default variable interpolation now supports the env: prefix for

-        referencing environment variables.

-      </action>

-      <action dev="rgoers" type="fix" issue="CONFIGURATION-397">

-        Schema violation exceptions are now propagated back to the caller.

-      </action>

-       <action dev="rgoers" type="fix" issue="CONFIGURATION-390">

-        XMLConfiguration and CombinedConfiguraton are now synchronized to fix problems

-        caused by reloading in a multithreaded environment.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-396">

-        HierarchicalConfiguration.NodeVisitor is now passed the correct key to

-        its visitAfterChildren() method.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-393">

-        BaseConfiguration.clone() now also clones collections stored in the

-        internal map. This causes list properties to be handled correctly.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-389">

-        DefaultConfigurationBuilder now supports defining ini files in its

-        configuration definition file.

-      </action>

-      <action dev="rgoers" type="fix" issue="CONFIGURATION-388">

-        Attribute or element values will not be escaped when attribute or element splitting are disabled.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-363">

-        When using Commons Lang 2.6 or higher as dependency nested interpolation

-        in variable names is supported.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-362">

-        Empty dictionaries in a PropertyList configuration are now preserved when the configuration is saved.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-385">

-        DatabaseConfiguration now generates correct events for the clear() and

-        clearProperty() methods.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-380">

-        Add ExprLookup to allow expressions to be evaluated in configurations. When

-        used, this requires that Apache Commons Jexl be added as a dependency to

-        projects using Commons Configuration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-374">

-        MapConfiguration now provides a way of controlling the trimming

-        behavior.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-378">

-        Added MergeCombiner to allow elements in two configurations to be merged when the

-        element and attributes in the first file match those in the second file.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-340">

-        File system access has been abstracted to a FileSystem interface. Two implementations

-        are provided, DefaultFileSystem that behaves in a backward compatible manner and

-        VFSFileSystem which uses Commons VFS to retreive and store files.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-314">

-        PropertiesConfigurationLayout now allows setting the line separator to

-        be used when writing the properties file.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-371">

-        PropertiesConfigurationLayout now also stores the property separators used for

-        the single properties. It is also possible to change them for specific

-        properties or set a global properties separator. In earlier versions

-        the separator was hard-coded to &quot; = &quot;.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-370">

-        PropertiesConfiguration now defines a nested interface IOFactory. Using

-        this interface it is possible to inject custom PropertiesReader and

-        PropertiesWriter implementations.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-368">

-        SubnodeConfiguration now fires an event of type EVENT_SUBNODE_CHANGED

-        if a structural change of the parent configuration was detected. If the

-        SubnodeConfiguration is contained in a CombinedConfiguration, the

-        CombinedConfiguration receives this event and can update itself.

-      </action>

-      <action dev="rgoers" type="fix" issue="CONFIGURATION-361">

-        MultiFileHierarchicalConfiguration was not using basepath to

-        construct the file url. It also threw an exception if the

-        file pattern resolved to a non-existent file. This is now

-        configurable.

-      </action>

-      <action dev="joehni" type="update" issue="CONFIGURATION-375">

-        Align interpolation functionality of SubnodeConfiguration and

-        SubsetConfiguration. SubsetConfiguration will now also interpolate

-        keys of the parent configuration or use the local lookups of its

-        parent. SubnodeConfiguration is in turn now able to lookup local

-        keys as well.

-      </action>

-      <action dev="joehni" type="update" issue="CONFIGURATION-376">

-        Align interpolation functionality of SubnodeConfiguration and

-        SubsetConfiguration.

-      </action>

-      <action dev="joehni" type="update" issue="CONFIGURATION-377">

-        Align interpolation functionality of SubnodeConfiguration and

-        SubsetConfiguration.

-      </action>

-      <action dev="joehni" type="fix" issue="CONFIGURATION-369">

-        SubsetConfiguration did not use locally registered lookups of its

-        interpolator.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-359">

-        Fixed broken links to the API documentation in the user's guide.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-358">

-        Improvements of the user's guide for hierarchical configurations.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-357">

-        The message of the ConversionException thrown by

-        AbstractConfiguration.getBigInteger() is now correct.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-356">

-        Added getConfigurations and getConfigurationNameList.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-257">

-        Allow configurations to be validated using XML Schemas.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-355">

-        Allow configurations to be validated using XML Schemas.

-      </action>

-    </release>

-

-    <release version="1.6" date="2008-12-25"

-      description="Another set of smaller bug fixes">

-      <action dev="oheger" type="update">

-        Some dependencies to other Commons components have been updated to the

-        recent versions. Affected are Commons Lang, Commons Collections,

-        Commons Logging, Commons BeanUtils, and Commons JXPath. The older

-        versions should still work.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-353">

-        Allow system properties to be set from a configuration file.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-351">

-        Allow variable resolvers to be defined configured in

-        DefaultConfigurationBuilder.

-      </action>

-      <action dev="rgoers" type="add" issue="CONFIGURATION-350">

-        Added MultiFileHierarchicalConfiguration, DynamicCombinedConfiguration

-        and PatternSubtreeConfigurationWrapper.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-349" due-to="Ralph Goers">

-        The visibility of DefaultConfigurationBuilder.XMLConfigurationProvider

-        was changed from package local to public. This makes it easier to

-        implement providers that create configuration classes derived from

-        XMLConfiguration.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-348">

-        AbstractHierarchicalFileConfiguration.getKeys() now also checks whether

-        a reload is required.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-347">

-        AbstractFileConfiguration.getKeys() now returns an iterator that points

-        to a snapshot of the keys of the configuration. This prevents

-        ConcurrentModificationExceptions during iteration when a reload is

-        performed.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-346">

-        ConfigurationUtils.convertToHierarchical() now creates multiple

-        configuration nodes for properties with multiple values. This

-        improves compatibility with queries.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-345">

-        PropertiesConfiguration now per default uses the encoding "ISO-8859-1"

-        for loading properties files.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-344">

-        CombinedConfiguration could cause a deadlock when it was accessed while

-        concurrently a reload of one of its child configuration happened. This

-        was fixed by reducing synchronization where it is not strictly

-        necessary.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-341">

-        The "force reload check" mechanism of CombinedConfiguration now also

-        works with sub configurations created by configurationAt().

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-339">

-        When performing interpolation the methods getList() and getStringArray()

-        of CompositeConfiguration did not take the order of child configurations

-        into account. This could lead to wrong interpolated values when the key

-        was contained in multiple child configuration. Interpolation is now

-        always done in the correct order.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-338" due-to="David Donn">

-        PropertiesConfiguration now also performs interpolation when searching

-        for include files. This means that the name of a file to include can be

-        determined by another property.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-337" due-to="Ralph Goers">

-        DefaultConfigurationBuilder now supports defining new configuration

-        providers in the configuration definition file.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-336">

-        When converting a flat configuration to a hierarchical one it is now

-        possible to specify the expression engine to be used for this purpose.

-        This may be necessary if the flat configuration contains keys with

-        special characters interpreted by the expression engine.

-        CombinedConfiguration defines the new setConversionExpressionEngine()

-        method. The expression engine passed to this method will be used when

-        converting flat child configurations to hierarchical ones.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-335">

-        XMLConfiguration now allows disabling the attribute splitting mechanism

-        introduced in the 1.5 release (as part of the fix for CONFIGURATION-268).

-        This may be necessary for correctly processing attributes containing

-        both the list delimiter and the attribute delimiter character. The new

-        property &quot;disableAttributeSplitting&quot; was added for this

-        purpose.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-334">

-        Made handling of parent nodes more consistent when setRoot() or

-        setRootNode() of HierarchicalConfiguration are involved.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-332">

-        Properties written through a DataConfiguration to a wrapped

-        PropertiesConfiguration got lost when the PropertiesConfiguration was

-        saved. This has been fixed.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-331">

-        XMLBeanDeclaration now defines a factory method createBeanDeclaration()

-        for creating the declarations for complex nested properties. This

-        method can be overridden by derived classes for injecting custom

-        BeanDeclaration implementations.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-328">

-        A bug in XMLConfiguration.addNodes() made it impossible to add

-        attribute nodes using this method. This has been fixed.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-327">

-        INIConfiguration misinterpreted variables in the global section with

-        a dot in their name as section names. HierarchicalINIConfiguration fixes

-        this problem.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-326">

-        INIConfiguration does not support obtaining a subset for the global

-        section. HierarchicalINIConfiguration provides the getSection() method

-        that returns the content of the global section if null is passed in as

-        section name.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-325">

-        INIConfiguration does not return the global section in its getSections()

-        method. HierarchicalINIConfiguration fixes this problem.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-324">

-        HierarchicalINIConfiguration adds support for line continuation.

-      </action>

-      <action dev="oheger" type="update">

-        INIConfiguration has been deprecated. Its functionality is now available

-        through the new HierarchicalINIConfiguration class.

-      </action>

-      <action dev="oheger" type="add">

-        With HierarchicalINIConfiguration a complete new Configuration

-        implementation for parsing Windows INI files is available. This new

-        class is a full replacement of INIConfiguration and addresses some of its

-        shortcomings. Being derived from HierarchicalConfiguration it offers

-        the enhanced functionality of hierarchical configurations.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-322">

-        ConfigurationDynaBean now works properly with indexed properties

-        stored internally in the underlying configuration as arrays.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-321">

-        The iterator returned by HierarchicalConfiguration.getKeys(String prefix)

-        now also contains the prefix if this key is contained in the

-        configuration.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-320">

-        XMLPropertyListConfiguration is no longer limited to 32 bits integers.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-318">

-        When an XMLConfiguration is created using the copy constructor, the name

-        of the root element is now preserved.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-316">

-        Changing the text of the root element of an XMLConfiguration had no

-        effect when the configuration was saved. This has been fixed.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-315">

-        CombinedConfiguration used to send two EVENT_COMBINED_INVALIDATE events

-        for each modified child configuration. Now this event is sent only

-        once after the affected child configuration was updated.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-307">

-        XMLConfiguration now supports the xml:space attribute. This attribute

-        can be used to preserve whitespace in the content of XML elements.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-306">

-        INIConfiguration now preserves whitespace in quoted values.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-302">

-        If a change has been detected by FileChangedReloadingStrategy, the

-        reloadingRequired() method will now return true until

-        reloadingPerformed() has been called.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-301">

-        Fixed a NullPointerException that could be thrown under certain

-        circumstances when saving an XMLConfiguration that was created using

-        the constructor that takes a HierarchicalConfiguration.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-309">

-        Instantiating an XMLPropertyListConfiguration no longer fails

-        if the DTD is missing from the classpath.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-300">

-        It's now possible to read a configuration file containing

-        a '#' in its name (requires Java 1.4 or above).

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-260">

-        Fixed the date format for XMLPropertyListConfiguration.

-      </action>

-    </release>

-

-    <release version="1.5" date="2007-11-24" description="Many smaller bugfixes">

-      <action dev="oheger" type="update" due-to="J&#xF6;rg Schaible">

-        Some of the dependencies in the m2 pom have been updated to be more

-        consistent.

-      </action>

-      <action dev="oheger" type="update" due-to="J&#xF6;rg Schaible">

-        The dependency to commons-logging was updated to the current version

-        1.1. Older versions of commons-logging will still work.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-273">

-        A new method interpolatedConfiguration() was added to AbstractConfiguration.

-        This method returns a configuration with the same type and

-        content as the original configuration, however all variables have been

-        resolved.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-299">

-        Resolving of variables with the prefix const (constant fields) caused

-        a ClassCastException under certain circumstances if non-String fields

-        were involved. This has been fixed.

-      </action>

-      <action dev="oheger" type="update" due-to="Nicolas De Loof">

-        The dependencies to commons-codec and commons-jxpath have been marked

-        as optional. They are not required by the core classes.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-284" due-to="Nicolas De Loof">

-        There is a new configuration implementation EnvironmentConfiguration,

-        which provides access to (OS) environment variables. On Java &gt;= 1.5

-        this class can be directly used; on earlier versions a dependency to ant

-        is required.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-296">

-        A bug in XMLConfiguration caused that attributes of the root element

-        could not be changed. This has been fixed.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-290">

-        A new method registerEntityId() was added to XMLConfiguration, which

-        allows to register URLs for entities. A new default implementation of

-        the EntityResolver interface handles these entities automatically.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-295">

-        The subset() method of HierarchicalConfiguration now takes the value of

-        the subset's root node into account if it is not ambigous.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-294">

-        Nodes added to a XMLConfiguration using the addNodes() method could

-        lose their value when the configuration was saved. This is now fixed.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-272">

-        New copy() and append() methods have been added to AbstractConfiguration.

-        They replace the methods with the same names in ConfigurationUtils,

-        which do not handle all features of AbstractConfiguration properly (e.g.

-        list delimiters in property values are incorrectly treated). To avoid

-        such problems, the new methods should be used.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-291">

-        The addNodes() method of hierarchical file-based configurations now

-        correctly triggers an auto save.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-287">

-        HierarchicalConfiguration.addNodes() now resets the reference property

-        of all nodes to be added. This fixes a problem with XMLConfiguration,

-        which now detects the added nodes as new and treats them correctly when

-        the configuration is saved.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-285">

-        DefaultConfigurationBuilder will now notify registered error listeners

-        about optional configuration sources that could not be created. Before

-        exceptions thrown by optional configurations were swallowed

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-283">

-        ConfigurationUtils.convertToHierarchical() now correctly deals with

-        property values containing escaped list delimiters. This also affects

-        CombinedConfiguration when sub configurations with such property values

-        are contained.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-275">

-        AbstractConfiguration.addProperty() now correctly deals with list and

-        array properties if delimiter parsing is disabled.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-282">

-        The default expression engine used by HierarchicalConfiguration

-        instances is now lazily initialized. This avoids NullPointerExceptions

-        in certain server environments after a redeploy.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-281">

-        Cycles in the JNDI tree no longer cause a stack overflow in

-        JNDIConfiguration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-277">

-        The base implementation of clear() in AbstractConfiguration now checks

-        for a potential UnsupportedOperationException when iterating over the

-        existing properties.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-280"

-        due-to="Roman Kurmanowytsch">

-        Using file-based configurations in auto-save mode together with a

-        reloading strategy could cause data loss. This has been fixed.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-279">

-        A PropertiesConfiguration that was created from a non existing file

-        lost its content when it was saved. This problem has been solved.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-215">

-        A new getSource() method was added to CompositeConfiguration and

-        CombinedConfiguration, which returns the child configuration, in which

-        a given property is defined.

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-274">

-        PropertiesConfiguration now supports escaping the escape character for

-        list delimiters.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-269">

-        PropertiesConfiguration no longer escapes the list delimiter on saving

-        if the list delimiter has been disabled.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-270">

-        List properties and properties containing interpolated variables

-        are now properly saved by INIConfiguration.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-268">

-        When delimiter parsing was disabled for XMLConfiguration, saving and

-        loading the configuration accidently added escape characters to properties

-        containing the list delimiter character. This has been fixed. It is now

-        also possible to escape the escape character itself.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-253">

-        The return value of FileConfiguration.getFile() is now always

-        consistent with the result of getURL().

-      </action>

-      <action dev="ebourg" type="update">

-        INIConfiguration uses the platform's specific line separator instead

-        of the Windows line separator.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-267">

-        INIConfiguration flushes the output at the end of a save operation.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-265">

-        For hierarchical file-based configurations the auto-save mechanism is

-        now also triggered if a subnode configuration is changed. In such a case

-        the new event type EVENT_SUBNODE_CHANGED will be sent to registered

-        listeners.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-266" due-to="Tobias Noebel">

-        ConfigurationInterpolator now also invokes the default lookup object for

-        variables with a prefix that could not be resolved by their associated

-        lookup object.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-264">

-        A SubnodeConfiguration per default does not see certain changes of its

-        parent configuration (e.g. reloads). With a new boolean parameter of

-        HierarchicalConfiguration's configurationAt() method a mode can be

-        enabled, in which the subnode configuration checks for such changes and

-        reconstructs itself if necessary.

-      </action>

-      <action dev="ebourg" type="fix">

-        byte[] properties are properly saved as data fields in the plist

-        configurations (PropertyListConfiguration and XMLPropertyListConfiguration).

-      </action>

-      <action dev="ebourg" type="add">

-        DataConfiguration now supports java.net.InetAddress,

-        javax.mail.internet.InternetAddress, and Java 5 enumeration types.

-        Properties are converted to these types using the new generic getters.

-      </action>

-      <action dev="ebourg" type="fix">

-        The object getters in DataConfiguration with no default value

-        (i.e getURL(key)) now throw a NoSuchElementException if the flag

-        throwExceptionOnMissing is set.

-      </action>

-      <action dev="ebourg" type="add">

-        Generic get methods have been added to DataConfiguration (get(),

-        getArray() and getList())

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-263">

-        XMLConfiguration used to drop attributes when an element's value was a

-        list. This has been fixed.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-249">

-        File configurations can now be saved to FTP URLs, or any other URL

-        protocol supporting data output.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-180">

-        Fixed a potential issue in DatabaseConfiguration where an error on

-        closing a statement would prevent the connection from being closed.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-261">

-        Date objects are now supported in ASCII plist files.

-      </action>

-      <action dev="ebourg" type="update">

-        XMLPropertyListConfiguration no longer requires commons-digester and

-        commons-beanutils to work.

-      </action>

-      <action dev="ebourg" type="update">

-        Fixed INIConfiguration to handle the quoted values and the lines

-        containing a value and a comment.

-      </action>

-    </release>

-

-    <release version="1.4" date="2007-04-08" description="Improved interpolation, configuration for INI files, reloading strategy triggered with JMX, bug fixes.">

-      <action dev="oheger" type="update" issue="CONFIGURATION-256">

-        MapConfiguration and the web-based configurations now treat strings

-        that contain an escaped list delimiter correctly: The escape character

-        will be removed, so that for instance "foo\,bar" becomes "foo,bar".

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-255">

-        DatabaseConfiguration now handles list delimiters in property values

-        correctly.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-254" due-to="Carsten Kaiser">

-        After cloning a XMLConfiguration there was still a connection to the

-        original configuration. So when the clone was modified and then saved

-        the content of the original configuration was written. This has now

-        been fixed.

-      </action>

-      <action dev="oheger" type="update">

-        Class loading in BeanHelper is now done using ClassUtils of Commons

-        Lang.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-237" due-to="Nicolas de Loof">

-        With ManagedReloadingStrategy a new reloading strategy for file-based

-        configurations was added that can be triggered through JMX.

-      </action>

-      <action dev="oheger" type="update">

-        The dependencies to Commons Lang, Commons Collections, and Commons Digester

-        are updated to use the recent available version. However older versions

-        will still work.

-      </action>

-      <action dev="oheger" type="add">

-        A pom for maven 2 was added.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-252">

-        ConfigurationUtils.getFile() now always checks first whether the passed

-        in file name is absolute. If it is, this file will be returned. This

-        prevents that on Unix under certain circumstances absolute file names

-        are interpreted as relative ones.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-251">

-        The dependency to xml-apis was changed to the version 1.0.b2. The so

-        far used version 2.0.2 is reported to be bogus.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-245">

-        In addition to configuration event listeners now so-called configuration

-        error listeners are supported. These listeners are notified about

-        internal errors that had been logged and swallowed by privious versions.

-        The new enableRuntimeExceptions() method of ConfigurationUtils

-        registers a special error listener at the passed in configuration that

-        generates a runtime exception when an error event is received.

-      </action>

-      <action dev="oheger" type="add">

-        AbstractConfiguration now allows to set an instance specific logger

-        using the setLogger() method. This gives clients more control over a

-        configuration's logging behavior.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-155">

-        SubsetConfiguration and CompositeConfiguration were updated to fully

-        support an instance specific list delimiter. Concerning splitting of

-        string properties that contain a list delimiter character, these

-        classes now behave like a "normal" configuration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-192">

-        Variable interpolation features have been improved. A variable can now

-        have the form ${prefix:variableName} where the prefix

-        defines the type of the variable. The standard types sys for

-        system properties and const for constants are supported.

-        Variables without a prefix are treated as references to other

-        configuration properties (which is compatible to earlier versions).

-      </action>

-      <action dev="oheger" type="update">

-        Commons Configuration now depends on Commons Lang 2.2. Some features

-        of Lang's new text package are used.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-244">

-        The number of dependencies needed for DefaultConfigurationBuilder was

-        reduced by letting some of the default configuration providers resolve

-        their classes per reflection.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-240">

-        File-based configurations with a reloading strategy did not work well

-        together with CombinedConfiguration because the reloading strategy is

-        only checked when its associated configuration is accessed (which does

-        not happen when only the combined configuration is queried).

-        As a workaround CombinedConfiguration now provides the boolean

-        forceReloadCheck property. If this is set to true, all contained

-        configurations will be triggered when a property is queried. This will

-        cause a reload if necessary.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-243">

-        Configuration declarations in the configuration definition file for

-        DefaultConfigurationBuilder that are marked as optional now support a

-        new attribute config-forceCreate. If this attribute is set

-        to true and the initialization of the configuration fails,

-        DefaultConfigurationBuilder tries to add an empty configuration of the

-        correct type to the resulting combined configuration. Before this

-        change optional configurations that caused errors were never added to

-        the combined configuration.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-241">

-        CompositeConfiguration.clearProperty() now generates the correct

-        update events.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-242">

-        The configuration returned by HierarchicalConfiguration.subset()

-        performed variable interpolation only in the keys that belong to the

-        subset. Now the parent configuration is searched, too, to resolve the

-        value of the referenced property. This is consistent with the way

-        SubnodeConfiguration works.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-234">

-        DefaultConfigurationBuilder now internally uses the standard expression

-        engine for hierarchical configurations. So the dependency to Commons

-        JXPath is no more needed when this class is used. Note that this change

-        has some impact on existing code that manually sets properties before

-        the combined configuration is created; this code must now be adapted to

-        the changed syntax of property keys.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-236">

-        HierarchicalConfiguration and some of its sub classes now define a

-        copy constructor.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-197" due-to="Trevor Charles Miller">

-        A new configuration class for windows ini files was added.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-229">

-        For file-based configurations loaded by ConfigurationFactory the load()

-        method was called before all of the properties specified by attributes

-        of the XML element have been initialized. Now load() is called after

-        property initialization.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-235">

-        Interpolation of non string values did not work when SubsetConfiguration

-        was involved. This has now been fixed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-227">

-        The compatibility of ConfigurationDynaBean with other configuration types

-        than those that inherit from BaseConfiguration was improved.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-233" due-to="Rainer Jung">

-        The getList() method of CompositeConfiguration does now fully support

-        variable interpolation. So it is possible to refer to a variable in

-        one (sub) configuration that is defined in another configuration.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-230">

-        XPathExpressionEngine used to create wrong keys for attribute nodes.

-        This caused some operations on XMLConfiguration to fail when such an

-        expression engine was set (e.g. reloading). Now correct keys for

-        attributes are constructed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-228">

-        Some of the methods of file-based hierarchical configurations (e.g.

-        subset() or configurationAt()) did not take an eventually set reloading

-        strategy into account. This is now fixed by overriding the internal

-        fetchNodeList() method in AbstractHierarchicalFileConfiguration and

-        letting it always check for a reload.

-      </action>

-    </release>

-

-    <release version="1.3" date="2006-09-24">

-    </release>

-

-    <release version="1.3-rc2" date="2006-09-03">

-      <action dev="oheger" type="update" issue="CONFIGURATION-223" due-to="Gabriele Garuglieri">

-        AbstractFileConfiguration now overrides addProperty() and setProperty()

-        instead of addPropertyDirect() to implement the auto save feature.

-        This was necessary to properly integrate PropertiesConfigurationLayout.

-        It has also the advantage that an auto save is triggered only once if

-        multi-valued properties are involved (before a save operation was

-        performed for each property value).

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-222" due-to="Gabriele Garuglieri">

-        The new PropertiesConfigurationLayout class broke the save() operation

-        of PropertiesConfiguration when an instance was newly created and

-        populated in memory. This is fixed now by ensuring that a layout object

-        is immediately created and registered as event listener at the

-        configuration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-221" due-to="Rainer Jung">

-        ConfigurationFactory now supports variables in its configuration

-        definition files. These variables are resolved using system properties

-        and have the typical ${} syntax.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-216" due-to="Gabriele Garuglieri">

-        There were still some problems with resolving relative paths when

-        configuration files are loaded from classpath. This fix addresses these

-        issues.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-220">

-        DataConfiguration.getDateArray() used to ignore the format argument.

-        This was fixed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-219">

-        PropertiesConfiguration now defines its own clone() method to handle

-        the associated PropertiesConfigurationLayout object correctly.

-      </action>

-    </release>

-

-    <release version="1.3-rc1" date="2006-07-30">

-      <action dev="oheger" type="update" issue="CONFIGURATION-217">

-        The dependency to servletapi was updated from version 2.3 to version

-        2.4, but version 2.3 will still work.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-104">

-        A new class PropertiesConfigurationLayout was introduced whose task is

-        to preserve the structure (e.g. comments, blanc lines) of a file

-        loaded by PropertiesConfiguration. Each PropertiesConfiguration

-        object is now associated with such a layout object. A saved properties

-        file will look very similar to its original.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-145">

-        clone() methods have been added to BaseConfiguration, AbstractFileConfiguration,

-        MapConfiguration, CompositeConfiguration, and CombinedConfiguration.

-        So the most important Configuration implementations now support

-        cloning. To ConfigurationUtils an utility method cloneConfiguration()

-        was added that allows to conveniently clone a configuration.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-216">

-        If a configuration file was to be loaded from classpath, the

-        constructor of AbstractFileConfiguration dropped the file's path. The

-        path is now taken into account.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-214">

-        The getter methods for numeric data types in AbstractConfiguration now

-        support conversions between different Number types, e.g. you can now

-        call getLong(key) when key points to an Integer value.

-      </action>

-      <action dev="oheger" type="add">

-        The new class DefaultConfigurationBuilder was added as an alternative to

-        ConfigurationFactory. It provides some more features and creates a

-        CombinedConfiguration object

-      </action>

-      <action dev="oheger" type="add">

-        The new class CombinedConfiguration was added as a hierarchical

-        alternative to CompositeConfiguration.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-143">

-        Support for low-level configuration events was added to all classes

-        derived from AbstractConfiguration. The major part of this is handled

-        by the new super class EventSource of AbstractConfiguration.

-      </action>

-      <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="CONFIGURATION-63">

-        Loading of file-based configurations no longer throws a NullPointerException

-        in setups where the thread context class loader is not set.

-      </action>

-      <action dev="oheger" type="update">

-        The dependency to dom4j was removed; it was only used by two test classes,

-        which have been re-written.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-100">

-        XMLConfiguration used to drop the DOCTYPE declaration when saving the

-        configuration. It is now able to extract the DTD's public and system ID

-        and write them back (more complex DOCTYPE declarations are still not supported).

-        With the new methods setSystemID() and setPublicID(), the DOCTYPE

-        declaration can be configured.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-178">

-        Added two new constructors in CompositeConfiguration accepting a

-        collection of configurations as a parameter.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-186">

-        (Basic) Support for declaring beans in configuration files was added.

-        Some new classes in the beanutils package allow to create instances from

-        these declarations.

-      </action>

-      <action dev="oheger" type="update">

-        The implementation of the interpolation features have been extracted out

-        off AbstractConfiguration and moved to PropertyConverter. The

-        interpolateHelper() method of AbstractConfiguration is now deprectated

-        and will not be called any more during interpolation.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-182">

-        A new method configurationsAt() was added to HierarchicalConfiguration

-        that provides a convenient way of iterating over complex list-like

-        structures without the need of manually constructing configuration keys

-        with indices.

-      </action>

-      <action dev="oheger" type="add">

-        A new class SubnodeConfiguration was introduced that wraps a configuration

-        node of a HierarchicalConfiguration. All operations performed on this

-        configuration use this wrapped node as root. The new configurationAt()

-        method of HierarchicalConfiguration returns such a SubnodeConfiguration

-        for a specified sub node.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-173">

-        With XPathExpressionEngine an expression engine for hierarchical

-        configurations is now available that can evaluate XPATH expressions in

-        property keys. This expression engine implementation is based on

-        Commons JXPath, which is now declared as a new dependency (but at

-        runtime it is only needed if the XPathExpressionEngine class is used).

-      </action>

-      <action dev="oheger" type="add">

-        The code for interpreting property keys was refactored out off

-        HierarchicalConfiguration. Instead this class now supports pluggable

-        expression engines (using the setExpressionEngine() method). So it is

-        possible to plug in different expression languages. A default expression

-        engine is provided that understands the native expression language used

-        by hierarchical configurations in older versions. During the process of

-        this refactoring some methods of HierarchicalConfiguration have been

-        deprecated; they will not be called any more when searching or adding

-        properties. These are the following: createAddPath(), fetchAddNode(),

-        findLastPathNode(), findPropertyNodes().

-      </action>

-      <action dev="oheger" type="update">

-        A larger refactoring was performed on the inner Node class of

-        HierarchicalConfiguration: A ConfigurationNode interface was extracted

-        for which a default implementation (DefaultConfigurationNode) is

-        provided. HierarchicalConfiguration.Node now extends this default

-        implementation. The new ConfigurationNode interface defines some more

-        methods than the Node class did originally for conveniently dealing with

-        sub nodes and attributes. HierarchicalConfiguration now uses the new

-        type ConfigurationNode whereever possible. Some methods dealing with

-        Node objects have been deprecated and replaced by versions operating on

-        ConfigurationNode objects instead.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-155" due-to="Jorge Ferrer">

-        All configuration classes derived from AbstractConfiguration now allow

-        to set an instance specific list delimiter. This can be done through

-        the new method setListDelimiter(). As before it is possible to define

-        a default list delimiter, which will be used if no instance specific

-        delimiter is set. This can be done using the new setDefaultListDelimiter()

-        method (the methods get/setDelimiter() have been deprecated). With the

-        new setDelimiterParsingDisabled() method parsing of lists can be

-        disabled at all.

-      </action>

-    </release>

-

-    <release version="1.2" date="2005-12-17">

-    </release>

-

-    <release version="1.2-rc3" date="2005-12-07">

-      <action dev="oheger" type="update">

-        Commons Configuration now declares a dependency to Xalan. As with

-        Xerces this dependency is only needed for JDK 1.3. It was introduced

-        in a process of making Configuration buildable on a JDK 1.3. Documentation

-        about the build process was also added.

-      </action>

-      <action dev="oheger" type="update">

-        The dependency to Commons Beanutils Collections was unnecessary and

-        thus removed.

-      </action>

-      <action dev="oheger" type="update">

-        Commons Configuration now depends on Commons Digester 1.6 instead of 1.5.

-        (This was done only to pick up the latest available release of digester.)

-      </action>

-    </release>

-

-    <release version="1.2-rc2" date="2005-11-23">

-      <action dev="oheger" type="update" issue="CONFIGURATION-2">

-        ConfigurationDynaBean now implements the java.util.Map interface (as

-        was stated in the javadocs). This was done by deriving the class from

-        ConfigurationMap.

-      </action>

-    </release>

-

-    <release version="1.2-rc1" date="2005-11-11">

-      <action dev="oheger" type="update" issue="CONFIGURATION-33">

-        The reload() method in AbstractFileConfiguration was updated to prevent

-        reentrant invocation, which may be caused by some methods when they

-        are called during a reloading operation.

-      </action>

-      <action dev="ebourg, oheger" type="update">

-        AbstractHierarchicalFileConfiguration, a new base class for file based

-        hierarchical configurations, was introduced. XMLConfiguration now

-        extends this class.

-      </action>

-      <action dev="oheger" type="update" due-to="Kay Doebl" issue="CONFIGURATION-41">

-        XMLConfiguration now prints the used encoding in the xml declaration of

-        generated files. In earlier versions always the default encoding was

-        written. PropertiesConfiguration now always uses the platform specific

-        line separator when saving files.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-8">

-        PropertiesConfiguration now translates properly the escaped unicode

-        characters (like \u1234) used in the property keys. This complies with

-        the specification of java.util.Properties.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-123">

-        ConfigurationConverter.getProperties() now uses the delimiter of the

-        specified configuration to convert the list properties into strings.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-123">

-        The interpolation of variables (${foo}) is now performed in all property

-        getters of AbstractConfiguration and DataConfiguration. As a side effect

-        the Properties object returned by ConfigurationConverter.getProperties()

-        contains only interpolated values.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-35">

-        PropertiesConfiguration now uses the ISO-8859-1 encoding by default

-        instead of the system encoding to comply with the specification of

-        java.util.Properties.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-44">

-        JNDIConfiguration no longer logs an error when attempting to get

-        a property that doesn't exist in the configuration.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-99">

-        Attempting to load a configuration from a directory instead of a file

-        will now throw a ConfigurationException.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-28">

-        If a multi-valued property was involved in an interpolation operation,

-        AbstractConfiguration created a string representation of the list of all

-        values. This was changed to only use the first value, which makes more

-        sense in this context and is consistent with other getters for single

-        valued properties.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-83">

-        If an include file with a relative path cannot be found in the base

-        path, PropertiesConfiguration now also tries to resolve it based on its

-        own location.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-117" due-to="Steve Bate">

-        Fixed MapConfiguration to store the list of values added under a same

-        key instead of the last value added.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-80">

-        Fixed a bug in the handling of relative file names in ConfigurationFactory:

-        In most cases relative file names were not resolved relative to the

-        location of the configuration definition file as stated in the documentation.

-        This behavior was now changed to always be in sync with the documentation.

-        This may have an impact on existing code which uses workarounds for

-        the erroneous resolving mechanism.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-6">

-        Empty elements or elements whose content consists only of comments or

-        whitespace are now taken into account by XMLConfiguration. They are

-        added to the configuration; their value is an empty string.

-      </action>

-      <action dev="oheger" type="add">

-        XMLConfiguration now sets a valid system id in the InputSource used for

-        loading files. This enables XML parsers to correctly resolve relative

-        files, e.g. DTDs.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-74">

-        getKeys() in HierarchicalConfiguration now returns the keys in the same order the properties were inserted.

-      </action>

-      <action dev="ebourg" type="update">

-        Commons Configuration now depends on Commons Collections 3.1 instead of 3.0

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-195">

-        New configurations implementing the "property list" format used in

-        NeXT/OpenStep and its XML variant used in Mac OS X.

-        (PropertyListConfiguration and XMLPropertyListConfiguration)

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-97">

-        Resolved some issues with XMLConfiguration and properties containing

-        the delimiter character. These properties are now correctly treated,

-        escaping the delimiter will work, too.

-      </action>

-      <action dev="ebourg" type="add">

-        Added support for XMLPropertiesConfiguration in ConfigurationFactory.

-        A &lt;properties> element will generate a XMLPropertiesConfiguration

-        if the filename ends with ".xml".

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-184">

-        PropertiesConfiguration now supports escaped key/value separators in the keys

-        (i.e foo\:key = bar).

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-166">

-        PropertiesConfiguration now supports all key/value separators supported by java.util.Properties

-        ('=', ':' and white space characters).

-      </action>

-      <action dev="ebourg" type="update">

-        Commons Configuration now depends on Commons Lang 2.1 instead of 2.0

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-207">

-        Comment lines for PropertiesConfiguration can start with the '!' char (compatibility with java.util.Properties).

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-84">

-        Because ConfigurationUtils.copy() does not fully support hierarchical

-        configurations a clone() method was added to HierarchicalConfiguration

-        that can be used instead.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-206">

-        XMLConfiguration now provides some support for validating XML

-        documents. With the setValidating() method DTD validation can be

-        enabled. It is also possible to set a custom DocumentBuilder allowing

-        a caller to perform enhanced configuration of the XML loading process.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-121">

-        AbstractFileConfiguration now always sets a valid base path if the

-        configuration file could be located. This allows PropertiesConfiguration

-        to resolve include files even when loaded from class path.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-85">

-        Updated XMLConfiguration to correctly deal with properties containing

-        dots in their names. Such properties could not be accessed before.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-9">

-        PropertiesConfiguration's handling of backslash characters at the end

-        of line was incorrect when there was an even number of trailing

-        backslashes. This is now fixed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-130">

-        Fixed a problem related to file based configurations that are loaded

-        from a URL which is application/x-www-form-urlencoded: the save() method

-        would store such files at a wrong location.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-50">

-        Updated FileChangedReloadingStrategy to use the file based configuration's

-        source URL to find the file to watch. Before that it was possible that

-        the strategy checked the wrong file. For configuration files loaded

-        from a jar FileChangedReloadingStrategy now checks the jar file itself

-        for changes. Finally a bug was fixed which caused the strategy to

-        check the watched file's last change date on every invocation of its

-        reloadingRequired() method ignoring its refresh delay. Thanks to Jorge

-        Ferrer.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-62">

-        Fixed a bug in the collaboration between XMLConfiguration and its

-        reloading strategy: The configuration did not check its reloading

-        strategy, so no reload was performed.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-119">

-        Disabled auto save mode during PropertiesConfiguration.load(). Prior

-        it was possible that the properties file to be loaded was immideately

-        overwritten.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-89">

-        Under certain circumstances it was possible that a reloading strategy

-        set for PropertiesConfiguration interferred with the save() method causing

-        the configuration file to be erased. This has now been fixed.

-      </action>

-      <action dev="oheger" type="update" due-to="Jamie M. Guillemette" issue="CONFIGURATION-94">

-        AbstractFileConfiguration now stores the URL of the config file in the

-        load() methods. This URL is reused by the save() method to ensure that

-        the same file is written.

-      </action>

-      <action dev="ebourg" type="update" due-to="Alistair Young">

-        XMLPropertiesConfiguration no longer depends on Digester to parse the

-        configuration file, it's now implemented with a pure SAX parser.

-      </action>

-      <action dev="oheger" type="update" due-to="Mi Zhang" issue="CONFIGURATION-49">

-        Fixed a bug which causes XMLConfiguration.save to lose attribute values

-        under some circumstances. The clear() method now also ensures that the

-        associated DOM document is always cleared.

-      </action>

-      <action dev="ebourg" type="update" due-to="Kunihara Tetsuya" issue="CONFIGURATION-13">

-        XMLConfiguration now parse the configuration using the encoding

-        declared in the XML header instead of the OS default encoding.

-      </action>

-      <action dev="ebourg" type="update" due-to="Zsolt Koppany">

-        XMLConfiguration now uses the delimiter set by setDelimiter(char).

-      </action>

-    </release>

-

-    <release version="1.1" date="2005-04-02">

-      <action dev="ebourg" type="update" issue="CONFIGURATION-134">

-        Fixed a ConcurrentModificationException thrown when calling clear()

-        on a SubsetConfiguration applied to a BaseConfiguration.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-81">

-        The resolveContainerStore() method in AbstractConfiguration now works

-        properly with arrays of objects and arrays of primitives. This means

-        it is possible to store an array of value in the configuration and

-        retrieve the first element with the getString(), getInt()... methods.

-      </action>

-    </release>

-

-    <release version="1.1-rc2" date="2005-03-06">

-      <action dev="oheger" type="update" issue="CONFIGURATION-118">

-        Updated documentation for FileConfiguration's load() methods. Fixed a

-        problem in XMLConfiguration with the output of the save() method when

-        multiple files were loaded.

-      </action>

-      <action dev="ebourg" type="update">

-        Fixed a bug in FileChangedReloadingStrategy preventing the detection

-        of a file change in some cases.

-      </action>

-      <action dev="ebourg" type="update">

-        Changed getXXXArray() and getXXXList() in DataConfiguration to return

-        an empty array/list for empty values.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-58">

-        Fixed getLongArray(), getFloatArray() and getDoubleArray() in DataConfiguration,

-        the values were cast into integers.

-      </action>

-    </release>

-

-    <release version="1.1-rc1" date="2005-02-13">

-      <action dev="oheger" type="add" issue="CONFIGURATION-88">

-        ConfigurationFactory now always configures digester to use the context

-        classloader. This avoids problems in application server environments,

-        which use their own version of digester. Thanks to Mike Colbert for the

-        patch!

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-148">

-        Added a new configuration, XMLPropertiesConfiguration, supporting the

-        new XML format for java.util.Properties introduced in Java 1.5.

-        A 1.5 runtime is not required to use this class.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-190">

-        Added a comment header to PropertiesConfiguration. The header is not

-        parsed when the file is loaded yet.

-      </action>

-      <action dev="ebourg" type="add">

-        Added the setEncoding(String) and the getEncoding() methods to the

-        FileConfiguration interface to control the encoding of the

-        configuration file.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-210">

-        Access to the top level element of the XML document is now provided. For

-        newly created configurations this element can be changed before the

-        document is written.

-      </action>

-      <action dev="oheger" type="update" issue="CONFIGURATION-168">

-        Merged the two XML related configuration classes into one new class

-        XMLConfiguration. This new class should provide the best of its

-        ancestors.

-      </action>

-      <action dev="ebourg" type="update">

-        Replaced the PropertyTokenizer inner class in AbstractConfiguration

-        with the split method in PropertyConverter. Also moved the method

-        building an iterator on the elements of a composite value in

-        PropertyConverter as toIterator().

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-15">

-        Some cleanup of the handling of the base path in file based configurations.

-        The base path is now always taken into account.

-      </action>

-      <action dev="ebourg" type="fix">

-        Calling getProperties on a JNDIConfiguration no longer throws an

-        UnsupportedOperationException.

-      </action>

-      <action dev="ebourg" type="remove">

-        Removed the getPropertyDirect method from AbstractConfiguration,

-        concrete configurations now implement directly the getProperty method

-        from the Configuration interface.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-187">

-        Added implementation of a save() method for HierarchicalXMLConfiguration.

-      </action>

-      <action dev="ebourg" type="update">

-        Constructing a file based configuration with a File no longer throws

-        an exception when the file doesn't exist.

-      </action>

-      <action dev="ebourg" type="add">

-        Saving a configuration now creates the path to the file if it doesn't exist.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-45">

-        AbstractFileConfiguration.save(File) no longer fails silently when

-        an error occurs, a ConfigurationException is thrown instead.

-      </action>

-      <action dev="ebourg" type="fix">

-        ConfigurationUtils.locate() now checks if the URL based resources exist.

-        This fixes a bug preventing configuration files from being found if

-        the configuration descriptor is in a JAR file (reported by Grant Ingersoll).

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-96">

-        Fixed NPE that were caused in the constructors of file based

-        configurations if an invalid file name was specified.

-      </action>

-      <action dev="oheger" type="add" issue="CONFIGURATION-162">

-        Added support for optional configuration sources in definition files for

-        ConfigurationFactory. A new optional attribute allows to specify whether a

-        configuration source is mandatory or optional.

-      </action>

-      <action dev="ebourg" type="fix">

-        JNDIConfiguration.getKeys() now returns an empty iterator instead of

-        throwing a ConfigurationRuntimeException when a NamingException occurs.

-        The NamingExceptions are now logged.

-      </action>

-      <action dev="ebourg" type="fix">

-        DatabaseConfiguration.isEmpty() now returns true if an SQLException occurs.

-      </action>

-      <action dev="ebourg" type="add">

-        Added two methods copy(Configuration, Configuration) and

-        append(Configuration, Configuration) in ConfigurationUtils to copy

-        properties between configurations.

-      </action>

-      <action dev="ebourg" type="update">

-        Moved the constructors implementations from PropertiesConfiguration and

-        XMLConfiguration to AbstractFileConfiguration.

-      </action>

-      <action dev="epugh" type="remove">

-        Remove deprecated getVector() implementations.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-147">

-        File based configurations can now be automatically reloaded when the

-        underlying file is modified.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-156">

-        Added a clear() method to the Configuration interface to remove

-        all properties.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-208">

-        Added a SystemConfiguration wrapping the system properties.

-        ConfigurationFactory recognizes the corresponding &lt;system/&gt;

-        element.

-      </action>

-      <action dev="ebourg" type="add">

-        Added a MapConfiguration to turn any Map into a Configuration. The

-        getConfiguration() methods in ConfigurationConverter now use

-        MapConfiguration, as a result the Configuration returned is always

-        synchronized with the underlying Properties or ExtendedProperties,

-        changes made to the Configuration are available in the Properties,

-        and reciprocally.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-146">

-        The "autoSave" feature of XMLConfiguration has been generalized

-        to all file based configurations.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-191">

-        Numeric properties can now be specified in hexadecimal format,

-        for example "number = 0xC5F0".

-      </action>

-      <action dev="oheger" type="fix" issue="CONFIGURATION-36">

-        Fixed HierarchicalConfiguration.getKeys(String), it returned an empty

-        iterator if the prefix string contained indices.

-      </action>

-      <action dev="ebourg" type="add">

-        Added a DataConfiguration decorator providing getters for all useful

-        types found in a configuration (URL, Locale, Date, Calendar, Color,

-        lists and arrays)

-      </action>

-      <action dev="ebourg" type="add">

-        Added 5 new configurations to be used in a web environment:

-        AppletConfiguration, ServletConfiguration, ServletContextConfiguration,

-        ServletRequestConfiguration, ServletFilterConfiguration.

-      </action>

-    </release>

-

-    <release version="1.0" date="2004-10-11" description="First official release">

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-66">

-        The getStringArray() method in CompositeConfiguration now interpolates

-        the strings.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-23">

-        SubsetConfiguration now shares the "throwExceptionOnMissing" property

-        with its parent.

-      </action>

-      <action dev="ebourg" type="fix">

-        Removed "file:" at the beginning of the base path when calling

-        setFile() on a FileConfiguration. This prevented auto saving an

-        XMLConfiguration loaded from a File (issue reported by Mark Roth).

-      </action>

-      <action dev="ebourg" type="update">

-        All NamingEnumerations in JNDIConfiguraiton are now properly closed (Suggested

-        by Eric Jung).

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-90">

-        Properties added to an XMLConfiguration are no longer duplicated in the

-        resulting XML file.

-      </action>

-    </release>

-

-    <release version="1.0-rc2" date="2004-09-24">

-      <action dev="ebourg" type="update">

-        Unified the mechanisms for loading and saving file based configurations.

-        PropertiesConfiguration, XMLConfiguration and HierarchicalXMLConfiguration

-        now implement the same FileConfiguration interface. BasePathLoader,

-        BasePathConfiguration, ClassPropertiesConfiguration and

-        BasePropertiesConfiguration have been removed.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-22">

-        Replaced the calls to Boolean.booleanValue(boolean) in

-        AbstractConfiguration and ConfigurationDynaBean to be Java 1.3

-        compatible.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-112">

-        Changing the prefix of a JNDIConfiguration will now reset the base context used.

-      </action>

-      <action dev="ebourg" type="add" due-to="Eric Jung">

-        The context used by JNDIConfiguration can be specified in its

-        constructor or through the setContext() method. The context can be

-        accessed with the getContext() method which is now public.

-      </action>

-      <action dev="henning" type="add">

-        Make the behavior on missing properties for the get methods that

-        return objects configurable. A property throwExceptionOnMissing

-        can be set and then the getters throw an NoSuchElementException.

-        The old default behavior of returning a null value has

-        been restored.

-      </action>

-      <action dev="epugh" type="add" issue="CONFIGURATION-151">

-        Allow configurations extending AbstractConfiguration to change the

-        delimiter used from "," to something else.

-      </action>

-      <action dev="epugh" type="fix">

-        PropertiesConfiguration.save() method has issues with preserving the filename

-      </action>

-      <action dev="epugh" type="fix" issue="CONFIGURATION-132" due-to="Mark Woodman">

-        Test cases for HierarchicalConfigurationXMLReader stores comments as text nodes.

-      </action>

-      <action dev="epugh" type="fix" issue="CONFIGURATION-183" due-to="Ricardo Gladwell">

-        Clarify for ConfigurationDynaBean that the get method should throw an

-        illegalArgumentException if there is no property specified.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-25">

-        Fixed a ClassCastException when adding a non String property to an XMLConfiguration.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-138" due-to="Oliver Heger">

-        Fixed the handling of attribute properties by HierarchicalConfigurationConverter.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-125">

-        Fixed a ClassCastException thrown on adding a non string property

-        in a DatabaseConfiguration.

-      </action>

-      <action dev="henning" type="add">

-        Bring back the getVector() methods in the Configuration interface.

-        These methods are needed for &quot;drop-on&quot; replacement of the

-        various pre-1.0 commons-configuration snapshots and are already

-        deprecated. These methods will be removed for 1.1.

-      </action>

-    </release>

-

-    <release version="1.0-rc1" date="2004-08-14">

-      <action dev="epugh" type="add" issue="CONFIGURATION-132" due-to="Oliver Heger">

-        HierarchicalConfigurationXMLReader stores comments as text nodes.

-      </action>

-      <action dev="epugh" type="add" issue="CONFIGURATION-122" due-to="Ricardo Gladwell">

-        project.xml contains bad dependencies.

-      </action>

-      <action dev="epugh" type="add" issue="CONFIGURATION-64" due-to="Brent Worden">

-        clearXmlProperty doesn't remove list properties completely.

-      </action>

-      <action dev="epugh" type="add" issue="CONFIGURATION-183" due-to="Ricardo Gladwell">

-        new ConfigurationDynaBean.

-      </action>

-      <action dev="epugh" type="add" issue="CONFIGURATION-185" due-to="Ricardo Gladwell">

-        new ConfigurationMap and ConfigurationSet.

-      </action>

-      <action dev="epugh" type="fix" issue="CONFIGURATION-91" due-to="Ricardo Gladwell">

-        Problem adding property XMLConfiguration.

-      </action>

-      <action dev="epugh" type="remove">

-        ConfigurationXMLDocument removed until post 1.0.

-      </action>

-      <action dev="epugh" type="fix" issue="CONFIGURATION-18">

-        DatabaseConfiguration doesn't support List properties.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-137">

-        Fixed a bug related to XMLConfiguration. Can't add a new property as an

-        attribute in XMLConfiguration.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-116">

-        Fixed a bug related to XMLConfiguration. XMLConfiguration doesn't

-        support attribute names with a dot.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-4">

-        Fixed a bug related to XMLConfiguration. XMLConfiguration doesn't ignore

-        comments.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-32">

-        Fixed a bug related to XMLConfiguration. XMLConfiguration.save() doesn't

-        escape reserved characters.

-      </action>

-      <action dev="ebourg" type="add" issue="CONFIGURATION-114">

-        Added save methods in XMLConfiguration similar to PropertiesConfiguration

-        to save the configuration to another file.

-      </action>

-      <action dev="ebourg" type="update">

-        Removed the DOM4J implementations in favor of the DOM ones.

-        DOMConfiguration has been renamed to XMLConfiguration, and

-        HierarchicalDOMConfiguration to HierarchicalXMLConfiguration. The

-        elements parsed by the ConfigurationFactory have been changed

-        accordingly.

-      </action>

-      <action dev="ebourg" type="add">

-        Added a save() method to PropertiesConfiguration and save(Writer out),

-        save(OutputStream out), save(OutputStream out, String encoding) to

-        BasePropertiesConfiguration.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-98">

-        List values are now properly stored as comma separated values in the

-        Properties object returned by ConfigurationConverter.getProperties()

-      </action>

-      <action dev="ebourg" type="update">

-        Introduced a ConversionException thrown when the value of a property is

-        not compatible the type requested. It replaces the ClassCastException

-        and the NumberFormatException thrown previously.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-174">

-        Tokens like ${ref} in a PropertyConfiguration are now properly saved.

-      </action>

-      <action dev="ebourg" type="fix" issue="CONFIGURATION-127">

-        The getList() method of a CompositeConfiguration now returns the list

-        composed of the elements in the first matching configuration and the

-        additional elements found in the in memory configuration.

-      </action>

-      <action dev="epugh" type="fix">

-        SubsetConfiguration returns a List on getList(). AbstractConfiguration

-        wouldn't properly deal with a List, only with a Container for getList()!

-        Thanks to jschaible for the unit test.

-      </action>

-      <action dev="jschaible" type="add">

-        Direct support of XML via DOM. New classes DOMConfiguration and HierarchicalDOMConfiguration.

-      </action>

-      <action dev="jschaible" type="update">

-        Update build to not include test configuration files in resulting jar.

-      </action>

-      <action dev="ebourg" type="update">

-        Refactored JNDIConfiguration to use AbstractConfiguration.

-      </action>

-      <action dev="ebourg" type="update" issue="CONFIGURATION-76">

-        Fixed invalid subsets by refactoring out the subset logic into a SubsetConfiguration.

-      </action>

-      <action dev="oheger" type="fix">

-        Reapply the ConfigurationXMLDocument that went missing during migration out of sandbox.

-      </action>

-      <action dev="epugh" type="update">

-        Apply ASL 2.0 license.  Thanks to Jeff Painter for scripting the conversion!

-      </action>

-      <action dev="epugh" type="add">

-        Changed CompositeConfiguration to extend from AbstractConfiuration. This means that the behavior of

-        CompositeConfiguration is much similar to others like PropertiesConfiguration in handling of missing

-        keys, interpolation, etc.. Previously CompositeConfiguration had quite a few differences.

-      </action>

-      <action dev="epugh" type="update">

-        Removed "defaults" from BaseConfiguration. Defaults are now done via using a CompositeConfiguration, either

-        directly or via a ConfigurationFactory. if you want to save changes made to a Configuration, then you use

-        a CompositeConfiguration and get back the inMemoryConfiguration that has the delta of changes. Added a

-        bit of documentation on this.

-      </action>

-      <action dev="epugh" type="update" issue="CONFIGURATION-154">

-        Enhancement: Configuration Comparator.

-      </action>

-      <action dev="epugh" type="update" issue="CONFIGURATION-54">

-        BaseConfiguration: containsKey ignores default properties.

-        I have changed it so that now the defaults are paid attention to.

-      </action>

-      <action dev="ebourg" type="add">

-        The Configuration interface now supports BigDecimal and BigInteger numbers.

-      </action>

-      <action dev="epugh" type="add">

-        ConfigurationException is now thrown by public methods instead of Exception or

-        IOException or whatnot.

-      </action>

-      <action dev="ebourg" type="add">

-        For configuration based on properties files, allow characters like \n etc

-        to be escaped and unescaped.

-      </action>

-      <action dev="ebourg" type="add">

-        New DatabaseConfiguration that uses a database to store the properties.

-        It supports 2 table structures: one table per configuration (2 colums

-        key/value), one table for multiple configurations (2 columns key/value +

-        1 column for the name of the configuration).

-      </action>

-      <action dev="oheger" type="add">

-        ConfigurationFactory now supports the hierarchicalDom4j element in configuration

-        definition file

-      </action>

-      <action dev="ebourg" type="update">

-        Change all Vector objects to List objects.

-      </action>

-      <action dev="oheger" type="add">

-        ConfigurationFactory now supports two types of properties files, additional and

-        override.  Additional properties add each other together.  Override override each

-        other.  This allows you to have a single property that is either aggregated from a

-        number of sources, or have a property that is overridden according to a specific

-        order of sources.

-      </action>

-      <action dev="oheger" type="update">

-        AbstractConfiguration addProperty now delegates to an abstract addPropertyDirect

-        implemented by BaseConfiguration.

-      </action>

-      <action dev="kshaposhnikov" type="update">

-        Changed getString() method to throw a NoSuchElementException instead of "" if the

-        configuration property doesn't exist.

-      </action>

-      <action dev="kshaposhnikov" type="add">

-        Added AbstractConfiguration to make it easier to create subclasses by only

-        having to implement the methods required.

-      </action>

-      <action dev="bdunbar" type="fix">

-        ClassPropertiesConfiguration Additions:

-        Use the classloader of class that is provided by the constructor.

-        Add a constructor that indicates whether to use relative or absolute.

-        Change getPropertyStream to utilize the relative or absolute flag.

-        Add a test case that checks that absolute paths work.

-      </action>

-      <action dev="epugh" type="fix">

-        JNDIConfiguration.getKeys() Addition:

-        The JNDIConfiguration.getKeys() method was returning an unsupported

-        operation error.  However, this is an important method to have

-        supported.

-      </action>

-      <action dev="epugh" type="fix">

-        CompositeConfiguration.getKeys() Fix

-        The CompositeConfiguration.getKeys() method was returning an

-        unordered list of configuration values.  However, many apps

-        expect the order that keys are returned to be the order they

-        are added into the properties file.

-      </action>

-    </release>

-  </body>

-</document>

+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Apache Commons Configuration Release Notes</title>
+    <author email="dev@commons.apache.org">Apache Commons Community</author>
+  </properties>
+
+  <body>
+    <release version="2.7" date="2019-MM-DD"
+             description="Minor release with new features and updated dependencies.">
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-761" due-to="Gary Gregory">
+        Single argument DataConfiguration APIs always create empty arrays.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-762" due-to="Gary Gregory">
+        Use variable arguments.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update ]com.puppycrawl.tools:checkstyle from 8.24 to  8.25.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-763" due-to="Gary Gregory">
+        Update com.fasterxml.jackson.core:jackson-databind from 2.9.9 to 2.10.0.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-765" due-to="Gary Gregory">
+        Refactor XMLConfiguration.write(Writer) to add XMLConfiguration.write(Writer, Transformer).
+      </action>
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-767" due-to="Gary Gregory">
+        NullPointerException in XMLConfiguration#createTransformer() when no FileLocator is set.
+      </action>
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-768" due-to="Gary Gregory">
+        XMLConfiguration#write does not indent XML elements.
+      </action>
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-771" due-to="Gary Gregory">
+        Update com.fasterxml.jackson.core:jackson-databind 2.10.0 -> 2.10.1.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        [test] org.easymock:easymock 4.0.2 -> 4.1.
+      </action>
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-773" due-to="Dan Dragut">
+        User's Guide &gt; Properties files &gt; Saving - small documentation bugs #41.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-775" due-to="Gary Gregory">
+        Update Apache Commons VFS from 2.4.1 to 2.5.0.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-777" due-to="Gary Gregory">
+        Update Apache Commons VFS from 2.5.0 to 2.6.0.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-778" due-to="Gary Gregory">
+        Update optional Apache Commons Codec from 1.13 to 1.14.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from JUnit 4.12 to 4.13.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-779" due-to="Gary Gregory">
+        Update optional jackson-databind from 2.10.1 to 2.10.2.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-783" due-to="Gary Gregory">
+        Update com.fasterxml.jackson.core:jackson-databind from 2.10.2 to 2.10.3.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-784" due-to="Gary Gregory">
+        Update org.yaml:snakeyaml from 1.25 to 1.26 and tweak parser configuration.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-785" due-to="Gary Gregory">
+        Update org.springframework:spring-* from 4.3.25.RELEASE to 4.3.26.RELEASE.
+      </action>
+    </release>
+    
+    <release version="2.6" date="2019-09-13"
+             description="Minor release with new features and updated dependencies.">
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-750" due-to="Jason Pickens, Gary Gregory, Emmanuel Bourg">
+        XMLPropertyListConfiguration cannot set arrays in the correct plist form.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-751" due-to="Gary Gregory">
+        Update Apache Commons Text from 1.6 to 1.7.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-752" due-to="Gary Gregory">
+        Update Apache Commons VFS from 2.3 to 2.4.1.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-754" due-to="Gary Gregory">
+        Update Apache Commons Text from 1.7 to 1.8.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        Fix Javadoc for org.apache.commons.configuration2.PropertiesConfiguration.getIncludeOptional().
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Document "includeOptional" on the site.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-755" due-to="Gary Gregory">
+        [CVE-2014-0114] Update Apache Commons BeanUtils from 1.9.3 to 1.9.4.
+      </action>
+      <action dev="ggregory" type="update" due-to="Kevin Wang">
+        Fix syntax in user guide documentation #33.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-756" due-to="Gary Gregory">
+        Allow for custom behavior to handle errors loading included properties files.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-757" due-to="Gary Gregory">
+        Update org.yaml:snakeyaml from 1.24 to 1.25.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.apache.commons:commons-dbcp2 2.6.0 to 2.7.0.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.apache.commons:commons-pool2 2.6.2 to 2.7.0.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-758" due-to="Gary Gregory">
+        Update commons-codec:commons-codec from 1.12 to 1.13.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.hsqldb:hsqldb 2.4.1 to 2.5.0.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from com.sun.mail:mailapi 1.6.3 to 1.6.4.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-759" due-to="Gary Gregory">
+        Update Spring from 4.3.24.RELEASE to 4.3.25.RELEASE.
+      </action>
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-760" due-to="Gary Gregory">
+        Properties file using cyclical includes cause a StackOverflowError instead of detecting the misconfiguration.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update maven-checkstyle-plugin from 3.0.0 to 3.1.0. 
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Use current version of Checkstyle: 6.18 to 8.24.
+      </action>
+    </release>
+    <release version="2.5" date="2019-05-23"
+             description="Minor release with new features and updated dependencies.">
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-731" due-to="Shuai Zhang, Gary Gregory">
+        Allow user to specify the comments and separator chars.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-738" due-to="Gary Gregory">
+        Update Jackson from 2.9.7 to 2.9.8.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-739" due-to="Gary Gregory">
+        Update Apache Commons Codec from 1.11 to 1.12.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-740" due-to="Gary Gregory">
+        Update Apache Commons VFS from 2.2 to 2.3.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-741" due-to="Gary Gregory">
+        Update Spring from 4.3.19 to 4.3.22.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-743" due-to="Gary Gregory">
+        Update optional library snakeyaml from 1.23 to 1.24.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-747" due-to="Gary Gregory">
+        Update Apache Commons Lang from 3.8.1 to 3.9.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-746" due-to="Gary Gregory">
+        Update Jackson from 2.9.8 to 2.9.9.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-747" due-to="Gary Gregory">
+        Update Spring from 4.3.22 to 4.3.24.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-745" due-to="Gary Gregory">
+        Add the special key "includeoptional" for properties files.
+      </action>
+    </release>
+    <release version="2.4" date="2018-10-23"
+             description="Minor release with new features and updated dependencies.">
+      <action dev="oheger" type="fix" issue="CONFIGURATION-710" due-to="thc202">
+        Fixed numerous typos in user guides.
+      </action>
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-711">
+        Update Apache Commons Lang from 3.7 to 3.8.1.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-712" due-to="Rolland Hobbie">
+        FileHandlerReloadingDetector now has a new refresh() method to
+        initialize the reloading state from the underlying file. This new
+        method is called by DefaultReloadingDetectorFactory when a new detector
+        instance is created. This makes sure that a changed configuration file
+        is directly detected on the first invocation of the
+        isReloadingRequired() method.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-713" due-to="Lars W">
+        Configuration properties can now be converted to regular expressions.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-715" due-to="Patrick Schmidt">
+        With JupIOFactory a new IOFactory implementation is now available that
+        implements handling of whitespace in a way closer to java.util.Properties.
+        This class can be used when stricter compatibility with Java standard
+        methods for reading and writing properties files is needed.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-716" due-to="Patrick Schmidt">
+        JupIOFactory (introduced for CONFIGURATION-715) also implements
+        handling of escape sequences in a way closer to java.util.Properties.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-720">
+        Replace use of deprecated Commons Lang string substitution code for Commons Text.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-694">
+        Update Java requirement from version 7 to 8.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-721">
+        Update Jackson from 2.9.6 to 2.9.7.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-722">
+        Update optional dependency snakeyaml from 1.21 to 1.23.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-723">
+        Update optional Spring dependencies from 4.3.18.RELEASE to 4.3.19.RELEASE.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-724">
+        Add support for Commons Text 1.4 localhost string lookup as a default lookup.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-725">
+        Update Apache Commons Text from 1.4 to 1.5.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-726">
+        Add support for Commons Text 1.5 new string lookups as default lookups.
+      </action>
+      <action dev="ggregory" type="fix" issue="CONFIGURATION-727">
+        org.apache.commons.configuration2.DatabaseConfiguration never closes result sets and statements.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-728">
+        Update Apache Commons Text from 1.5 to 1.6.
+      </action>
+    </release>
+
+    <release version="2.3" date="2018-08-04"
+             description="Minor release with new features and updated dependencies.">
+      <action dev="ggregory" type="update" issue="CONFIGURATION-707">
+        Update Spring from 4.3.14.RELEASE to 4.3.18.RELEASE.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-706">
+        Update optional dependency snakeyaml from 1.20 to 1.21.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-705">
+        Update Jackson from 2.9.5 to 2.9.6.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-652" due-to="Claude Warren">
+        Root node attributes are now updated correctly when loading XML
+        configuration files.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-675">
+        Added a .gitignore file to the project.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-678">
+        Update Apache Commons Codec from 1.10 to 1.11.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-679">
+        Update Jackson from 2.8.9 to 2.9.3.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-680">
+        Update Apache Commons Lang from 3.6 to 3.7.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-681">
+        Update Apache Commons VFS from 2.1 to 2.2.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-682">
+        Update Snakeyaml from 1.18 to 1.19.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-696">
+        Update optional dependency snakeyaml from 1.19 to 1.20.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-683">
+        Update Spring from 4.3.9.RELEASE to 4.3.13.RELEASE.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-695">
+        Update optional dependency Jackson from 2.9.3 to 2.9.5.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-697">
+        Update optional dependency Spring from 4.3.13.RELEASE to 4.3.14.RELEASE.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-686">
+        JSONConfiguration can now handle list structures with complex objects
+        as elements.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-687">
+        Fixed a memory leak in CombinedConfigurationBuilder. Builder for the
+        child sources were created each time a new result configuration was
+        requested; thus the list with child builders got longer and longer.
+        This also had an impact on reloading because unnecessary reloading
+        operations could be triggered. Now it is guaranteed that child builders
+        are created only once.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-688">
+        Fixed a bug related to the handling of multiple include files in
+        PropertiesConfiguration.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-690">
+        ExprLookup.getVariables() no longer returns null, but a copy of the
+        current variables of this lookup object.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-691">
+        ExprLookup now handles expressions that do not return a string result
+        by converting them to string.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-692">
+        ConversionExceptions thrown when accessing the properties of a
+        configuration now contain the original cause of the exception.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-693" due-to="Lars W">
+        Configuration properties can now be converted to the data types File
+        and Path.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-698">
+        Add org.apache.commons.configuration2.MapConfiguration.toString().
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-701" due-to="Nicholas Verbeck">
+        CompositeConfiguration now supports an addConfigurationFirst() method
+        to add child configurations with a higher priority.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-703" due-to="Pascal Essiembre">
+        XMLConfiguration now handles elements correctly whose value consists
+        only of whitespace if the xml:space attribute is set to preserve.
+      </action>
+    </release>
+
+    <release version="2.2" date="2017-10-12"
+             description="Minor release with new APIs and bug fixes.">
+      <action dev="oheger" type="add" issue="CONFIGURATION-673" due-to="Andreas Kuhtz ">
+        Added an Automatic-Module-Name header to the manifest for compatibility
+        with the Java 9 module system.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-671">
+        Fixed a NPE in INIConfiguration when saving a configuration with an
+        empty section.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-670">
+        The node model returned by SubnodeConfiguration.getNodeModel() has now
+        the correct root node set.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-669">
+        Update optional Spring dependency from 4.2.5.RELEASE to 4.3.9.RELEASE.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-667">
+        Update Apache Commons Lang from 3.3.2 to 3.6.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-666">
+        Add convenience ctor ConfigurationRuntimeException(String, Object...).
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-665">
+        Add org.apache.commons.configuration2.AbstractHierarchicalConfiguration.toString().
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-664">
+        Add API org.apache.commons.configuration2.tree.ImmutableNode.getChildren(String).
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-663">
+        Fixed a typo in the upgrade to 2.0 guide.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-661">
+        Update platform requirement from Java 6 to 7.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-660">
+        Add toString() methods here and there to help debugging.
+      </action>
+      <action dev="ggregory" type="add" issue="CONFIGURATION-658">
+        Add API org.apache.commons.configuration2.DataConfiguration.getURI(String) methods.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-656" due-to="The Alchemist">
+        Added new YAMLConfiguration class to support configuration files in
+        YAML format.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-653" due-to="Vincent Maurin">
+        ConfigurationUtils and ConfigurationConverter now offer better support
+        for immutable configurations.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-647" due-to="Vladimir Martinek">
+        INIConfiguration can now be configured to use a custom separator
+        between properties and values when writing an ini file.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-258" due-to="The Alchemist">
+        Added new JSONConfiguration class to support configuration files in
+        JSON format.
+      </action>
+    </release>
+
+    <release version="2.1.1" date="2017-02-05"
+      description="Bugfix release for 2.1">
+      <action dev="oheger" type="fix" issue="CONFIGURATION-649">
+        Improved the handling of lists defined by a string with delimiter
+        characters in XMLConfiguration. Such lists now retain their original
+        format when the configuration is saved.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-648">
+        Made the IOFactory property of PropertiesBuilderParameter compatible
+        with the most recent version of Commons BeanUtils. This version
+        changed the handling of properties starting with multiple uppercase
+        letters.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-646">
+        PropertiesConfiguration now works correctly with the auto-save mode.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-644" due-to="Andrew DeMaria">
+        PropertiesConfigurationLayout no longer duplicates a header comment
+        if a file with another comment is loaded.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-643">
+        Documentation improvements for the user's guide.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-641">
+        Improved documentation of FileBased interface. The Javadocs now state
+        explicitly that the methods should not be called by client code.
+        Exception handling in configuration classes implementing
+        FileLocatorAware has been improved.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-640">
+        PropertiesConfiguration now correctly unescapes some special characters
+        that are always escaped in Java properties files.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-639"  due-to="Rico Neubauer">
+        In the OSGi bundle manifest of the Commons Configuration bundle the
+        package imports for Spring packages are now marked as optional.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-638"  due-to="Ahmet Celik">
+        Improved handling of temporary files and folders in unit tests.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-627">
+        Updated dependency to Commons BeanUtils to version 1.9.3. This fixes an
+        issue with an exception stacktrace that was logged when a
+        ConfigurationBuilder was used.
+      </action>
+    </release>
+
+    <release version="2.1" date="2016-08-20"
+      description="First maintenance release for Configuration 2.x.">
+      <action dev="oheger" type="fix" issue="CONFIGURATION-636"  due-to="Tim Lark">
+        PropertiesConfigurationLayout now allows manipulating the order of keys
+        when the properties file is written.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-634"  due-to="Raviteja Lokineni">
+        HomeDirectoryLocationStrategy now works correctly in the mode that
+        evaluates the FileLocator's base path.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-633">
+        Interpolation was improved to better support properties with multiple
+        values.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-632">
+        The methods getStringArray() and getList() of CompositeConfiguration
+        now support the interpolation of variables that reference properties
+        with multiple values.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-628">
+        Support for the ant build was dropped.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-626">
+        ImmutableConfiguration.getArray() has been deprecated. Arrays can now
+        be queried using the generic get() method in a type-safe way.
+      </action>
+      <action dev="deki" type="add" issue="CONFIGURATION-624">
+        Support Commons Configuration as PropertySource in Spring.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-622">
+        Fixed a problem in INIConfiguration.write() with keys containing a
+        separator character. This separator had been duplicated. Such keys
+        are now handled correctly when the configuration is saved.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-631">
+        Update Apache Commons VFS from 2.0 to 2.1.
+      </action>
+      <action dev="ggregory" type="update" issue="CONFIGURATION-635">
+        Update optional dependency Apache Commons Codec from 1.9 to 1.10.
+      </action>
+    </release>
+
+    <release version="2.0" date="2016-03-24"
+      description="Major redesign of the Configuration 1.x API">
+      <action dev="oheger" type="update" issue="CONFIGURATION-621">
+        Moved ConfigurationLogger class to io package to avoid cyclic
+        dependencies between packages.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-620" due-to="Mark Vedder">
+        Fixed two invalid examples in the user's guide for file-based
+        configurations.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-619">
+        CombinedConfigurationBuilder now supports inheritance of its parameters
+        to child configuration sources. This is enabled by default.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-618">
+        When using immutable configurations exceptions thrown by the wrapped
+        configuration came out as UndeclaredThrowableException. This has been
+        fixed; now the correct original exception is thrown.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-615">
+        Changed generic types in the signatures of a MapConfiguration
+        constructor and AbstractConfiguration.getList(String, List). These
+        changes were made in version 1.10 as fixes for CONFIGURATION-557 and
+        CONFIGURATION-558. But it had been missed to merge them to trunk.
+      </action>
+    </release>
+
+    <release version="2.0-beta2" date="2015-12-05"
+      description="Second beta release, some minor API changes.">
+      <action dev="oheger" type="update" issue="CONFIGURATION-614">
+        References to Commons Logging have been removed from the Configuration
+        API. It is still possible to influence logging by making use of the new
+        ConfigurationLogger abstraction.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-612" due-to="Jon Weygand">
+        The return type of ConfigurationBuilder.getConfiguration() was changed
+        from Configuration to ImmutableConfiguration because this is the base
+        interface for all configuration objects.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-609">
+        Fixed a bug in PropertiesConfiguration related to the loading of include
+        files. The FileHandler used for this purpose was not fully initialized.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-608">
+        Adapted the return type of ReloadingFileBasedConfigurationBuilder.configure().
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-605">
+        XMLConfiguration no longer drops keys when list delimiter characters
+        occur in element values.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-604">
+        Fixed a problem in the conversion of a flat configuration to a
+        hierarchical one that could cause the loss of properties in a
+        combined configuration constructed by an override combiner.
+      </action>
+    </release>
+
+    <release version="2.0-beta1" date="2015-06-19"
+      description="First beta release, getting closer to final.">
+      <action dev="oheger" type="update" issue="CONFIGURATION-598" due-to="Bjarne Bostr&#xF6;m">
+        Removed obsolete ConfigurationBuilder interface in the base package.
+      </action>
+    </release>
+
+    <release version="2.0-alpha2" date="2014-12-20"
+      description="Some more API fine-tuning.">
+      <action dev="oheger" type="add" issue="CONFIGURATION-574">
+        DefaultExpressionEngine can now be customized to match configuration
+        keys in a case-insensitive manner. This is useful for instance for
+        dealing with Windows INI files.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-565">
+        Added support for querying encoded properties.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-564">
+        PropertiesConfiguration now supports again properties without a value
+        and a separator character. The keys of such properties are added to
+        the configuration with an empty String as value.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-427">
+        XMLPropertyListConfiguration can now save arrays in the correct form.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-200">
+        A size() method was added to the ImmutableConfiguration interface.
+      </action>
+    </release>
+
+    <release version="2.0-alpha1" date="2014-09-23"
+      description="First alpha release after a major redesign.">
+      <action dev="oheger" type="update" issue="CONFIGURATION-591">
+        Removed methods from ConfigurationConverter related to ExtendedProperties.
+        This class is no longer supported by recent versions of Commons
+        Collections.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-590">
+        Removed Serializable interface from all configuration implementations.
+        Some configuration classes declared this interface without being
+        actually serializable.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-588">
+        The name of the top-level package and the maven coordinates have been
+        changed to allow a coexistence of Commons Configuration 1.x with 2.0.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-584">
+        The event mechanism has been reworked. There is now a generic event
+        listener interface which can be used to receive notifications from
+        multiple types of event sources.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-582">
+        Fixed a StringIndexOutOfBoundsException in PropertiesConfigurationLayout
+        which was caused by lines containing only whitespace.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-579">
+        A migration guide has been created which supports when upgrading from
+        version 1.x to 2.0.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-578">
+        The user's guide has been fully reworked to cover all new and enhanced
+        features of version 2.0.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-577">
+        The dependency to Commons Collections is no longer needed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-576">
+        A new abstract base class for hierarchical configurations was introduced
+        which supports arbitrary hierarchical data structures. The type of the
+        nodes used by the configuration can now be specified as a generic type
+        argument. This makes the integration of other hierarchical structures
+        easier.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-575">
+        Hierarchical configurations now operate on immutable structures.
+        Data is no longer represented by ConfigurationNode objects. The
+        ImmutableNode class now serves as data container.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-573">
+        XPathExpressionEngine can now deal with namespace prefixes in node and
+        attribute names.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-572">
+        When a CombinedConfiguration is cleared it removes itself as change
+        listener from all child configurations. This fixes a possible memory
+        leak.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-570">
+        Fixed a possible ConcurrentModificationException when a SystemConfiguration
+        instance is passed to the append() or copy() methods.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-567" due-to="Shen liang">
+        XMLBeanDeclaration now escapes node names before they are used to
+        determine nested properties.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-563">
+        The DefaultExpressionEngine class is now immutable. An instance can be
+        shared between multiple configuration objects.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-562">
+        Improved the API of ExprLookup.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-559">
+        It is now possible to define default values for initialization
+        properties of configurations.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-555">
+        Fixed a bug in the handling of the xml:space attribute in
+        XMLConfiguration. The attribute is now also applied to the current
+        element, not only to sub elements.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-554">
+        BeanHelper is no longer a static utility class. Instances can be
+        created with a specific configuration of bean factories. There is still
+        a default instance which can be obtained via the BeanHelper.INSTANCE
+        field.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-553">
+        The code for accessing configuration files hs been reworked. Methods
+        related to locating configuration files have been moved from
+        ConfigurationUtils to a new FileLocatorUtils class. Customizable
+        strategy classes (implementing the new FileLocationStrategy) can be
+        used for searching for configuration files.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-551">
+        The data type conversion mechanism has been made extensible. There is a
+        new interface ConversionHandler which controls the data type conversions
+        available for a configuration object. By setting a custom implementation,
+        conversions can be adapted or extended.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-550">
+        Conversion to Character is now supported.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-546" due-to="Justin Couch">
+        BeanHelper can now process BeanDefinitions initializing properties of
+        collection types of their target beans.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-544" due-to="Oliver Kopp">
+        Added missing dependencies to build.xml.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-542">
+        The mechanism for synchronizing configurations has been completely
+        redesigned. It is now based on Synchronizer objects which can be
+        configured by client code. A new chapter was added to the user's guide
+        regarding thread-safety of configurations.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-540">
+        MapConfiguration now directly uses a Properties object passed to its
+        constructor as data store rather than copying it. This allows
+        SystemConfiguration to be connected to system properties; i.e.
+        changing a property through SystemConfiguration immediately affects
+        the corresponding system property.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-541">
+        Multi-file configurations are no longer restricted to XML configuration
+        files. Arbitrary file-based configurations are now supported.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-539">
+        The deprecated INIConfiguration class was removed.
+        HierarchicalINIConfiguration was renamed to INIConfiguration.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-537">
+        The deprecated ConfigurationFactory class was removed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-536">
+        File-based configurations are now implemented in a different way.
+        The interfaces FileConfiguration and ReloadingStrategy have been
+        removed, also the base classes AbstractFileConfiguration and
+        AbstractHierarchicalFileConfiguration. They are replaced by the
+        FileBased interface and the FileHandler class which implements
+        central I/O functionality. Reloading is now in the responsibility of
+        configuration builders.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-535">
+        DatabaseConfiguration now provides get methods for querying its
+        properties defining the underlying database structures.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-534">
+        The includesAllowed property of PropertyConfiguration is now independent
+        from the existence of a base path.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-533">
+        DatabaseConfiguration now automatically converts CLOBs to strings if
+        they appear in property values.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-530">
+        Concurrent access to configurations and reloading have been completely
+        redesigned. Because reloading is now handled by configuration builders
+        there is no need to acquire a lock in order to protected against a
+        reload operations.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-527" due-to="Matthias Richter">
+        AbstractConfiguration.clearPropertyDirect() is now abstract.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-526" due-to="Oliver Kopp">
+        XMLPropertiesConfiguration now supports loading from and saving to DOM
+        nodes.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-525">
+        PropertiesConfiguration now keeps a comment at the bottom of a
+        properties file. A new footer property was added for reading and
+        writing this footer comment.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-524">
+        Interpolation now works correctly after a configuration was cloned.
+        The ConfigurationInterpolator instance is now cloned, too.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-521" due-to="Oliver Kopp">
+        ConfigurationUtils.fileFromUrl() now correctly handles URL containing
+        encoded percent characters.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-520">
+        Support for reloading of configuration data has been reworked.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-519">
+        Configuration objects are now created via configuration builders. A new
+        API for configuration builders has been added.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-518">
+        Classes and interfaces related to interpolation have been slightly
+        reworked. ConfigurationInterpolator is now thread-safe. There are
+        multiple ways to define the ConfigurationInterpolator object to be
+        used by an AbstractConfiguration instance.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-517">
+        Hierarchical configurations now provide methods to obtain sub
+        configurations for all child elements of a given key.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-516">
+        PropertiesConfiguration no longer escapes double quotes on saving.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-515">
+        The visibility of some internal methods of PropertiesConfiguration.PropertiesWriter
+        has been increased to protected. This simplifies the implementation of
+        a custom escaping strategy.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-514">
+        Bean declarations now support constructor invocations.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-513">
+        HierarchicalConfiguration is now an interface. The base implementation
+        class is named BaseHierarchicalConfiguration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-512">
+        It is now possible to obtain an immutable view on a Configuration or
+        HierarchicalConfiguration object. New interfaces,
+        ImmutableConfiguration, and ImmutableHierarchicalConfiguration have
+        been introduced.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-508">
+        Generic get() methods have been added to the Configuration interface.
+        These methods expect a target class and try to convert the value of
+        the specified property to this target class.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-506">
+        Removed obsolete nested classes Node and NodeVisitor of
+        HierarchicalConfiguration. The related deprecated class
+        ConfigurationKey was removed, too.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-505">
+        XMLConfiguration no longer supports attributes with multiple values or
+        list delimiter parsing in attributes. This feature was complex and
+        error prone and brought little value to the user.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-504">
+        SubnodeConfiguration now provides a new method for clearing it and
+        removing its root node from the parent configuration. The method
+        HierarchicalConfiguration.configurationsAt() now returns a list
+        of SubnodeConfiguration so that it is easier to make direct use of
+        this feature.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-500">
+        XMLConfiguration now adds attributes of elements defining a list to
+        all list nodes.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-496">
+        Concurrent access to configurations and reloading have been completely
+        redesigned. This should reduce the amount of synchronization.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-486">
+        Removed some static fields for specifying global default values.
+        Using static fields in this way is thread-hostile. There are now
+        alternatives for setting default values.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-462">
+        Updated dependency to Commons Lang from version 2.6 to 3.1.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-419">
+        EventSource is now an interface. With BaseEventSource there is a
+        default implementation.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-418">
+        The handling of list delimiters and their escape characters has been
+        reworked. A new ListDelimiterHandler interface was introduced allowing
+        applications to customize the treatment of list delimiters.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-330">
+        Concurrent access to configurations has been reworked.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-204">
+        With the new reloading mechanism automatic and periodic reloading checks
+        can be performed.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-202">
+        Reloading checks can now be performed in a background thread.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-153">
+        It is now possible to define the strategy used for locating
+        configuration files.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-136">
+        Reloading can no longer corrupt a configuration instance. This is now
+        handled by a configuration builder; the original configuration instance
+        is not modified.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-26">
+        It is now possible to influence the conversion from a container object
+        (a collection or an array) to a single value (e.g. what is returned by
+        getString() if the current property has multiple values). Per default,
+        the first value is returned. By overriding methods of the
+        configuration's ConversionHandler, this behavior can be changed.
+      </action>
+    </release>
+
+    <release version="1.10" date="2013-10-27"
+      description="Minor bug fixes and improvements">
+      <action dev="oheger" type="update" issue="CONFIGURATION-500">
+        XMLConfiguration now adds attributes of elements defining a list to
+        all list nodes.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-525">
+        PropertiesConfiguration now keeps a comment at the bottom of a
+        properties file. A new footer property was added for reading and
+        writing this footer comment.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-526" due-to="Oliver Kopp">
+        XMLPropertiesConfiguration now supports loading from and saving to DOM
+        nodes.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-534">
+        The includesAllowed property of PropertyConfiguration is now independent
+        from the existence of a base path.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-546" due-to="Justin Couch">
+        BeanHelper can now process BeanDefinitions initializing properties of
+        collection types of their target beans.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-550">
+        Conversion to Character is now supported.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-555">
+        Fixed a bug in the handling of the xml:space attribute in
+        XMLConfiguration. The attribute is now also applied to the current
+        element, not only to sub elements.
+      </action>
+      <action dev="henning" type="fix" issue="CONFIGURATION-556">
+        In 1.7 and before, any change to the system properties was
+        immediately reflected in a SystemConfiguration object. This
+        behavior broke in 1.8 and 1.9. This has been fixed for 1.10.
+      </action>
+      <action dev="henning" type="fix" issue="CONFIGURATION-557">
+        In 1.7 and before, it was possible to pass an arbitrary Map
+        into the constructor of MapConfiguration. With the
+        generification in 1.8, this actually broke and it was no
+        longer possible to pass in e.g. a Map&lt;String, String&gt;
+        because the signature now required a Map&lt;String,
+        Object&gt;. Changing the constructor to accept a
+        Map&lt;String, ?&gt; restores this.
+      </action>
+      <action dev="henning" type="fix" issue="CONFIGURATION-558">
+        Similar to CONFIGURATION-557, the getList(String, List) method
+        was generified to be getList(String, List&lt;Object&gt;) but
+        needs to be getList(String, List&lt;?&gt;) so that code that
+        used a more specific list (such as a List&lt;String&gt;) still
+        compiles against the new API.
+      </action>
+    </release>
+
+    <release version="1.9" date="2012-08-22"
+      description="Minor bug fixes and improvements">
+      <action dev="oheger" type="update" issue="CONFIGURATION-503" due-to="Tino Sino">
+        Small changes in user guide documentation.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-502" due-to="Tino Sino">
+        Improvements of basic features and AbstractConfiguration documentation.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-501">
+        XMLPropertyListConfiguration no longer swallows exception caused by
+        invalid date properties. Now a warning message is logged.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-495">
+        List properties can now be set correctly on a HierarchicalConfiguration
+        if delimiter parsing is disabled.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-488">
+        Made static DateFormat fields in XMLPropertyListConfiguration.PListNode
+        final and added a note about proper synchronization.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-487">
+        DataConfiguration.get() now also works with String properties and if no
+        data type conversion is required.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-483">
+        DatabaseConfiguration now always closes the result set.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-482" due-to="Chris Seieroe">
+        The Import-Package section in the OSGi manifest now uses the
+        resolution:=optional directive for optional dependencies.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-481">
+        Variable substitution in configuration sources declared in a definition
+        file for DefaultConfigurationBuilder now works across multiple sources.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-477">
+        PropertyListConfiguration now can deal with C-style comments in plist
+        configuration files. Both block and single-line comments are supported.
+      </action>
+    </release>
+
+    <release version="1.8" date="2012-02-04"
+      description="Support for Java 1.5">
+      <action dev="oheger" type="fix" issue="CONFIGURATION-476">
+        Fixed possible ClassCastExceptions in CompositeConfiguration related to
+        special in-memory configurations.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-475">
+        Class ConfigurationKey was deprecated in favor of DefaultConfigurationKey.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-474">
+        Implemented delimiter parsing in HierarchicalINIConfiguration to be
+        consistent with other Configuration implementations. Note that this can
+        impact existing code. To switch back to the old behavior, call
+        setDelimiterParsingDisabled(true) before loading the configuration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-471">
+        CompositeConfiguration now provides better support for child
+        configurations that are used as in-memory configuration.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-470">
+        Classes generated by JavaCC are now created dynamically during the
+        build process.
+      </action>
+      <action dev="ebourg" type="add">
+        Commons Configuration now requires Java 5 or later.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-466">
+        Binary literals are now supported (i.e Ob11010001).
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-465">
+        Updated the dependency to Commons Jexl to version 2.1.1. This version
+        provides correct OSGi manifest headers.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-463">
+        Improved documentation of AbstractFileConfiguration related to load()
+        methods and their impact on the base path.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-461">
+        The project now uses standard Maven directory layout.
+      </action>
+    </release>
+
+    <release version="1.7" date="2011-09-07"
+      description="Many bugfixes, some new features.">
+      <action dev="oheger" type="fix" issue="CONFIGURATION-460">
+        Reloading now also works for configuration sources declared in the
+        additional section of a configuration definition file for
+        DefaultConfigurationBuilder.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-459">
+        ConfigurationFactory has been deprecated. The user guide was updated to
+        no more mention this class.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-458">
+        HierarchicalConfiguration now provides a specific implementation of the
+        clear() method. This is more efficient and also solves some other
+        problems related to clearing a SubnodeConfiguration.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-456">
+        Improved Javadocs of getKeys(String) method for some configuration
+        classes.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-455">
+        HierarchicalINIConfiguration.getSection() now creates a section if it
+        does not exist. The SubnodeConfiguration returned by this method is now
+        always connected to the parent ini configuration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-452">
+        XPathExpressionEngine now provides better support for the setProperty()
+        method.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-448">
+        The parsing of ini files has been improved for property definitions
+        containing multiple separator characters.
+      </action>
+      <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.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-445">
+        Transforming a CombinedConfiguration with ViewNodes to an
+        XMLConfiguration could cause problems with attributes. This has been
+        fixed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-439">
+        Child configuration builders created for a &lt;configuration&gt; element
+        in a configuration definition file now inherit the configuration and
+        error listeners from the original DefaultConfigurationBuilder. This
+        makes it possible to suppress log output created for optional
+        configurations.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-438" due-to="Mike Noordermeer">
+        JNDIConfiguration.getKeys() no more logs an exception if the prefix does
+        not exist.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-437">
+        Child configuration builders created for a &lt;configuration&gt; element
+        in a configuration definition file now inherit some of their properties
+        from the builder object which processed the file.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-436">
+        The optional dependency to Apache Ant has been changed to the new
+        groupId org.apache.ant. The version was updated to the most recent
+        version 1.8.2 (older versions should still work).
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-434">
+        HierarchicalINIConfiguration now recognizes comment characters in
+        property definitions only if they are preceded by whitespace. Thus
+        comment characters can now be part of the property value. This is for
+        instance required for the definition of file paths which use the
+        semicolon as path separator.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-433">
+        Minor improvements of the support for indexed properties in
+        ConfigurationDynaBean.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-432">
+        The methods getList() and getStringArray() of AbstractConfiguration can
+        now handle single-valued properties of primitive types.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-428">
+        XMLConfiguration no longer escapes backslashs in the values of
+        XML elements.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-424">
+        HierarchicalINIConfiguration now works correctly with configurations
+        that contain only properties in the global section.
+      </action>
+      <action dev="rgoers" type="fix" issue="CONFIGURATION-423" due-to="William Buckley">
+        testFromClassPath() can fail when it should not because of inconsistent escaping of output from
+        PropertiesConfiguration.getURL() and FileChangedReloadingStrategy.getFile().toURL().
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-418">
+        A bug related to the interpretation of escape sequences for backslashes
+        has been fixed. The user guide has also been improved in this area.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-415">
+        Files with a plus character in their names are now handled correctly.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-413" due-to="Alexander Prishchepov">
+        SubsetConfiguration now produces correct events.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-412">
+        DatabaseConfiguration can now be instructed to perform a commit after an
+        update of the managed database table. This makes it usable in
+        environments where the connections do not use auto-commit mode.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-410">
+        Added a refresh() method to AbstractFileConfiguration and
+        AbstractHierarchicalFileConfiguration.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-409">
+        HierarchicalINIConfiguration now correctly saves sections whose name
+        contains delimiter characters.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-408">
+        PropertiesConfiguration.save() escaped slashes in properties values.
+        This was caused by a bug in commons-lang 2.4. Updating to the new
+        version commons-lang 2.5 fixed this problem.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-407">
+        Fixed a potential IllegalStateException in HierarchicalINIConfiguration
+        that can be thrown when the global section is requested concurrently.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-405">
+        XMLPropertyListConfiguration no longer throws a ConfigurationException
+        if the file to be loaded does not have an outer dict element.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-404" due-to="Rob Walker">
+        The default expression engine used by hierarchical configurations used to
+        throw a NumberFormatException if invalid indices were used in property
+        keys. This has been fixed. As a side effect brackets can now be used in
+        property keys.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-403">
+        When an empty XMLConfiguration was saved and reloaded the root element
+        was assigned an empty text value. Because of this isEmpty() returned
+        false for this configuration. This has been fixed.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-399">
+        Default variable interpolation now supports the env: prefix for
+        referencing environment variables.
+      </action>
+      <action dev="rgoers" type="fix" issue="CONFIGURATION-397">
+        Schema violation exceptions are now propagated back to the caller.
+      </action>
+       <action dev="rgoers" type="fix" issue="CONFIGURATION-390">
+        XMLConfiguration and CombinedConfiguraton are now synchronized to fix problems
+        caused by reloading in a multithreaded environment.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-396">
+        HierarchicalConfiguration.NodeVisitor is now passed the correct key to
+        its visitAfterChildren() method.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-393">
+        BaseConfiguration.clone() now also clones collections stored in the
+        internal map. This causes list properties to be handled correctly.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-389">
+        DefaultConfigurationBuilder now supports defining ini files in its
+        configuration definition file.
+      </action>
+      <action dev="rgoers" type="fix" issue="CONFIGURATION-388">
+        Attribute or element values will not be escaped when attribute or element splitting are disabled.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-363">
+        When using Commons Lang 2.6 or higher as dependency nested interpolation
+        in variable names is supported.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-362">
+        Empty dictionaries in a PropertyList configuration are now preserved when the configuration is saved.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-385">
+        DatabaseConfiguration now generates correct events for the clear() and
+        clearProperty() methods.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-380">
+        Add ExprLookup to allow expressions to be evaluated in configurations. When
+        used, this requires that Apache Commons Jexl be added as a dependency to
+        projects using Commons Configuration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-374">
+        MapConfiguration now provides a way of controlling the trimming
+        behavior.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-378">
+        Added MergeCombiner to allow elements in two configurations to be merged when the
+        element and attributes in the first file match those in the second file.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-340">
+        File system access has been abstracted to a FileSystem interface. Two implementations
+        are provided, DefaultFileSystem that behaves in a backward compatible manner and
+        VFSFileSystem which uses Commons VFS to retreive and store files.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-314">
+        PropertiesConfigurationLayout now allows setting the line separator to
+        be used when writing the properties file.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-371">
+        PropertiesConfigurationLayout now also stores the property separators used for
+        the single properties. It is also possible to change them for specific
+        properties or set a global properties separator. In earlier versions
+        the separator was hard-coded to &quot; = &quot;.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-370">
+        PropertiesConfiguration now defines a nested interface IOFactory. Using
+        this interface it is possible to inject custom PropertiesReader and
+        PropertiesWriter implementations.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-368">
+        SubnodeConfiguration now fires an event of type EVENT_SUBNODE_CHANGED
+        if a structural change of the parent configuration was detected. If the
+        SubnodeConfiguration is contained in a CombinedConfiguration, the
+        CombinedConfiguration receives this event and can update itself.
+      </action>
+      <action dev="rgoers" type="fix" issue="CONFIGURATION-361">
+        MultiFileHierarchicalConfiguration was not using basepath to
+        construct the file url. It also threw an exception if the
+        file pattern resolved to a non-existent file. This is now
+        configurable.
+      </action>
+      <action dev="joehni" type="update" issue="CONFIGURATION-375">
+        Align interpolation functionality of SubnodeConfiguration and
+        SubsetConfiguration. SubsetConfiguration will now also interpolate
+        keys of the parent configuration or use the local lookups of its
+        parent. SubnodeConfiguration is in turn now able to lookup local
+        keys as well.
+      </action>
+      <action dev="joehni" type="update" issue="CONFIGURATION-376">
+        Align interpolation functionality of SubnodeConfiguration and
+        SubsetConfiguration.
+      </action>
+      <action dev="joehni" type="update" issue="CONFIGURATION-377">
+        Align interpolation functionality of SubnodeConfiguration and
+        SubsetConfiguration.
+      </action>
+      <action dev="joehni" type="fix" issue="CONFIGURATION-369">
+        SubsetConfiguration did not use locally registered lookups of its
+        interpolator.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-359">
+        Fixed broken links to the API documentation in the user's guide.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-358">
+        Improvements of the user's guide for hierarchical configurations.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-357">
+        The message of the ConversionException thrown by
+        AbstractConfiguration.getBigInteger() is now correct.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-356">
+        Added getConfigurations and getConfigurationNameList.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-257">
+        Allow configurations to be validated using XML Schemas.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-355">
+        Allow configurations to be validated using XML Schemas.
+      </action>
+    </release>
+
+    <release version="1.6" date="2008-12-25"
+      description="Another set of smaller bug fixes">
+      <action dev="oheger" type="update">
+        Some dependencies to other Commons components have been updated to the
+        recent versions. Affected are Commons Lang, Commons Collections,
+        Commons Logging, Commons BeanUtils, and Commons JXPath. The older
+        versions should still work.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-353">
+        Allow system properties to be set from a configuration file.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-351">
+        Allow variable resolvers to be defined configured in
+        DefaultConfigurationBuilder.
+      </action>
+      <action dev="rgoers" type="add" issue="CONFIGURATION-350">
+        Added MultiFileHierarchicalConfiguration, DynamicCombinedConfiguration
+        and PatternSubtreeConfigurationWrapper.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-349" due-to="Ralph Goers">
+        The visibility of DefaultConfigurationBuilder.XMLConfigurationProvider
+        was changed from package local to public. This makes it easier to
+        implement providers that create configuration classes derived from
+        XMLConfiguration.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-348">
+        AbstractHierarchicalFileConfiguration.getKeys() now also checks whether
+        a reload is required.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-347">
+        AbstractFileConfiguration.getKeys() now returns an iterator that points
+        to a snapshot of the keys of the configuration. This prevents
+        ConcurrentModificationExceptions during iteration when a reload is
+        performed.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-346">
+        ConfigurationUtils.convertToHierarchical() now creates multiple
+        configuration nodes for properties with multiple values. This
+        improves compatibility with queries.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-345">
+        PropertiesConfiguration now per default uses the encoding "ISO-8859-1"
+        for loading properties files.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-344">
+        CombinedConfiguration could cause a deadlock when it was accessed while
+        concurrently a reload of one of its child configuration happened. This
+        was fixed by reducing synchronization where it is not strictly
+        necessary.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-341">
+        The "force reload check" mechanism of CombinedConfiguration now also
+        works with sub configurations created by configurationAt().
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-339">
+        When performing interpolation the methods getList() and getStringArray()
+        of CompositeConfiguration did not take the order of child configurations
+        into account. This could lead to wrong interpolated values when the key
+        was contained in multiple child configuration. Interpolation is now
+        always done in the correct order.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-338" due-to="David Donn">
+        PropertiesConfiguration now also performs interpolation when searching
+        for include files. This means that the name of a file to include can be
+        determined by another property.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-337" due-to="Ralph Goers">
+        DefaultConfigurationBuilder now supports defining new configuration
+        providers in the configuration definition file.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-336">
+        When converting a flat configuration to a hierarchical one it is now
+        possible to specify the expression engine to be used for this purpose.
+        This may be necessary if the flat configuration contains keys with
+        special characters interpreted by the expression engine.
+        CombinedConfiguration defines the new setConversionExpressionEngine()
+        method. The expression engine passed to this method will be used when
+        converting flat child configurations to hierarchical ones.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-335">
+        XMLConfiguration now allows disabling the attribute splitting mechanism
+        introduced in the 1.5 release (as part of the fix for CONFIGURATION-268).
+        This may be necessary for correctly processing attributes containing
+        both the list delimiter and the attribute delimiter character. The new
+        property &quot;disableAttributeSplitting&quot; was added for this
+        purpose.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-334">
+        Made handling of parent nodes more consistent when setRoot() or
+        setRootNode() of HierarchicalConfiguration are involved.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-332">
+        Properties written through a DataConfiguration to a wrapped
+        PropertiesConfiguration got lost when the PropertiesConfiguration was
+        saved. This has been fixed.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-331">
+        XMLBeanDeclaration now defines a factory method createBeanDeclaration()
+        for creating the declarations for complex nested properties. This
+        method can be overridden by derived classes for injecting custom
+        BeanDeclaration implementations.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-328">
+        A bug in XMLConfiguration.addNodes() made it impossible to add
+        attribute nodes using this method. This has been fixed.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-327">
+        INIConfiguration misinterpreted variables in the global section with
+        a dot in their name as section names. HierarchicalINIConfiguration fixes
+        this problem.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-326">
+        INIConfiguration does not support obtaining a subset for the global
+        section. HierarchicalINIConfiguration provides the getSection() method
+        that returns the content of the global section if null is passed in as
+        section name.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-325">
+        INIConfiguration does not return the global section in its getSections()
+        method. HierarchicalINIConfiguration fixes this problem.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-324">
+        HierarchicalINIConfiguration adds support for line continuation.
+      </action>
+      <action dev="oheger" type="update">
+        INIConfiguration has been deprecated. Its functionality is now available
+        through the new HierarchicalINIConfiguration class.
+      </action>
+      <action dev="oheger" type="add">
+        With HierarchicalINIConfiguration a complete new Configuration
+        implementation for parsing Windows INI files is available. This new
+        class is a full replacement of INIConfiguration and addresses some of its
+        shortcomings. Being derived from HierarchicalConfiguration it offers
+        the enhanced functionality of hierarchical configurations.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-322">
+        ConfigurationDynaBean now works properly with indexed properties
+        stored internally in the underlying configuration as arrays.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-321">
+        The iterator returned by HierarchicalConfiguration.getKeys(String prefix)
+        now also contains the prefix if this key is contained in the
+        configuration.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-320">
+        XMLPropertyListConfiguration is no longer limited to 32 bits integers.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-318">
+        When an XMLConfiguration is created using the copy constructor, the name
+        of the root element is now preserved.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-316">
+        Changing the text of the root element of an XMLConfiguration had no
+        effect when the configuration was saved. This has been fixed.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-315">
+        CombinedConfiguration used to send two EVENT_COMBINED_INVALIDATE events
+        for each modified child configuration. Now this event is sent only
+        once after the affected child configuration was updated.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-307">
+        XMLConfiguration now supports the xml:space attribute. This attribute
+        can be used to preserve whitespace in the content of XML elements.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-306">
+        INIConfiguration now preserves whitespace in quoted values.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-302">
+        If a change has been detected by FileChangedReloadingStrategy, the
+        reloadingRequired() method will now return true until
+        reloadingPerformed() has been called.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-301">
+        Fixed a NullPointerException that could be thrown under certain
+        circumstances when saving an XMLConfiguration that was created using
+        the constructor that takes a HierarchicalConfiguration.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-309">
+        Instantiating an XMLPropertyListConfiguration no longer fails
+        if the DTD is missing from the classpath.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-300">
+        It's now possible to read a configuration file containing
+        a '#' in its name (requires Java 1.4 or above).
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-260">
+        Fixed the date format for XMLPropertyListConfiguration.
+      </action>
+    </release>
+
+    <release version="1.5" date="2007-11-24" description="Many smaller bugfixes">
+      <action dev="oheger" type="update" due-to="J&#xF6;rg Schaible">
+        Some of the dependencies in the m2 pom have been updated to be more
+        consistent.
+      </action>
+      <action dev="oheger" type="update" due-to="J&#xF6;rg Schaible">
+        The dependency to commons-logging was updated to the current version
+        1.1. Older versions of commons-logging will still work.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-273">
+        A new method interpolatedConfiguration() was added to AbstractConfiguration.
+        This method returns a configuration with the same type and
+        content as the original configuration, however all variables have been
+        resolved.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-299">
+        Resolving of variables with the prefix const (constant fields) caused
+        a ClassCastException under certain circumstances if non-String fields
+        were involved. This has been fixed.
+      </action>
+      <action dev="oheger" type="update" due-to="Nicolas De Loof">
+        The dependencies to commons-codec and commons-jxpath have been marked
+        as optional. They are not required by the core classes.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-284" due-to="Nicolas De Loof">
+        There is a new configuration implementation EnvironmentConfiguration,
+        which provides access to (OS) environment variables. On Java &gt;= 1.5
+        this class can be directly used; on earlier versions a dependency to ant
+        is required.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-296">
+        A bug in XMLConfiguration caused that attributes of the root element
+        could not be changed. This has been fixed.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-290">
+        A new method registerEntityId() was added to XMLConfiguration, which
+        allows to register URLs for entities. A new default implementation of
+        the EntityResolver interface handles these entities automatically.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-295">
+        The subset() method of HierarchicalConfiguration now takes the value of
+        the subset's root node into account if it is not ambigous.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-294">
+        Nodes added to a XMLConfiguration using the addNodes() method could
+        lose their value when the configuration was saved. This is now fixed.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-272">
+        New copy() and append() methods have been added to AbstractConfiguration.
+        They replace the methods with the same names in ConfigurationUtils,
+        which do not handle all features of AbstractConfiguration properly (e.g.
+        list delimiters in property values are incorrectly treated). To avoid
+        such problems, the new methods should be used.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-291">
+        The addNodes() method of hierarchical file-based configurations now
+        correctly triggers an auto save.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-287">
+        HierarchicalConfiguration.addNodes() now resets the reference property
+        of all nodes to be added. This fixes a problem with XMLConfiguration,
+        which now detects the added nodes as new and treats them correctly when
+        the configuration is saved.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-285">
+        DefaultConfigurationBuilder will now notify registered error listeners
+        about optional configuration sources that could not be created. Before
+        exceptions thrown by optional configurations were swallowed
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-283">
+        ConfigurationUtils.convertToHierarchical() now correctly deals with
+        property values containing escaped list delimiters. This also affects
+        CombinedConfiguration when sub configurations with such property values
+        are contained.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-275">
+        AbstractConfiguration.addProperty() now correctly deals with list and
+        array properties if delimiter parsing is disabled.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-282">
+        The default expression engine used by HierarchicalConfiguration
+        instances is now lazily initialized. This avoids NullPointerExceptions
+        in certain server environments after a redeploy.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-281">
+        Cycles in the JNDI tree no longer cause a stack overflow in
+        JNDIConfiguration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-277">
+        The base implementation of clear() in AbstractConfiguration now checks
+        for a potential UnsupportedOperationException when iterating over the
+        existing properties.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-280"
+        due-to="Roman Kurmanowytsch">
+        Using file-based configurations in auto-save mode together with a
+        reloading strategy could cause data loss. This has been fixed.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-279">
+        A PropertiesConfiguration that was created from a non existing file
+        lost its content when it was saved. This problem has been solved.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-215">
+        A new getSource() method was added to CompositeConfiguration and
+        CombinedConfiguration, which returns the child configuration, in which
+        a given property is defined.
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-274">
+        PropertiesConfiguration now supports escaping the escape character for
+        list delimiters.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-269">
+        PropertiesConfiguration no longer escapes the list delimiter on saving
+        if the list delimiter has been disabled.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-270">
+        List properties and properties containing interpolated variables
+        are now properly saved by INIConfiguration.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-268">
+        When delimiter parsing was disabled for XMLConfiguration, saving and
+        loading the configuration accidently added escape characters to properties
+        containing the list delimiter character. This has been fixed. It is now
+        also possible to escape the escape character itself.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-253">
+        The return value of FileConfiguration.getFile() is now always
+        consistent with the result of getURL().
+      </action>
+      <action dev="ebourg" type="update">
+        INIConfiguration uses the platform's specific line separator instead
+        of the Windows line separator.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-267">
+        INIConfiguration flushes the output at the end of a save operation.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-265">
+        For hierarchical file-based configurations the auto-save mechanism is
+        now also triggered if a subnode configuration is changed. In such a case
+        the new event type EVENT_SUBNODE_CHANGED will be sent to registered
+        listeners.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-266" due-to="Tobias Noebel">
+        ConfigurationInterpolator now also invokes the default lookup object for
+        variables with a prefix that could not be resolved by their associated
+        lookup object.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-264">
+        A SubnodeConfiguration per default does not see certain changes of its
+        parent configuration (e.g. reloads). With a new boolean parameter of
+        HierarchicalConfiguration's configurationAt() method a mode can be
+        enabled, in which the subnode configuration checks for such changes and
+        reconstructs itself if necessary.
+      </action>
+      <action dev="ebourg" type="fix">
+        byte[] properties are properly saved as data fields in the plist
+        configurations (PropertyListConfiguration and XMLPropertyListConfiguration).
+      </action>
+      <action dev="ebourg" type="add">
+        DataConfiguration now supports java.net.InetAddress,
+        javax.mail.internet.InternetAddress, and Java 5 enumeration types.
+        Properties are converted to these types using the new generic getters.
+      </action>
+      <action dev="ebourg" type="fix">
+        The object getters in DataConfiguration with no default value
+        (i.e getURL(key)) now throw a NoSuchElementException if the flag
+        throwExceptionOnMissing is set.
+      </action>
+      <action dev="ebourg" type="add">
+        Generic get methods have been added to DataConfiguration (get(),
+        getArray() and getList())
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-263">
+        XMLConfiguration used to drop attributes when an element's value was a
+        list. This has been fixed.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-249">
+        File configurations can now be saved to FTP URLs, or any other URL
+        protocol supporting data output.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-180">
+        Fixed a potential issue in DatabaseConfiguration where an error on
+        closing a statement would prevent the connection from being closed.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-261">
+        Date objects are now supported in ASCII plist files.
+      </action>
+      <action dev="ebourg" type="update">
+        XMLPropertyListConfiguration no longer requires commons-digester and
+        commons-beanutils to work.
+      </action>
+      <action dev="ebourg" type="update">
+        Fixed INIConfiguration to handle the quoted values and the lines
+        containing a value and a comment.
+      </action>
+    </release>
+
+    <release version="1.4" date="2007-04-08" description="Improved interpolation, configuration for INI files, reloading strategy triggered with JMX, bug fixes.">
+      <action dev="oheger" type="update" issue="CONFIGURATION-256">
+        MapConfiguration and the web-based configurations now treat strings
+        that contain an escaped list delimiter correctly: The escape character
+        will be removed, so that for instance "foo\,bar" becomes "foo,bar".
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-255">
+        DatabaseConfiguration now handles list delimiters in property values
+        correctly.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-254" due-to="Carsten Kaiser">
+        After cloning a XMLConfiguration there was still a connection to the
+        original configuration. So when the clone was modified and then saved
+        the content of the original configuration was written. This has now
+        been fixed.
+      </action>
+      <action dev="oheger" type="update">
+        Class loading in BeanHelper is now done using ClassUtils of Commons
+        Lang.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-237" due-to="Nicolas de Loof">
+        With ManagedReloadingStrategy a new reloading strategy for file-based
+        configurations was added that can be triggered through JMX.
+      </action>
+      <action dev="oheger" type="update">
+        The dependencies to Commons Lang, Commons Collections, and Commons Digester
+        are updated to use the recent available version. However older versions
+        will still work.
+      </action>
+      <action dev="oheger" type="add">
+        A pom for maven 2 was added.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-252">
+        ConfigurationUtils.getFile() now always checks first whether the passed
+        in file name is absolute. If it is, this file will be returned. This
+        prevents that on Unix under certain circumstances absolute file names
+        are interpreted as relative ones.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-251">
+        The dependency to xml-apis was changed to the version 1.0.b2. The so
+        far used version 2.0.2 is reported to be bogus.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-245">
+        In addition to configuration event listeners now so-called configuration
+        error listeners are supported. These listeners are notified about
+        internal errors that had been logged and swallowed by privious versions.
+        The new enableRuntimeExceptions() method of ConfigurationUtils
+        registers a special error listener at the passed in configuration that
+        generates a runtime exception when an error event is received.
+      </action>
+      <action dev="oheger" type="add">
+        AbstractConfiguration now allows to set an instance specific logger
+        using the setLogger() method. This gives clients more control over a
+        configuration's logging behavior.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-155">
+        SubsetConfiguration and CompositeConfiguration were updated to fully
+        support an instance specific list delimiter. Concerning splitting of
+        string properties that contain a list delimiter character, these
+        classes now behave like a "normal" configuration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-192">
+        Variable interpolation features have been improved. A variable can now
+        have the form ${prefix:variableName} where the prefix
+        defines the type of the variable. The standard types sys for
+        system properties and const for constants are supported.
+        Variables without a prefix are treated as references to other
+        configuration properties (which is compatible to earlier versions).
+      </action>
+      <action dev="oheger" type="update">
+        Commons Configuration now depends on Commons Lang 2.2. Some features
+        of Lang's new text package are used.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-244">
+        The number of dependencies needed for DefaultConfigurationBuilder was
+        reduced by letting some of the default configuration providers resolve
+        their classes per reflection.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-240">
+        File-based configurations with a reloading strategy did not work well
+        together with CombinedConfiguration because the reloading strategy is
+        only checked when its associated configuration is accessed (which does
+        not happen when only the combined configuration is queried).
+        As a workaround CombinedConfiguration now provides the boolean
+        forceReloadCheck property. If this is set to true, all contained
+        configurations will be triggered when a property is queried. This will
+        cause a reload if necessary.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-243">
+        Configuration declarations in the configuration definition file for
+        DefaultConfigurationBuilder that are marked as optional now support a
+        new attribute config-forceCreate. If this attribute is set
+        to true and the initialization of the configuration fails,
+        DefaultConfigurationBuilder tries to add an empty configuration of the
+        correct type to the resulting combined configuration. Before this
+        change optional configurations that caused errors were never added to
+        the combined configuration.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-241">
+        CompositeConfiguration.clearProperty() now generates the correct
+        update events.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-242">
+        The configuration returned by HierarchicalConfiguration.subset()
+        performed variable interpolation only in the keys that belong to the
+        subset. Now the parent configuration is searched, too, to resolve the
+        value of the referenced property. This is consistent with the way
+        SubnodeConfiguration works.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-234">
+        DefaultConfigurationBuilder now internally uses the standard expression
+        engine for hierarchical configurations. So the dependency to Commons
+        JXPath is no more needed when this class is used. Note that this change
+        has some impact on existing code that manually sets properties before
+        the combined configuration is created; this code must now be adapted to
+        the changed syntax of property keys.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-236">
+        HierarchicalConfiguration and some of its sub classes now define a
+        copy constructor.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-197" due-to="Trevor Charles Miller">
+        A new configuration class for windows ini files was added.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-229">
+        For file-based configurations loaded by ConfigurationFactory the load()
+        method was called before all of the properties specified by attributes
+        of the XML element have been initialized. Now load() is called after
+        property initialization.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-235">
+        Interpolation of non string values did not work when SubsetConfiguration
+        was involved. This has now been fixed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-227">
+        The compatibility of ConfigurationDynaBean with other configuration types
+        than those that inherit from BaseConfiguration was improved.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-233" due-to="Rainer Jung">
+        The getList() method of CompositeConfiguration does now fully support
+        variable interpolation. So it is possible to refer to a variable in
+        one (sub) configuration that is defined in another configuration.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-230">
+        XPathExpressionEngine used to create wrong keys for attribute nodes.
+        This caused some operations on XMLConfiguration to fail when such an
+        expression engine was set (e.g. reloading). Now correct keys for
+        attributes are constructed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-228">
+        Some of the methods of file-based hierarchical configurations (e.g.
+        subset() or configurationAt()) did not take an eventually set reloading
+        strategy into account. This is now fixed by overriding the internal
+        fetchNodeList() method in AbstractHierarchicalFileConfiguration and
+        letting it always check for a reload.
+      </action>
+    </release>
+
+    <release version="1.3" date="2006-09-24">
+    </release>
+
+    <release version="1.3-rc2" date="2006-09-03">
+      <action dev="oheger" type="update" issue="CONFIGURATION-223" due-to="Gabriele Garuglieri">
+        AbstractFileConfiguration now overrides addProperty() and setProperty()
+        instead of addPropertyDirect() to implement the auto save feature.
+        This was necessary to properly integrate PropertiesConfigurationLayout.
+        It has also the advantage that an auto save is triggered only once if
+        multi-valued properties are involved (before a save operation was
+        performed for each property value).
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-222" due-to="Gabriele Garuglieri">
+        The new PropertiesConfigurationLayout class broke the save() operation
+        of PropertiesConfiguration when an instance was newly created and
+        populated in memory. This is fixed now by ensuring that a layout object
+        is immediately created and registered as event listener at the
+        configuration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-221" due-to="Rainer Jung">
+        ConfigurationFactory now supports variables in its configuration
+        definition files. These variables are resolved using system properties
+        and have the typical ${} syntax.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-216" due-to="Gabriele Garuglieri">
+        There were still some problems with resolving relative paths when
+        configuration files are loaded from classpath. This fix addresses these
+        issues.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-220">
+        DataConfiguration.getDateArray() used to ignore the format argument.
+        This was fixed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-219">
+        PropertiesConfiguration now defines its own clone() method to handle
+        the associated PropertiesConfigurationLayout object correctly.
+      </action>
+    </release>
+
+    <release version="1.3-rc1" date="2006-07-30">
+      <action dev="oheger" type="update" issue="CONFIGURATION-217">
+        The dependency to servletapi was updated from version 2.3 to version
+        2.4, but version 2.3 will still work.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-104">
+        A new class PropertiesConfigurationLayout was introduced whose task is
+        to preserve the structure (e.g. comments, blanc lines) of a file
+        loaded by PropertiesConfiguration. Each PropertiesConfiguration
+        object is now associated with such a layout object. A saved properties
+        file will look very similar to its original.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-145">
+        clone() methods have been added to BaseConfiguration, AbstractFileConfiguration,
+        MapConfiguration, CompositeConfiguration, and CombinedConfiguration.
+        So the most important Configuration implementations now support
+        cloning. To ConfigurationUtils an utility method cloneConfiguration()
+        was added that allows to conveniently clone a configuration.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-216">
+        If a configuration file was to be loaded from classpath, the
+        constructor of AbstractFileConfiguration dropped the file's path. The
+        path is now taken into account.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-214">
+        The getter methods for numeric data types in AbstractConfiguration now
+        support conversions between different Number types, e.g. you can now
+        call getLong(key) when key points to an Integer value.
+      </action>
+      <action dev="oheger" type="add">
+        The new class DefaultConfigurationBuilder was added as an alternative to
+        ConfigurationFactory. It provides some more features and creates a
+        CombinedConfiguration object
+      </action>
+      <action dev="oheger" type="add">
+        The new class CombinedConfiguration was added as a hierarchical
+        alternative to CompositeConfiguration.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-143">
+        Support for low-level configuration events was added to all classes
+        derived from AbstractConfiguration. The major part of this is handled
+        by the new super class EventSource of AbstractConfiguration.
+      </action>
+      <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="CONFIGURATION-63">
+        Loading of file-based configurations no longer throws a NullPointerException
+        in setups where the thread context class loader is not set.
+      </action>
+      <action dev="oheger" type="update">
+        The dependency to dom4j was removed; it was only used by two test classes,
+        which have been re-written.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-100">
+        XMLConfiguration used to drop the DOCTYPE declaration when saving the
+        configuration. It is now able to extract the DTD's public and system ID
+        and write them back (more complex DOCTYPE declarations are still not supported).
+        With the new methods setSystemID() and setPublicID(), the DOCTYPE
+        declaration can be configured.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-178">
+        Added two new constructors in CompositeConfiguration accepting a
+        collection of configurations as a parameter.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-186">
+        (Basic) Support for declaring beans in configuration files was added.
+        Some new classes in the beanutils package allow to create instances from
+        these declarations.
+      </action>
+      <action dev="oheger" type="update">
+        The implementation of the interpolation features have been extracted out
+        off AbstractConfiguration and moved to PropertyConverter. The
+        interpolateHelper() method of AbstractConfiguration is now deprectated
+        and will not be called any more during interpolation.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-182">
+        A new method configurationsAt() was added to HierarchicalConfiguration
+        that provides a convenient way of iterating over complex list-like
+        structures without the need of manually constructing configuration keys
+        with indices.
+      </action>
+      <action dev="oheger" type="add">
+        A new class SubnodeConfiguration was introduced that wraps a configuration
+        node of a HierarchicalConfiguration. All operations performed on this
+        configuration use this wrapped node as root. The new configurationAt()
+        method of HierarchicalConfiguration returns such a SubnodeConfiguration
+        for a specified sub node.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-173">
+        With XPathExpressionEngine an expression engine for hierarchical
+        configurations is now available that can evaluate XPATH expressions in
+        property keys. This expression engine implementation is based on
+        Commons JXPath, which is now declared as a new dependency (but at
+        runtime it is only needed if the XPathExpressionEngine class is used).
+      </action>
+      <action dev="oheger" type="add">
+        The code for interpreting property keys was refactored out off
+        HierarchicalConfiguration. Instead this class now supports pluggable
+        expression engines (using the setExpressionEngine() method). So it is
+        possible to plug in different expression languages. A default expression
+        engine is provided that understands the native expression language used
+        by hierarchical configurations in older versions. During the process of
+        this refactoring some methods of HierarchicalConfiguration have been
+        deprecated; they will not be called any more when searching or adding
+        properties. These are the following: createAddPath(), fetchAddNode(),
+        findLastPathNode(), findPropertyNodes().
+      </action>
+      <action dev="oheger" type="update">
+        A larger refactoring was performed on the inner Node class of
+        HierarchicalConfiguration: A ConfigurationNode interface was extracted
+        for which a default implementation (DefaultConfigurationNode) is
+        provided. HierarchicalConfiguration.Node now extends this default
+        implementation. The new ConfigurationNode interface defines some more
+        methods than the Node class did originally for conveniently dealing with
+        sub nodes and attributes. HierarchicalConfiguration now uses the new
+        type ConfigurationNode whereever possible. Some methods dealing with
+        Node objects have been deprecated and replaced by versions operating on
+        ConfigurationNode objects instead.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-155" due-to="Jorge Ferrer">
+        All configuration classes derived from AbstractConfiguration now allow
+        to set an instance specific list delimiter. This can be done through
+        the new method setListDelimiter(). As before it is possible to define
+        a default list delimiter, which will be used if no instance specific
+        delimiter is set. This can be done using the new setDefaultListDelimiter()
+        method (the methods get/setDelimiter() have been deprecated). With the
+        new setDelimiterParsingDisabled() method parsing of lists can be
+        disabled at all.
+      </action>
+    </release>
+
+    <release version="1.2" date="2005-12-17">
+    </release>
+
+    <release version="1.2-rc3" date="2005-12-07">
+      <action dev="oheger" type="update">
+        Commons Configuration now declares a dependency to Xalan. As with
+        Xerces this dependency is only needed for JDK 1.3. It was introduced
+        in a process of making Configuration buildable on a JDK 1.3. Documentation
+        about the build process was also added.
+      </action>
+      <action dev="oheger" type="update">
+        The dependency to Commons Beanutils Collections was unnecessary and
+        thus removed.
+      </action>
+      <action dev="oheger" type="update">
+        Commons Configuration now depends on Commons Digester 1.6 instead of 1.5.
+        (This was done only to pick up the latest available release of digester.)
+      </action>
+    </release>
+
+    <release version="1.2-rc2" date="2005-11-23">
+      <action dev="oheger" type="update" issue="CONFIGURATION-2">
+        ConfigurationDynaBean now implements the java.util.Map interface (as
+        was stated in the javadocs). This was done by deriving the class from
+        ConfigurationMap.
+      </action>
+    </release>
+
+    <release version="1.2-rc1" date="2005-11-11">
+      <action dev="oheger" type="update" issue="CONFIGURATION-33">
+        The reload() method in AbstractFileConfiguration was updated to prevent
+        reentrant invocation, which may be caused by some methods when they
+        are called during a reloading operation.
+      </action>
+      <action dev="ebourg, oheger" type="update">
+        AbstractHierarchicalFileConfiguration, a new base class for file based
+        hierarchical configurations, was introduced. XMLConfiguration now
+        extends this class.
+      </action>
+      <action dev="oheger" type="update" due-to="Kay Doebl" issue="CONFIGURATION-41">
+        XMLConfiguration now prints the used encoding in the xml declaration of
+        generated files. In earlier versions always the default encoding was
+        written. PropertiesConfiguration now always uses the platform specific
+        line separator when saving files.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-8">
+        PropertiesConfiguration now translates properly the escaped unicode
+        characters (like \u1234) used in the property keys. This complies with
+        the specification of java.util.Properties.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-123">
+        ConfigurationConverter.getProperties() now uses the delimiter of the
+        specified configuration to convert the list properties into strings.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-123">
+        The interpolation of variables (${foo}) is now performed in all property
+        getters of AbstractConfiguration and DataConfiguration. As a side effect
+        the Properties object returned by ConfigurationConverter.getProperties()
+        contains only interpolated values.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-35">
+        PropertiesConfiguration now uses the ISO-8859-1 encoding by default
+        instead of the system encoding to comply with the specification of
+        java.util.Properties.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-44">
+        JNDIConfiguration no longer logs an error when attempting to get
+        a property that doesn't exist in the configuration.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-99">
+        Attempting to load a configuration from a directory instead of a file
+        will now throw a ConfigurationException.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-28">
+        If a multi-valued property was involved in an interpolation operation,
+        AbstractConfiguration created a string representation of the list of all
+        values. This was changed to only use the first value, which makes more
+        sense in this context and is consistent with other getters for single
+        valued properties.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-83">
+        If an include file with a relative path cannot be found in the base
+        path, PropertiesConfiguration now also tries to resolve it based on its
+        own location.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-117" due-to="Steve Bate">
+        Fixed MapConfiguration to store the list of values added under a same
+        key instead of the last value added.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-80">
+        Fixed a bug in the handling of relative file names in ConfigurationFactory:
+        In most cases relative file names were not resolved relative to the
+        location of the configuration definition file as stated in the documentation.
+        This behavior was now changed to always be in sync with the documentation.
+        This may have an impact on existing code which uses workarounds for
+        the erroneous resolving mechanism.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-6">
+        Empty elements or elements whose content consists only of comments or
+        whitespace are now taken into account by XMLConfiguration. They are
+        added to the configuration; their value is an empty string.
+      </action>
+      <action dev="oheger" type="add">
+        XMLConfiguration now sets a valid system id in the InputSource used for
+        loading files. This enables XML parsers to correctly resolve relative
+        files, e.g. DTDs.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-74">
+        getKeys() in HierarchicalConfiguration now returns the keys in the same order the properties were inserted.
+      </action>
+      <action dev="ebourg" type="update">
+        Commons Configuration now depends on Commons Collections 3.1 instead of 3.0
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-195">
+        New configurations implementing the "property list" format used in
+        NeXT/OpenStep and its XML variant used in Mac OS X.
+        (PropertyListConfiguration and XMLPropertyListConfiguration)
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-97">
+        Resolved some issues with XMLConfiguration and properties containing
+        the delimiter character. These properties are now correctly treated,
+        escaping the delimiter will work, too.
+      </action>
+      <action dev="ebourg" type="add">
+        Added support for XMLPropertiesConfiguration in ConfigurationFactory.
+        A &lt;properties> element will generate a XMLPropertiesConfiguration
+        if the filename ends with ".xml".
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-184">
+        PropertiesConfiguration now supports escaped key/value separators in the keys
+        (i.e foo\:key = bar).
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-166">
+        PropertiesConfiguration now supports all key/value separators supported by java.util.Properties
+        ('=', ':' and white space characters).
+      </action>
+      <action dev="ebourg" type="update">
+        Commons Configuration now depends on Commons Lang 2.1 instead of 2.0
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-207">
+        Comment lines for PropertiesConfiguration can start with the '!' char (compatibility with java.util.Properties).
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-84">
+        Because ConfigurationUtils.copy() does not fully support hierarchical
+        configurations a clone() method was added to HierarchicalConfiguration
+        that can be used instead.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-206">
+        XMLConfiguration now provides some support for validating XML
+        documents. With the setValidating() method DTD validation can be
+        enabled. It is also possible to set a custom DocumentBuilder allowing
+        a caller to perform enhanced configuration of the XML loading process.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-121">
+        AbstractFileConfiguration now always sets a valid base path if the
+        configuration file could be located. This allows PropertiesConfiguration
+        to resolve include files even when loaded from class path.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-85">
+        Updated XMLConfiguration to correctly deal with properties containing
+        dots in their names. Such properties could not be accessed before.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-9">
+        PropertiesConfiguration's handling of backslash characters at the end
+        of line was incorrect when there was an even number of trailing
+        backslashes. This is now fixed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-130">
+        Fixed a problem related to file based configurations that are loaded
+        from a URL which is application/x-www-form-urlencoded: the save() method
+        would store such files at a wrong location.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-50">
+        Updated FileChangedReloadingStrategy to use the file based configuration's
+        source URL to find the file to watch. Before that it was possible that
+        the strategy checked the wrong file. For configuration files loaded
+        from a jar FileChangedReloadingStrategy now checks the jar file itself
+        for changes. Finally a bug was fixed which caused the strategy to
+        check the watched file's last change date on every invocation of its
+        reloadingRequired() method ignoring its refresh delay. Thanks to Jorge
+        Ferrer.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-62">
+        Fixed a bug in the collaboration between XMLConfiguration and its
+        reloading strategy: The configuration did not check its reloading
+        strategy, so no reload was performed.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-119">
+        Disabled auto save mode during PropertiesConfiguration.load(). Prior
+        it was possible that the properties file to be loaded was immideately
+        overwritten.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-89">
+        Under certain circumstances it was possible that a reloading strategy
+        set for PropertiesConfiguration interferred with the save() method causing
+        the configuration file to be erased. This has now been fixed.
+      </action>
+      <action dev="oheger" type="update" due-to="Jamie M. Guillemette" issue="CONFIGURATION-94">
+        AbstractFileConfiguration now stores the URL of the config file in the
+        load() methods. This URL is reused by the save() method to ensure that
+        the same file is written.
+      </action>
+      <action dev="ebourg" type="update" due-to="Alistair Young">
+        XMLPropertiesConfiguration no longer depends on Digester to parse the
+        configuration file, it's now implemented with a pure SAX parser.
+      </action>
+      <action dev="oheger" type="update" due-to="Mi Zhang" issue="CONFIGURATION-49">
+        Fixed a bug which causes XMLConfiguration.save to lose attribute values
+        under some circumstances. The clear() method now also ensures that the
+        associated DOM document is always cleared.
+      </action>
+      <action dev="ebourg" type="update" due-to="Kunihara Tetsuya" issue="CONFIGURATION-13">
+        XMLConfiguration now parse the configuration using the encoding
+        declared in the XML header instead of the OS default encoding.
+      </action>
+      <action dev="ebourg" type="update" due-to="Zsolt Koppany">
+        XMLConfiguration now uses the delimiter set by setDelimiter(char).
+      </action>
+    </release>
+
+    <release version="1.1" date="2005-04-02">
+      <action dev="ebourg" type="update" issue="CONFIGURATION-134">
+        Fixed a ConcurrentModificationException thrown when calling clear()
+        on a SubsetConfiguration applied to a BaseConfiguration.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-81">
+        The resolveContainerStore() method in AbstractConfiguration now works
+        properly with arrays of objects and arrays of primitives. This means
+        it is possible to store an array of value in the configuration and
+        retrieve the first element with the getString(), getInt()... methods.
+      </action>
+    </release>
+
+    <release version="1.1-rc2" date="2005-03-06">
+      <action dev="oheger" type="update" issue="CONFIGURATION-118">
+        Updated documentation for FileConfiguration's load() methods. Fixed a
+        problem in XMLConfiguration with the output of the save() method when
+        multiple files were loaded.
+      </action>
+      <action dev="ebourg" type="update">
+        Fixed a bug in FileChangedReloadingStrategy preventing the detection
+        of a file change in some cases.
+      </action>
+      <action dev="ebourg" type="update">
+        Changed getXXXArray() and getXXXList() in DataConfiguration to return
+        an empty array/list for empty values.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-58">
+        Fixed getLongArray(), getFloatArray() and getDoubleArray() in DataConfiguration,
+        the values were cast into integers.
+      </action>
+    </release>
+
+    <release version="1.1-rc1" date="2005-02-13">
+      <action dev="oheger" type="add" issue="CONFIGURATION-88">
+        ConfigurationFactory now always configures digester to use the context
+        classloader. This avoids problems in application server environments,
+        which use their own version of digester. Thanks to Mike Colbert for the
+        patch!
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-148">
+        Added a new configuration, XMLPropertiesConfiguration, supporting the
+        new XML format for java.util.Properties introduced in Java 1.5.
+        A 1.5 runtime is not required to use this class.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-190">
+        Added a comment header to PropertiesConfiguration. The header is not
+        parsed when the file is loaded yet.
+      </action>
+      <action dev="ebourg" type="add">
+        Added the setEncoding(String) and the getEncoding() methods to the
+        FileConfiguration interface to control the encoding of the
+        configuration file.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-210">
+        Access to the top level element of the XML document is now provided. For
+        newly created configurations this element can be changed before the
+        document is written.
+      </action>
+      <action dev="oheger" type="update" issue="CONFIGURATION-168">
+        Merged the two XML related configuration classes into one new class
+        XMLConfiguration. This new class should provide the best of its
+        ancestors.
+      </action>
+      <action dev="ebourg" type="update">
+        Replaced the PropertyTokenizer inner class in AbstractConfiguration
+        with the split method in PropertyConverter. Also moved the method
+        building an iterator on the elements of a composite value in
+        PropertyConverter as toIterator().
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-15">
+        Some cleanup of the handling of the base path in file based configurations.
+        The base path is now always taken into account.
+      </action>
+      <action dev="ebourg" type="fix">
+        Calling getProperties on a JNDIConfiguration no longer throws an
+        UnsupportedOperationException.
+      </action>
+      <action dev="ebourg" type="remove">
+        Removed the getPropertyDirect method from AbstractConfiguration,
+        concrete configurations now implement directly the getProperty method
+        from the Configuration interface.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-187">
+        Added implementation of a save() method for HierarchicalXMLConfiguration.
+      </action>
+      <action dev="ebourg" type="update">
+        Constructing a file based configuration with a File no longer throws
+        an exception when the file doesn't exist.
+      </action>
+      <action dev="ebourg" type="add">
+        Saving a configuration now creates the path to the file if it doesn't exist.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-45">
+        AbstractFileConfiguration.save(File) no longer fails silently when
+        an error occurs, a ConfigurationException is thrown instead.
+      </action>
+      <action dev="ebourg" type="fix">
+        ConfigurationUtils.locate() now checks if the URL based resources exist.
+        This fixes a bug preventing configuration files from being found if
+        the configuration descriptor is in a JAR file (reported by Grant Ingersoll).
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-96">
+        Fixed NPE that were caused in the constructors of file based
+        configurations if an invalid file name was specified.
+      </action>
+      <action dev="oheger" type="add" issue="CONFIGURATION-162">
+        Added support for optional configuration sources in definition files for
+        ConfigurationFactory. A new optional attribute allows to specify whether a
+        configuration source is mandatory or optional.
+      </action>
+      <action dev="ebourg" type="fix">
+        JNDIConfiguration.getKeys() now returns an empty iterator instead of
+        throwing a ConfigurationRuntimeException when a NamingException occurs.
+        The NamingExceptions are now logged.
+      </action>
+      <action dev="ebourg" type="fix">
+        DatabaseConfiguration.isEmpty() now returns true if an SQLException occurs.
+      </action>
+      <action dev="ebourg" type="add">
+        Added two methods copy(Configuration, Configuration) and
+        append(Configuration, Configuration) in ConfigurationUtils to copy
+        properties between configurations.
+      </action>
+      <action dev="ebourg" type="update">
+        Moved the constructors implementations from PropertiesConfiguration and
+        XMLConfiguration to AbstractFileConfiguration.
+      </action>
+      <action dev="epugh" type="remove">
+        Remove deprecated getVector() implementations.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-147">
+        File based configurations can now be automatically reloaded when the
+        underlying file is modified.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-156">
+        Added a clear() method to the Configuration interface to remove
+        all properties.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-208">
+        Added a SystemConfiguration wrapping the system properties.
+        ConfigurationFactory recognizes the corresponding &lt;system/&gt;
+        element.
+      </action>
+      <action dev="ebourg" type="add">
+        Added a MapConfiguration to turn any Map into a Configuration. The
+        getConfiguration() methods in ConfigurationConverter now use
+        MapConfiguration, as a result the Configuration returned is always
+        synchronized with the underlying Properties or ExtendedProperties,
+        changes made to the Configuration are available in the Properties,
+        and reciprocally.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-146">
+        The "autoSave" feature of XMLConfiguration has been generalized
+        to all file based configurations.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-191">
+        Numeric properties can now be specified in hexadecimal format,
+        for example "number = 0xC5F0".
+      </action>
+      <action dev="oheger" type="fix" issue="CONFIGURATION-36">
+        Fixed HierarchicalConfiguration.getKeys(String), it returned an empty
+        iterator if the prefix string contained indices.
+      </action>
+      <action dev="ebourg" type="add">
+        Added a DataConfiguration decorator providing getters for all useful
+        types found in a configuration (URL, Locale, Date, Calendar, Color,
+        lists and arrays)
+      </action>
+      <action dev="ebourg" type="add">
+        Added 5 new configurations to be used in a web environment:
+        AppletConfiguration, ServletConfiguration, ServletContextConfiguration,
+        ServletRequestConfiguration, ServletFilterConfiguration.
+      </action>
+    </release>
+
+    <release version="1.0" date="2004-10-11" description="First official release">
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-66">
+        The getStringArray() method in CompositeConfiguration now interpolates
+        the strings.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-23">
+        SubsetConfiguration now shares the "throwExceptionOnMissing" property
+        with its parent.
+      </action>
+      <action dev="ebourg" type="fix">
+        Removed "file:" at the beginning of the base path when calling
+        setFile() on a FileConfiguration. This prevented auto saving an
+        XMLConfiguration loaded from a File (issue reported by Mark Roth).
+      </action>
+      <action dev="ebourg" type="update">
+        All NamingEnumerations in JNDIConfiguraiton are now properly closed (Suggested
+        by Eric Jung).
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-90">
+        Properties added to an XMLConfiguration are no longer duplicated in the
+        resulting XML file.
+      </action>
+    </release>
+
+    <release version="1.0-rc2" date="2004-09-24">
+      <action dev="ebourg" type="update">
+        Unified the mechanisms for loading and saving file based configurations.
+        PropertiesConfiguration, XMLConfiguration and HierarchicalXMLConfiguration
+        now implement the same FileConfiguration interface. BasePathLoader,
+        BasePathConfiguration, ClassPropertiesConfiguration and
+        BasePropertiesConfiguration have been removed.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-22">
+        Replaced the calls to Boolean.booleanValue(boolean) in
+        AbstractConfiguration and ConfigurationDynaBean to be Java 1.3
+        compatible.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-112">
+        Changing the prefix of a JNDIConfiguration will now reset the base context used.
+      </action>
+      <action dev="ebourg" type="add" due-to="Eric Jung">
+        The context used by JNDIConfiguration can be specified in its
+        constructor or through the setContext() method. The context can be
+        accessed with the getContext() method which is now public.
+      </action>
+      <action dev="henning" type="add">
+        Make the behavior on missing properties for the get methods that
+        return objects configurable. A property throwExceptionOnMissing
+        can be set and then the getters throw an NoSuchElementException.
+        The old default behavior of returning a null value has
+        been restored.
+      </action>
+      <action dev="epugh" type="add" issue="CONFIGURATION-151">
+        Allow configurations extending AbstractConfiguration to change the
+        delimiter used from "," to something else.
+      </action>
+      <action dev="epugh" type="fix">
+        PropertiesConfiguration.save() method has issues with preserving the filename
+      </action>
+      <action dev="epugh" type="fix" issue="CONFIGURATION-132" due-to="Mark Woodman">
+        Test cases for HierarchicalConfigurationXMLReader stores comments as text nodes.
+      </action>
+      <action dev="epugh" type="fix" issue="CONFIGURATION-183" due-to="Ricardo Gladwell">
+        Clarify for ConfigurationDynaBean that the get method should throw an
+        illegalArgumentException if there is no property specified.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-25">
+        Fixed a ClassCastException when adding a non String property to an XMLConfiguration.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-138" due-to="Oliver Heger">
+        Fixed the handling of attribute properties by HierarchicalConfigurationConverter.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-125">
+        Fixed a ClassCastException thrown on adding a non string property
+        in a DatabaseConfiguration.
+      </action>
+      <action dev="henning" type="add">
+        Bring back the getVector() methods in the Configuration interface.
+        These methods are needed for &quot;drop-on&quot; replacement of the
+        various pre-1.0 commons-configuration snapshots and are already
+        deprecated. These methods will be removed for 1.1.
+      </action>
+    </release>
+
+    <release version="1.0-rc1" date="2004-08-14">
+      <action dev="epugh" type="add" issue="CONFIGURATION-132" due-to="Oliver Heger">
+        HierarchicalConfigurationXMLReader stores comments as text nodes.
+      </action>
+      <action dev="epugh" type="add" issue="CONFIGURATION-122" due-to="Ricardo Gladwell">
+        project.xml contains bad dependencies.
+      </action>
+      <action dev="epugh" type="add" issue="CONFIGURATION-64" due-to="Brent Worden">
+        clearXmlProperty doesn't remove list properties completely.
+      </action>
+      <action dev="epugh" type="add" issue="CONFIGURATION-183" due-to="Ricardo Gladwell">
+        new ConfigurationDynaBean.
+      </action>
+      <action dev="epugh" type="add" issue="CONFIGURATION-185" due-to="Ricardo Gladwell">
+        new ConfigurationMap and ConfigurationSet.
+      </action>
+      <action dev="epugh" type="fix" issue="CONFIGURATION-91" due-to="Ricardo Gladwell">
+        Problem adding property XMLConfiguration.
+      </action>
+      <action dev="epugh" type="remove">
+        ConfigurationXMLDocument removed until post 1.0.
+      </action>
+      <action dev="epugh" type="fix" issue="CONFIGURATION-18">
+        DatabaseConfiguration doesn't support List properties.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-137">
+        Fixed a bug related to XMLConfiguration. Can't add a new property as an
+        attribute in XMLConfiguration.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-116">
+        Fixed a bug related to XMLConfiguration. XMLConfiguration doesn't
+        support attribute names with a dot.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-4">
+        Fixed a bug related to XMLConfiguration. XMLConfiguration doesn't ignore
+        comments.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-32">
+        Fixed a bug related to XMLConfiguration. XMLConfiguration.save() doesn't
+        escape reserved characters.
+      </action>
+      <action dev="ebourg" type="add" issue="CONFIGURATION-114">
+        Added save methods in XMLConfiguration similar to PropertiesConfiguration
+        to save the configuration to another file.
+      </action>
+      <action dev="ebourg" type="update">
+        Removed the DOM4J implementations in favor of the DOM ones.
+        DOMConfiguration has been renamed to XMLConfiguration, and
+        HierarchicalDOMConfiguration to HierarchicalXMLConfiguration. The
+        elements parsed by the ConfigurationFactory have been changed
+        accordingly.
+      </action>
+      <action dev="ebourg" type="add">
+        Added a save() method to PropertiesConfiguration and save(Writer out),
+        save(OutputStream out), save(OutputStream out, String encoding) to
+        BasePropertiesConfiguration.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-98">
+        List values are now properly stored as comma separated values in the
+        Properties object returned by ConfigurationConverter.getProperties()
+      </action>
+      <action dev="ebourg" type="update">
+        Introduced a ConversionException thrown when the value of a property is
+        not compatible the type requested. It replaces the ClassCastException
+        and the NumberFormatException thrown previously.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-174">
+        Tokens like ${ref} in a PropertyConfiguration are now properly saved.
+      </action>
+      <action dev="ebourg" type="fix" issue="CONFIGURATION-127">
+        The getList() method of a CompositeConfiguration now returns the list
+        composed of the elements in the first matching configuration and the
+        additional elements found in the in memory configuration.
+      </action>
+      <action dev="epugh" type="fix">
+        SubsetConfiguration returns a List on getList(). AbstractConfiguration
+        wouldn't properly deal with a List, only with a Container for getList()!
+        Thanks to jschaible for the unit test.
+      </action>
+      <action dev="jschaible" type="add">
+        Direct support of XML via DOM. New classes DOMConfiguration and HierarchicalDOMConfiguration.
+      </action>
+      <action dev="jschaible" type="update">
+        Update build to not include test configuration files in resulting jar.
+      </action>
+      <action dev="ebourg" type="update">
+        Refactored JNDIConfiguration to use AbstractConfiguration.
+      </action>
+      <action dev="ebourg" type="update" issue="CONFIGURATION-76">
+        Fixed invalid subsets by refactoring out the subset logic into a SubsetConfiguration.
+      </action>
+      <action dev="oheger" type="fix">
+        Reapply the ConfigurationXMLDocument that went missing during migration out of sandbox.
+      </action>
+      <action dev="epugh" type="update">
+        Apply ASL 2.0 license.  Thanks to Jeff Painter for scripting the conversion!
+      </action>
+      <action dev="epugh" type="add">
+        Changed CompositeConfiguration to extend from AbstractConfiuration. This means that the behavior of
+        CompositeConfiguration is much similar to others like PropertiesConfiguration in handling of missing
+        keys, interpolation, etc.. Previously CompositeConfiguration had quite a few differences.
+      </action>
+      <action dev="epugh" type="update">
+        Removed "defaults" from BaseConfiguration. Defaults are now done via using a CompositeConfiguration, either
+        directly or via a ConfigurationFactory. if you want to save changes made to a Configuration, then you use
+        a CompositeConfiguration and get back the inMemoryConfiguration that has the delta of changes. Added a
+        bit of documentation on this.
+      </action>
+      <action dev="epugh" type="update" issue="CONFIGURATION-154">
+        Enhancement: Configuration Comparator.
+      </action>
+      <action dev="epugh" type="update" issue="CONFIGURATION-54">
+        BaseConfiguration: containsKey ignores default properties.
+        I have changed it so that now the defaults are paid attention to.
+      </action>
+      <action dev="ebourg" type="add">
+        The Configuration interface now supports BigDecimal and BigInteger numbers.
+      </action>
+      <action dev="epugh" type="add">
+        ConfigurationException is now thrown by public methods instead of Exception or
+        IOException or whatnot.
+      </action>
+      <action dev="ebourg" type="add">
+        For configuration based on properties files, allow characters like \n etc
+        to be escaped and unescaped.
+      </action>
+      <action dev="ebourg" type="add">
+        New DatabaseConfiguration that uses a database to store the properties.
+        It supports 2 table structures: one table per configuration (2 colums
+        key/value), one table for multiple configurations (2 columns key/value +
+        1 column for the name of the configuration).
+      </action>
+      <action dev="oheger" type="add">
+        ConfigurationFactory now supports the hierarchicalDom4j element in configuration
+        definition file
+      </action>
+      <action dev="ebourg" type="update">
+        Change all Vector objects to List objects.
+      </action>
+      <action dev="oheger" type="add">
+        ConfigurationFactory now supports two types of properties files, additional and
+        override.  Additional properties add each other together.  Override override each
+        other.  This allows you to have a single property that is either aggregated from a
+        number of sources, or have a property that is overridden according to a specific
+        order of sources.
+      </action>
+      <action dev="oheger" type="update">
+        AbstractConfiguration addProperty now delegates to an abstract addPropertyDirect
+        implemented by BaseConfiguration.
+      </action>
+      <action dev="kshaposhnikov" type="update">
+        Changed getString() method to throw a NoSuchElementException instead of "" if the
+        configuration property doesn't exist.
+      </action>
+      <action dev="kshaposhnikov" type="add">
+        Added AbstractConfiguration to make it easier to create subclasses by only
+        having to implement the methods required.
+      </action>
+      <action dev="bdunbar" type="fix">
+        ClassPropertiesConfiguration Additions:
+        Use the classloader of class that is provided by the constructor.
+        Add a constructor that indicates whether to use relative or absolute.
+        Change getPropertyStream to utilize the relative or absolute flag.
+        Add a test case that checks that absolute paths work.
+      </action>
+      <action dev="epugh" type="fix">
+        JNDIConfiguration.getKeys() Addition:
+        The JNDIConfiguration.getKeys() method was returning an unsupported
+        operation error.  However, this is an important method to have
+        supported.
+      </action>
+      <action dev="epugh" type="fix">
+        CompositeConfiguration.getKeys() Fix
+        The CompositeConfiguration.getKeys() method was returning an
+        unordered list of configuration values.  However, many apps
+        expect the order that keys are returned to be the order they
+        are added into the properties file.
+      </action>
+    </release>
+  </body>
+</document>
diff --git a/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java b/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java
index 2b15d66..05df6e6 100644
--- a/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/YAMLConfiguration.java
@@ -171,7 +171,7 @@
             @Override
             protected Class<?> getClassForName(String name)
             {
-                throw new ConfigurationRuntimeException("Class loading is disabled.");
+                throw new ConfigurationRuntimeException("Class instantiation is disabled.");
             }
         };
     }