You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2019/08/18 15:16:04 UTC

[commons-configuration] branch master updated: [CONFIGURATION-752] Update Apache Commons VFS from 2.3 to 2.4.1.

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-configuration.git


The following commit(s) were added to refs/heads/master by this push:
     new f766d10  [CONFIGURATION-752] Update Apache Commons VFS from 2.3 to 2.4.1.
f766d10 is described below

commit f766d101e8e2e1773c39aad70cf159421432c221
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Aug 18 08:15:59 2019 -0700

    [CONFIGURATION-752] Update Apache Commons VFS from 2.3 to 2.4.1.
---
 pom.xml                 | 1804 ++++++++---------
 src/changes/changes.xml | 5074 +++++++++++++++++++++++------------------------
 2 files changed, 3439 insertions(+), 3439 deletions(-)

diff --git a/pom.xml b/pom.xml
index d4dae85..6e7bbdb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,902 +1,902 @@
-<?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.
--->
-<!-- ===================================================================== -->
-<!-- $Id$ -->
-<!-- ===================================================================== -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <parent>
-    <groupId>org.apache.commons</groupId>
-    <artifactId>commons-parent</artifactId>
-    <version>48</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-  <artifactId>commons-configuration2</artifactId>
-  <version>2.6-SNAPSHOT</version>
-  <name>Apache Commons Configuration</name>
-
-  <inceptionYear>2001</inceptionYear>
-  <description>
-        Tools to assist in the reading of configuration/preferences files in
-        various formats
-    </description>
-
-  <url>https://commons.apache.org/proper/commons-configuration/</url>
-
-  <issueManagement>
-    <system>jira</system>
-    <url>https://issues.apache.org/jira/browse/CONFIGURATION</url>
-  </issueManagement>
-
-  <ciManagement>
-    <system>jenkins</system>
-    <url>https://builds.apache.org/job/Commons-configuration/</url>
-  </ciManagement>
-
-  <scm>
-    <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-configuration.git</connection>
-    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-configuration.git</developerConnection>
-    <url>https://gitbox.apache.org/repos/asf?p=commons-configuration.git</url>
-  </scm>
-
-  <distributionManagement>
-    <site>
-      <id>apache.website</id>
-      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-configuration/</url>
-    </site>
-  </distributionManagement>
-
-  <developers>
-    <developer>
-      <name>Daniel Rall</name>
-      <id>dlr</id>
-      <email>dlr@finemaltcoding.com</email>
-      <organization>CollabNet, Inc.</organization>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Jason van Zyl</name>
-      <id>jvanzyl</id>
-      <email>jason@zenplex.com</email>
-      <organization>Zenplex</organization>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Martin Poeschl</name>
-      <id>mpoeschl</id>
-      <email>mpoeschl@marmot.at</email>
-      <organization>tucana.at</organization>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>dIon Gillard</name>
-      <id>dion</id>
-      <email>dion@multitask.com.au</email>
-      <organization>Multitask Consulting</organization>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Henning P. Schmiedehausen</name>
-      <id>henning</id>
-      <email>hps@intermeta.de</email>
-      <organization>INTERMETA - Gesellschaft fuer Mehrwertdienste mbH</organization>
-      <timezone>2</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Eric Pugh</name>
-      <id>epugh</id>
-      <email>epugh@upstate.com</email>
-      <organization>upstate.com</organization>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Brian E. Dunbar</name>
-      <id>bdunbar</id>
-      <email>bdunbar@dunbarconsulting.org</email>
-      <organization>dunbarconsulting.org</organization>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Emmanuel Bourg</name>
-      <id>ebourg</id>
-      <email>ebourg@apache.org</email>
-      <organization>Ariane Software</organization>
-      <timezone>+1</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Oliver Heger</name>
-      <id>oheger</id>
-      <email>oheger@apache.org</email>
-      <organization>Bosch Software Innovations</organization>
-      <timezone>+1</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>J&#xF6;rg Schaible</name>
-      <id>joehni</id>
-      <email>joerg.schaible@gmx.de</email>
-      <timezone>+1</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Ralph Goers</name>
-      <id>rgoers</id>
-      <email>rgoers@apache.org</email>
-      <organization>Intuit</organization>
-      <timezone>-8</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Gary Gregory</name>
-      <id>ggregory</id>
-      <email>ggregory@apache.org</email>
-      <organization>Rocket Software</organization>
-      <timezone>-6</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Claude Warren</name>
-      <id>claudenw</id>
-      <email>claude@apache.org</email>
-      <timezone>0</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-
-    <developer>
-      <name>Rob Tompkins</name>
-      <id>chtompki</id>
-      <email>chtompki@apache.org</email>
-      <timezone>-4</timezone>
-      <roles>
-        <role>Java Developer</role>
-      </roles>
-    </developer>
-  </developers>
-
-  <contributors>
-    <contributor>
-      <name>Konstantin Shaposhnikov</name>
-      <email>ksh@scand.com</email>
-      <organization>scand.com</organization>
-    </contributor>
-
-    <contributor>
-      <name>Jamie M. Guillemette</name>
-      <email>JMGuillemette@gmail.com</email>
-      <organization>TD Bank</organization>
-    </contributor>
-
-    <contributor>
-      <name>Jorge Ferrer</name>
-      <email>jorge.ferrer@gmail.com</email>
-      <organization></organization>
-    </contributor>
-
-    <contributor>
-      <name>Gabriele Garuglieri</name>
-      <email>gabriele.garuglieri@infoblu.it</email>
-      <organization>Infoblu S.p.A</organization>
-    </contributor>
-
-    <contributor>
-      <name>Nicolas De Loof</name>
-      <email>nicolas.deloof@gmail.com</email>
-      <organization>Cap Gemini</organization>
-    </contributor>
-
-    <contributor>
-      <name>Oliver Kopp</name>
-      <email>koppdev@gmail.com</email>
-    </contributor>
-
-    <contributor>
-      <name>Dennis Kieselhorst</name>
-      <email>deki@apache.org</email>
-      <organization>IRIAN Deutschland</organization>
-    </contributor>
-
-    <contributor>
-      <name>Raviteja Lokineni</name>
-      <email>raviteja.lokineni@gmail.com</email>
-    </contributor>
-
-    <contributor>
-      <name>Vincent Maurin</name>
-      <email>vincent.maurin.fr@gmail.com</email>
-      <organization>glispa GmbH</organization>
-    </contributor>
-
-    <contributor>
-      <name>The Alchemist</name>
-      <email>kap4020@gmail.com</email>
-    </contributor>
-
-    <contributor>
-      <name>Pascal Essiembre</name>
-      <email>pascal.essiembre@norconex.com</email>
-      <organization>Norconex Inc.</organization>
-      <organizationUrl>https://www.norconex.com</organizationUrl>
-      <roles>
-        <role>developer</role>
-      </roles>
-      <timezone>-4</timezone>
-    </contributor>
-
-    <contributor>
-      <name>Patrick Schmidt</name>
-      <email>patrick.schmidt@codecamp.de</email>
-    </contributor>
-  </contributors>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <version>3.9</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-text</artifactId>
-      <version>1.7</version>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-      <version>1.2</version>
-      <exclusions>
-        <exclusion>
-          <groupId>logkit</groupId>
-          <artifactId>logkit</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>avalon-framework</groupId>
-          <artifactId>avalon-framework</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-beanutils</groupId>
-      <artifactId>commons-beanutils</artifactId>
-      <version>1.9.3</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-codec</groupId>
-      <artifactId>commons-codec</artifactId>
-      <version>1.12</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-jexl</artifactId>
-      <version>2.1.1</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-vfs2</artifactId>
-      <version>2.4</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>commons-jxpath</groupId>
-      <artifactId>commons-jxpath</artifactId>
-      <version>1.3</version>
-      <optional>true</optional>
-      <exclusions>
-        <exclusion>
-          <groupId>xerces</groupId>
-          <artifactId>xerces</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ant</groupId>
-          <artifactId>ant-optional</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>xml-resolver</groupId>
-      <artifactId>xml-resolver</artifactId>
-      <version>1.2</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-core</artifactId>
-      <version>${spring.version}</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-beans</artifactId>
-      <version>${spring.version}</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-      <version>${spring.version}</version>
-      <optional>true</optional>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-test</artifactId>
-      <version>${spring.version}</version>
-      <optional>true</optional>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-      <version>2.4</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.yaml</groupId>
-      <artifactId>snakeyaml</artifactId>
-      <version>1.24</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-databind</artifactId>
-      <version>2.9.9</version>
-      <optional>true</optional>
-    </dependency>
-
-    <!-- Needed for testing -->
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-dbcp2</artifactId>
-      <version>2.6.0</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-pool2</artifactId>
-      <version>2.6.2</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.hsqldb</groupId>
-      <artifactId>hsqldb</artifactId>
-      <version>2.4.1</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.dbunit</groupId>
-      <artifactId>dbunit</artifactId>
-      <version>2.6.0</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.12</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>junit-addons</groupId>
-      <artifactId>junit-addons</artifactId>
-      <version>1.4</version>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>xerces</groupId>
-          <artifactId>xmlParserAPIs</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>xerces</groupId>
-          <artifactId>xercesImpl</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>mockobjects</groupId>
-      <artifactId>mockobjects-core</artifactId>
-      <version>0.09</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>mockobjects</groupId>
-      <artifactId>mockobjects-jdk1.4-j2ee1.3</artifactId>
-      <version>0.09</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.easymock</groupId>
-      <artifactId>easymock</artifactId>
-      <version>4.0.2</version>
-      <scope>test</scope>
-    </dependency>
-
-    <!-- javax.mail only contains the API, no impl. -->
-    <dependency>
-      <groupId>com.sun.mail</groupId>
-      <artifactId>mailapi</artifactId>
-      <version>1.6.3</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>log4j</groupId>
-      <artifactId>log4j</artifactId>
-      <version>1.2.17</version>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <version>${slf4j.version}</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-ext</artifactId>
-      <version>${slf4j.version}</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-log4j12</artifactId>
-      <version>${slf4j.version}</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-nop</artifactId>
-      <version>${slf4j.version}</version>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <properties>
-    <commons.componentid>configuration</commons.componentid>
-    <commons.module.name>org.apache.commons.configuration2</commons.module.name>
-    <commons.release.version>2.6</commons.release.version>
-    <commons.release.desc>(reworked 2.x version)</commons.release.desc>
-    <commons.release.2.name>commons-configuration-${commons.release.2.version}</commons.release.2.name>
-    <commons.release.2.version>1.10</commons.release.2.version>
-    <commons.release.2.desc>(old 1.x version)</commons.release.2.desc>
-    <commons.jira.id>CONFIGURATION</commons.jira.id>
-    <commons.jira.pid>12310467</commons.jira.pid>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
-
-    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-configuration</commons.scmPubUrl>
-
-    <!-- Explicitly declare optional dependencies for the OSGi manifest. -->
-    <commons.osgi.import>
-      org.apache.commons.beanutils.*;resolution:=optional,
-      org.apache.commons.codec.*;resolution:=optional,
-      org.apache.commons.jxpath.*;resolution:=optional,
-      org.apache.xml.resolver.*;resolution:=optional,
-      javax.servlet.*;resolution:=optional,
-      org.apache.commons.jexl2.*;resolution:=optional,
-      org.apache.commons.vfs2.*;resolution:=optional,
-      org.springframework.*;resolution:=optional,
-      com.fasterxml.jackson.*;resolution:=optional,
-      org.yaml.snakeyaml.*;resolution:=optional,
-      *
-    </commons.osgi.import>
-    <slf4j.version>1.7.26</slf4j.version>
-    <spring.version>4.3.24.RELEASE</spring.version>
-
-    <!-- generate report even if there are binary incompatible changes -->
-    <commons.japicmp.breakBuildOnBinaryIncompatibleModifications>false</commons.japicmp.breakBuildOnBinaryIncompatibleModifications>
-    <commons.japicmp.version>0.14.1</commons.japicmp.version>
-    <japicmp.skip>false</japicmp.skip>
-    <commons.jacoco.version>0.8.4</commons.jacoco.version>
-
-    <!-- Commons Release Plugin -->
-    <commons.bc.version>2.5</commons.bc.version>
-    <commons.rc.version>RC1</commons.rc.version>
-    <commons.release.isDistModule>true</commons.release.isDistModule>
-    <commons.distSvnStagingUrl>scm:svn:https://dist.apache.org/repos/dist/dev/commons/${commons.componentid}</commons.distSvnStagingUrl>
-    <commons.releaseManagerName>Gary Gregory</commons.releaseManagerName>    
-    <commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>
-  </properties>
-
-  <build>
-    <testResources>
-      <testResource>
-        <directory>src/test/resources</directory>
-      </testResource>
-      <testResource>
-        <directory>src/main/resources</directory>
-        <includes>
-          <include>*.dtd</include>
-        </includes>
-      </testResource>
-      <!-- hack to ensure the N&L appear in jars -->
-      <testResource>
-        <directory>${basedir}</directory>
-        <targetPath>META-INF</targetPath>
-        <includes>
-          <include>NOTICE.txt</include>
-          <include>LICENSE.txt</include>
-        </includes>
-      </testResource>
-    </testResources>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-scm-publish-plugin</artifactId>
-          <configuration>
-            <ignorePathsToDelete>
-              <ignorePathToDelete>javadocs</ignorePathToDelete>
-            </ignorePathsToDelete>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-checkstyle-plugin</artifactId>
-          <version>3.0.0</version>
-          <configuration>
-            <configLocation>${basedir}/conf/checkstyle.xml</configLocation>
-            <suppressionsLocation>${basedir}/conf/checkstyle-suppressions.xml</suppressionsLocation>
-            <enableRulesSummary>false</enableRulesSummary>
-            <propertyExpansion>basedir=${basedir}</propertyExpansion>
-            <includeResources>false</includeResources>
-            <includeTestResources>false</includeTestResources>
-            <failOnViolation>false</failOnViolation>
-            <sourceDirectories>
-              <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
-            </sourceDirectories>
-            <excludes>**/org/apache/commons/configuration2/plist/*.java</excludes>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <!-- Uncomment to enable profiling unit tests -->
-          <!-- <argLine>-agentpath:"${yourkit.home}/bin/mac/libyjpagent.jnilib"</argLine> -->
-          <forkMode>once</forkMode>
-          <excludes>
-            <exclude>**/TestWebdavConfigurationBuilder.java</exclude>
-          </excludes>
-          <systemPropertyVariables>
-            <java.awt.headless>true</java.awt.headless>
-            <org.apache.commons.logging.Log>org.apache.commons.configuration2.Logging</org.apache.commons.logging.Log>
-          </systemPropertyVariables>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <configuration>
-          <descriptors>
-            <descriptor>src/main/assembly/bin.xml</descriptor>
-            <descriptor>src/main/assembly/src.xml</descriptor>
-          </descriptors>
-          <tarLongFileMode>gnu</tarLongFileMode>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>javacc-maven-plugin</artifactId>
-        <version>2.6</version>
-        <executions>
-          <execution>
-            <id>javacc</id>
-            <goals>
-              <goal>javacc</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <!-- Uncomment to instrument with Clover
-        <plugin>
-        <groupId>com.atlassian.maven.plugins</groupId>
-        <artifactId>maven-clover2-plugin</artifactId>
-        <version>2.4.2</version>
-        <configuration>
-        <jdk>1.4</jdk>
-        </configuration>
-        <executions>
-        <execution>
-        <phase>pre-site</phase>
-        <goals>
-        <goal>instrument</goal>
-        </goals>
-        </execution>
-        </executions>
-        </plugin> -->
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>check</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-        <!-- Temporary fix, remove this after this has implemented in parent pom -->
-        <configuration>
-          <archive combine.children="append">
-            <manifestEntries>
-              <Automatic-Module-Name>org.apache.commons.configuration2</Automatic-Module-Name>
-            </manifestEntries>
-          </archive>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/java/org/apache/commons/configuration2/plist/*.java</exclude>
-            <exclude>velocity.log</exclude>
-            <exclude>src/test/resources/test.json</exclude>
-            <exclude>src/test/resources/test.yaml</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <configuration>
-          <!--
-            The below setting for not failing upon error stems from the fact that javacc's generated
-            code.
-
-            Javacc is responsible for a portion of the code in the package org.apache.commons.configuration2.plist,
-            and only generates a portion of the package. Furthermore, the javacc parser generator
-            generates javadoc that does not conform to the java 1.8 standard and causes the build to fail. For the
-            sake of releasing commons-configuration-2.4.
-          -->
-          <failOnError>false</failOnError>
-          <links>
-            <link>https://docs.oracle.com/javase/8/docs/api/</link>
-            <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
-          </links>
-        </configuration>
-      </plugin>
-    </plugins>
-
-  </build>
-  <profiles>
-    <profile>
-      <id>webdav</id>
-      <activation>
-        <activeByDefault>false</activeByDefault>
-      </activation>
-      <dependencies>
-        <dependency>
-          <groupId>org.apache.jackrabbit</groupId>
-          <artifactId>jackrabbit-webdav</artifactId>
-          <version>1.5.2</version>
-          <scope>test</scope>
-        </dependency>
-      </dependencies>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-              <forkMode>once</forkMode>
-              <systemPropertyVariables>
-                <java.awt.headless>true</java.awt.headless>
-                <test.webdav.base>${test.webdav.base}</test.webdav.base>
-              </systemPropertyVariables>
-              <includes>
-                <include>**/TestWebdavConfigurationBuilder.java</include>
-              </includes>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-    <profile>
-      <id>java9</id>
-      <activation>
-        <jdk>9</jdk>
-      </activation>
-      <properties>
-        <!-- coverall version 4.3.0 does not work with java 9, see https://github.com/trautonen/coveralls-maven-plugin/issues/112 -->
-        <coveralls.skip>true</coveralls.skip>
-      </properties>
-    </profile>
-    <!-- Uncomment this and set the path accordingly to enable YourKit -->
-    <!-- http://www.yourkit.com/docs/80/help/agent.jsp -->
-    <!-- <profile>
-      <id>yourkit-profile</id>
-      <properties>
-      <yourkit.home>/Applications/YourKit_Java_Profiler_8.0.17.app/</yourkit.home>
-      </properties>
-      </profile> -->
-  </profiles>
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-changes-plugin</artifactId>
-        <version>${commons.changes.version}</version>
-        <configuration>
-          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>
-          <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
-        </configuration>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>changes-report</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-checkstyle-plugin</artifactId>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>checkstyle</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-        <configuration>
-          <excludes>
-            <exclude>src/java/org/apache/commons/configuration2/plist/*.java</exclude>
-            <exclude>velocity.log</exclude>
-            <exclude>src/test/resources/test.json</exclude>
-            <exclude>src/test/resources/test.yaml</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>com.github.spotbugs</groupId>
-        <artifactId>spotbugs-maven-plugin</artifactId>
-        <version>${commons.spotbugs.version}</version>
-        <configuration>
-          <threshold>Normal</threshold>
-          <effort>Default</effort>
-          <excludeFilterFile>${basedir}/conf/findbugs-exclude-filter.xml</excludeFilterFile>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.jacoco</groupId>
-        <artifactId>jacoco-maven-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>javadoc</report>
-            </reports>
-            <configuration>
-              <!--
-                The below setting for not failing upon error stems from the fact that javacc's generated
-                code.
-
-                Javacc is responsible for a portion of the code in the package org.apache.commons.configuration2.plist,
-                and only generates a portion of the package. Furthermore, the javacc parser generator
-                generates javadoc that does not conform to the java 1.8 standard and causes the build to fail. For the
-                sake of releasing commons-configuration-2.4.
-              -->
-              <failOnError>false</failOnError>
-              <links>
-                <link>https://docs.oracle.com/javase/8/docs/api/</link>
-                <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
-              </links>
-              <!-- Disable Doclint since the Javadoc in the generated code does not comply. -->
-              <doclint>none</doclint>
-            </configuration>
-          </reportSet>
-        </reportSets>
-        <configuration>
-          <failOnError>false</failOnError>
-          <links>
-            <link>https://docs.oracle.com/javase/8/docs/api/</link>
-            <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
-          </links>
-        </configuration>
-      </plugin>
-    </plugins>
-  </reporting>
-
-</project>
+<?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.
+-->
+<!-- ===================================================================== -->
+<!-- $Id$ -->
+<!-- ===================================================================== -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <parent>
+    <groupId>org.apache.commons</groupId>
+    <artifactId>commons-parent</artifactId>
+    <version>48</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>commons-configuration2</artifactId>
+  <version>2.6-SNAPSHOT</version>
+  <name>Apache Commons Configuration</name>
+
+  <inceptionYear>2001</inceptionYear>
+  <description>
+        Tools to assist in the reading of configuration/preferences files in
+        various formats
+    </description>
+
+  <url>https://commons.apache.org/proper/commons-configuration/</url>
+
+  <issueManagement>
+    <system>jira</system>
+    <url>https://issues.apache.org/jira/browse/CONFIGURATION</url>
+  </issueManagement>
+
+  <ciManagement>
+    <system>jenkins</system>
+    <url>https://builds.apache.org/job/Commons-configuration/</url>
+  </ciManagement>
+
+  <scm>
+    <connection>scm:git:https://gitbox.apache.org/repos/asf/commons-configuration.git</connection>
+    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/commons-configuration.git</developerConnection>
+    <url>https://gitbox.apache.org/repos/asf?p=commons-configuration.git</url>
+  </scm>
+
+  <distributionManagement>
+    <site>
+      <id>apache.website</id>
+      <url>scm:svn:https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-configuration/</url>
+    </site>
+  </distributionManagement>
+
+  <developers>
+    <developer>
+      <name>Daniel Rall</name>
+      <id>dlr</id>
+      <email>dlr@finemaltcoding.com</email>
+      <organization>CollabNet, Inc.</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Jason van Zyl</name>
+      <id>jvanzyl</id>
+      <email>jason@zenplex.com</email>
+      <organization>Zenplex</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Martin Poeschl</name>
+      <id>mpoeschl</id>
+      <email>mpoeschl@marmot.at</email>
+      <organization>tucana.at</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>dIon Gillard</name>
+      <id>dion</id>
+      <email>dion@multitask.com.au</email>
+      <organization>Multitask Consulting</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Henning P. Schmiedehausen</name>
+      <id>henning</id>
+      <email>hps@intermeta.de</email>
+      <organization>INTERMETA - Gesellschaft fuer Mehrwertdienste mbH</organization>
+      <timezone>2</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Eric Pugh</name>
+      <id>epugh</id>
+      <email>epugh@upstate.com</email>
+      <organization>upstate.com</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Brian E. Dunbar</name>
+      <id>bdunbar</id>
+      <email>bdunbar@dunbarconsulting.org</email>
+      <organization>dunbarconsulting.org</organization>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Emmanuel Bourg</name>
+      <id>ebourg</id>
+      <email>ebourg@apache.org</email>
+      <organization>Ariane Software</organization>
+      <timezone>+1</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Oliver Heger</name>
+      <id>oheger</id>
+      <email>oheger@apache.org</email>
+      <organization>Bosch Software Innovations</organization>
+      <timezone>+1</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>J&#xF6;rg Schaible</name>
+      <id>joehni</id>
+      <email>joerg.schaible@gmx.de</email>
+      <timezone>+1</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Ralph Goers</name>
+      <id>rgoers</id>
+      <email>rgoers@apache.org</email>
+      <organization>Intuit</organization>
+      <timezone>-8</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Gary Gregory</name>
+      <id>ggregory</id>
+      <email>ggregory@apache.org</email>
+      <organization>Rocket Software</organization>
+      <timezone>-6</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Claude Warren</name>
+      <id>claudenw</id>
+      <email>claude@apache.org</email>
+      <timezone>0</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+
+    <developer>
+      <name>Rob Tompkins</name>
+      <id>chtompki</id>
+      <email>chtompki@apache.org</email>
+      <timezone>-4</timezone>
+      <roles>
+        <role>Java Developer</role>
+      </roles>
+    </developer>
+  </developers>
+
+  <contributors>
+    <contributor>
+      <name>Konstantin Shaposhnikov</name>
+      <email>ksh@scand.com</email>
+      <organization>scand.com</organization>
+    </contributor>
+
+    <contributor>
+      <name>Jamie M. Guillemette</name>
+      <email>JMGuillemette@gmail.com</email>
+      <organization>TD Bank</organization>
+    </contributor>
+
+    <contributor>
+      <name>Jorge Ferrer</name>
+      <email>jorge.ferrer@gmail.com</email>
+      <organization></organization>
+    </contributor>
+
+    <contributor>
+      <name>Gabriele Garuglieri</name>
+      <email>gabriele.garuglieri@infoblu.it</email>
+      <organization>Infoblu S.p.A</organization>
+    </contributor>
+
+    <contributor>
+      <name>Nicolas De Loof</name>
+      <email>nicolas.deloof@gmail.com</email>
+      <organization>Cap Gemini</organization>
+    </contributor>
+
+    <contributor>
+      <name>Oliver Kopp</name>
+      <email>koppdev@gmail.com</email>
+    </contributor>
+
+    <contributor>
+      <name>Dennis Kieselhorst</name>
+      <email>deki@apache.org</email>
+      <organization>IRIAN Deutschland</organization>
+    </contributor>
+
+    <contributor>
+      <name>Raviteja Lokineni</name>
+      <email>raviteja.lokineni@gmail.com</email>
+    </contributor>
+
+    <contributor>
+      <name>Vincent Maurin</name>
+      <email>vincent.maurin.fr@gmail.com</email>
+      <organization>glispa GmbH</organization>
+    </contributor>
+
+    <contributor>
+      <name>The Alchemist</name>
+      <email>kap4020@gmail.com</email>
+    </contributor>
+
+    <contributor>
+      <name>Pascal Essiembre</name>
+      <email>pascal.essiembre@norconex.com</email>
+      <organization>Norconex Inc.</organization>
+      <organizationUrl>https://www.norconex.com</organizationUrl>
+      <roles>
+        <role>developer</role>
+      </roles>
+      <timezone>-4</timezone>
+    </contributor>
+
+    <contributor>
+      <name>Patrick Schmidt</name>
+      <email>patrick.schmidt@codecamp.de</email>
+    </contributor>
+  </contributors>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <version>3.9</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-text</artifactId>
+      <version>1.7</version>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.2</version>
+      <exclusions>
+        <exclusion>
+          <groupId>logkit</groupId>
+          <artifactId>logkit</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>avalon-framework</groupId>
+          <artifactId>avalon-framework</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-beanutils</groupId>
+      <artifactId>commons-beanutils</artifactId>
+      <version>1.9.3</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-codec</groupId>
+      <artifactId>commons-codec</artifactId>
+      <version>1.12</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-jexl</artifactId>
+      <version>2.1.1</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-vfs2</artifactId>
+      <version>2.4.1</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>commons-jxpath</groupId>
+      <artifactId>commons-jxpath</artifactId>
+      <version>1.3</version>
+      <optional>true</optional>
+      <exclusions>
+        <exclusion>
+          <groupId>xerces</groupId>
+          <artifactId>xerces</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>ant</groupId>
+          <artifactId>ant-optional</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <dependency>
+      <groupId>xml-resolver</groupId>
+      <artifactId>xml-resolver</artifactId>
+      <version>1.2</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-core</artifactId>
+      <version>${spring.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-beans</artifactId>
+      <version>${spring.version}</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+      <version>${spring.version}</version>
+      <optional>true</optional>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-test</artifactId>
+      <version>${spring.version}</version>
+      <optional>true</optional>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>2.4</version>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.yaml</groupId>
+      <artifactId>snakeyaml</artifactId>
+      <version>1.24</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+      <version>2.9.9</version>
+      <optional>true</optional>
+    </dependency>
+
+    <!-- Needed for testing -->
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-dbcp2</artifactId>
+      <version>2.6.0</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-pool2</artifactId>
+      <version>2.6.2</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <version>2.4.1</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.dbunit</groupId>
+      <artifactId>dbunit</artifactId>
+      <version>2.6.0</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>junit-addons</groupId>
+      <artifactId>junit-addons</artifactId>
+      <version>1.4</version>
+      <scope>test</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>xerces</groupId>
+          <artifactId>xmlParserAPIs</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>xerces</groupId>
+          <artifactId>xercesImpl</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <dependency>
+      <groupId>mockobjects</groupId>
+      <artifactId>mockobjects-core</artifactId>
+      <version>0.09</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>mockobjects</groupId>
+      <artifactId>mockobjects-jdk1.4-j2ee1.3</artifactId>
+      <version>0.09</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>4.0.2</version>
+      <scope>test</scope>
+    </dependency>
+
+    <!-- javax.mail only contains the API, no impl. -->
+    <dependency>
+      <groupId>com.sun.mail</groupId>
+      <artifactId>mailapi</artifactId>
+      <version>1.6.3</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <version>1.2.17</version>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>${slf4j.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-ext</artifactId>
+      <version>${slf4j.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-log4j12</artifactId>
+      <version>${slf4j.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-nop</artifactId>
+      <version>${slf4j.version}</version>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
+
+  <properties>
+    <commons.componentid>configuration</commons.componentid>
+    <commons.module.name>org.apache.commons.configuration2</commons.module.name>
+    <commons.release.version>2.6</commons.release.version>
+    <commons.release.desc>(reworked 2.x version)</commons.release.desc>
+    <commons.release.2.name>commons-configuration-${commons.release.2.version}</commons.release.2.name>
+    <commons.release.2.version>1.10</commons.release.2.version>
+    <commons.release.2.desc>(old 1.x version)</commons.release.2.desc>
+    <commons.jira.id>CONFIGURATION</commons.jira.id>
+    <commons.jira.pid>12310467</commons.jira.pid>
+    <maven.compiler.source>1.8</maven.compiler.source>
+    <maven.compiler.target>1.8</maven.compiler.target>
+
+    <commons.scmPubUrl>https://svn.apache.org/repos/infra/websites/production/commons/content/proper/commons-configuration</commons.scmPubUrl>
+
+    <!-- Explicitly declare optional dependencies for the OSGi manifest. -->
+    <commons.osgi.import>
+      org.apache.commons.beanutils.*;resolution:=optional,
+      org.apache.commons.codec.*;resolution:=optional,
+      org.apache.commons.jxpath.*;resolution:=optional,
+      org.apache.xml.resolver.*;resolution:=optional,
+      javax.servlet.*;resolution:=optional,
+      org.apache.commons.jexl2.*;resolution:=optional,
+      org.apache.commons.vfs2.*;resolution:=optional,
+      org.springframework.*;resolution:=optional,
+      com.fasterxml.jackson.*;resolution:=optional,
+      org.yaml.snakeyaml.*;resolution:=optional,
+      *
+    </commons.osgi.import>
+    <slf4j.version>1.7.26</slf4j.version>
+    <spring.version>4.3.24.RELEASE</spring.version>
+
+    <!-- generate report even if there are binary incompatible changes -->
+    <commons.japicmp.breakBuildOnBinaryIncompatibleModifications>false</commons.japicmp.breakBuildOnBinaryIncompatibleModifications>
+    <commons.japicmp.version>0.14.1</commons.japicmp.version>
+    <japicmp.skip>false</japicmp.skip>
+    <commons.jacoco.version>0.8.4</commons.jacoco.version>
+
+    <!-- Commons Release Plugin -->
+    <commons.bc.version>2.5</commons.bc.version>
+    <commons.rc.version>RC1</commons.rc.version>
+    <commons.release.isDistModule>true</commons.release.isDistModule>
+    <commons.distSvnStagingUrl>scm:svn:https://dist.apache.org/repos/dist/dev/commons/${commons.componentid}</commons.distSvnStagingUrl>
+    <commons.releaseManagerName>Gary Gregory</commons.releaseManagerName>    
+    <commons.releaseManagerKey>86fdc7e2a11262cb</commons.releaseManagerKey>
+  </properties>
+
+  <build>
+    <testResources>
+      <testResource>
+        <directory>src/test/resources</directory>
+      </testResource>
+      <testResource>
+        <directory>src/main/resources</directory>
+        <includes>
+          <include>*.dtd</include>
+        </includes>
+      </testResource>
+      <!-- hack to ensure the N&L appear in jars -->
+      <testResource>
+        <directory>${basedir}</directory>
+        <targetPath>META-INF</targetPath>
+        <includes>
+          <include>NOTICE.txt</include>
+          <include>LICENSE.txt</include>
+        </includes>
+      </testResource>
+    </testResources>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-scm-publish-plugin</artifactId>
+          <configuration>
+            <ignorePathsToDelete>
+              <ignorePathToDelete>javadocs</ignorePathToDelete>
+            </ignorePathsToDelete>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-checkstyle-plugin</artifactId>
+          <version>3.0.0</version>
+          <configuration>
+            <configLocation>${basedir}/conf/checkstyle.xml</configLocation>
+            <suppressionsLocation>${basedir}/conf/checkstyle-suppressions.xml</suppressionsLocation>
+            <enableRulesSummary>false</enableRulesSummary>
+            <propertyExpansion>basedir=${basedir}</propertyExpansion>
+            <includeResources>false</includeResources>
+            <includeTestResources>false</includeTestResources>
+            <failOnViolation>false</failOnViolation>
+            <sourceDirectories>
+              <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
+            </sourceDirectories>
+            <excludes>**/org/apache/commons/configuration2/plist/*.java</excludes>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <!-- Uncomment to enable profiling unit tests -->
+          <!-- <argLine>-agentpath:"${yourkit.home}/bin/mac/libyjpagent.jnilib"</argLine> -->
+          <forkMode>once</forkMode>
+          <excludes>
+            <exclude>**/TestWebdavConfigurationBuilder.java</exclude>
+          </excludes>
+          <systemPropertyVariables>
+            <java.awt.headless>true</java.awt.headless>
+            <org.apache.commons.logging.Log>org.apache.commons.configuration2.Logging</org.apache.commons.logging.Log>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <configuration>
+          <descriptors>
+            <descriptor>src/main/assembly/bin.xml</descriptor>
+            <descriptor>src/main/assembly/src.xml</descriptor>
+          </descriptors>
+          <tarLongFileMode>gnu</tarLongFileMode>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>javacc-maven-plugin</artifactId>
+        <version>2.6</version>
+        <executions>
+          <execution>
+            <id>javacc</id>
+            <goals>
+              <goal>javacc</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <!-- Uncomment to instrument with Clover
+        <plugin>
+        <groupId>com.atlassian.maven.plugins</groupId>
+        <artifactId>maven-clover2-plugin</artifactId>
+        <version>2.4.2</version>
+        <configuration>
+        <jdk>1.4</jdk>
+        </configuration>
+        <executions>
+        <execution>
+        <phase>pre-site</phase>
+        <goals>
+        <goal>instrument</goal>
+        </goals>
+        </execution>
+        </executions>
+        </plugin> -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+        <!-- Temporary fix, remove this after this has implemented in parent pom -->
+        <configuration>
+          <archive combine.children="append">
+            <manifestEntries>
+              <Automatic-Module-Name>org.apache.commons.configuration2</Automatic-Module-Name>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>src/java/org/apache/commons/configuration2/plist/*.java</exclude>
+            <exclude>velocity.log</exclude>
+            <exclude>src/test/resources/test.json</exclude>
+            <exclude>src/test/resources/test.yaml</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <!--
+            The below setting for not failing upon error stems from the fact that javacc's generated
+            code.
+
+            Javacc is responsible for a portion of the code in the package org.apache.commons.configuration2.plist,
+            and only generates a portion of the package. Furthermore, the javacc parser generator
+            generates javadoc that does not conform to the java 1.8 standard and causes the build to fail. For the
+            sake of releasing commons-configuration-2.4.
+          -->
+          <failOnError>false</failOnError>
+          <links>
+            <link>https://docs.oracle.com/javase/8/docs/api/</link>
+            <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
+          </links>
+        </configuration>
+      </plugin>
+    </plugins>
+
+  </build>
+  <profiles>
+    <profile>
+      <id>webdav</id>
+      <activation>
+        <activeByDefault>false</activeByDefault>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>org.apache.jackrabbit</groupId>
+          <artifactId>jackrabbit-webdav</artifactId>
+          <version>1.5.2</version>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <configuration>
+              <forkMode>once</forkMode>
+              <systemPropertyVariables>
+                <java.awt.headless>true</java.awt.headless>
+                <test.webdav.base>${test.webdav.base}</test.webdav.base>
+              </systemPropertyVariables>
+              <includes>
+                <include>**/TestWebdavConfigurationBuilder.java</include>
+              </includes>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>java9</id>
+      <activation>
+        <jdk>9</jdk>
+      </activation>
+      <properties>
+        <!-- coverall version 4.3.0 does not work with java 9, see https://github.com/trautonen/coveralls-maven-plugin/issues/112 -->
+        <coveralls.skip>true</coveralls.skip>
+      </properties>
+    </profile>
+    <!-- Uncomment this and set the path accordingly to enable YourKit -->
+    <!-- http://www.yourkit.com/docs/80/help/agent.jsp -->
+    <!-- <profile>
+      <id>yourkit-profile</id>
+      <properties>
+      <yourkit.home>/Applications/YourKit_Java_Profiler_8.0.17.app/</yourkit.home>
+      </properties>
+      </profile> -->
+  </profiles>
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-changes-plugin</artifactId>
+        <version>${commons.changes.version}</version>
+        <configuration>
+          <xmlPath>${basedir}/src/changes/changes.xml</xmlPath>
+          <issueLinkTemplate>%URL%/%ISSUE%</issueLinkTemplate>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>changes-report</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>checkstyle</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.rat</groupId>
+        <artifactId>apache-rat-plugin</artifactId>
+        <configuration>
+          <excludes>
+            <exclude>src/java/org/apache/commons/configuration2/plist/*.java</exclude>
+            <exclude>velocity.log</exclude>
+            <exclude>src/test/resources/test.json</exclude>
+            <exclude>src/test/resources/test.yaml</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>com.github.spotbugs</groupId>
+        <artifactId>spotbugs-maven-plugin</artifactId>
+        <version>${commons.spotbugs.version}</version>
+        <configuration>
+          <threshold>Normal</threshold>
+          <effort>Default</effort>
+          <excludeFilterFile>${basedir}/conf/findbugs-exclude-filter.xml</excludeFilterFile>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.jacoco</groupId>
+        <artifactId>jacoco-maven-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>javadoc</report>
+            </reports>
+            <configuration>
+              <!--
+                The below setting for not failing upon error stems from the fact that javacc's generated
+                code.
+
+                Javacc is responsible for a portion of the code in the package org.apache.commons.configuration2.plist,
+                and only generates a portion of the package. Furthermore, the javacc parser generator
+                generates javadoc that does not conform to the java 1.8 standard and causes the build to fail. For the
+                sake of releasing commons-configuration-2.4.
+              -->
+              <failOnError>false</failOnError>
+              <links>
+                <link>https://docs.oracle.com/javase/8/docs/api/</link>
+                <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
+              </links>
+              <!-- Disable Doclint since the Javadoc in the generated code does not comply. -->
+              <doclint>none</doclint>
+            </configuration>
+          </reportSet>
+        </reportSets>
+        <configuration>
+          <failOnError>false</failOnError>
+          <links>
+            <link>https://docs.oracle.com/javase/8/docs/api/</link>
+            <link>https://docs.spring.io/spring/docs/${spring.version}/javadoc-api/</link>
+          </links>
+        </configuration>
+      </plugin>
+    </plugins>
+  </reporting>
+
+</project>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 96df9b4..7053251 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -1,2537 +1,2537 @@
-<?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.
--->
-<!-- ===================================================================== -->
-<!-- $Id$ -->
-<!-- ===================================================================== -->
-<document>
-  <properties>
-    <title>Apache Commons Configuration Release Notes</title>
-    <author email="dev@commons.apache.org">Apache Commons Community</author>
-  </properties>
-
-  <body>
-    <release version="2.6" date="2019-MM-DD"
-             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.
-      </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>
-    </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.
+-->
+<!-- ===================================================================== -->
+<!-- $Id$ -->
+<!-- ===================================================================== -->
+<document>
+  <properties>
+    <title>Apache Commons Configuration Release Notes</title>
+    <author email="dev@commons.apache.org">Apache Commons Community</author>
+  </properties>
+
+  <body>
+    <release version="2.6" date="2019-MM-DD"
+             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="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>
+    </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>