<?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.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the 
release process easy :-).

2.  Do a bugzilla search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits.  Set the project.properties' maven.changelog.range 
property to the number of days since the last release.

To generate the release notes from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

then tweak the formatting if necessary
and commit

The <action> type attribute can be add,update,fix,remove.
-->

<document>
  <properties>
    <title>Commons DBCP Release Notes</title>
  </properties>
    <!-- NOTE:
    The description below is specially formatted so as to improve the layout of the generated release notes:
    The parsing process removes all line feeds, replacing them with a single space.
    The Velocity template in src/changes has been enhanced to replace pairs of adjacent spaces
    with a new-line in the release notes. (These spaces are ignored when displaying HTML).
    If the output is not quite correct, check for invisible trailing spaces!

    N.B. The release notes template groups actions by type, and only extracts data for the current release.
    The changes report outputs actions in the order they appear in this file.

    To regenerate the release notes:
    mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]

    Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
     -->

  <body>
    <release version="2.6.1" date="YYYY-MM-DD" description="This is a minor release, including bug fixes and enhancements.">
      <action dev="ggregory" type="update" due-to="Gary Gregory">
        Update tests from com.h2database:h2 1.4.197 to 1.4.199.
      </action>
    </release>
    <release version="2.6.0" date="2019-02-14" description="This is a minor release, including bug fixes and enhancements.">
      <action dev="chtompki" type="add" issue="DBCP-534" due-to="Peter Wicks">
        Allow for manual connection eviction.
      </action>
      <action dev="ggregory" type="add" issue="DBCP-514" due-to="Tom Jenkinson, Gary Gregory">
        Allow DBCP to register with a TransactionSynchronizationRegistry for XA cases.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-517" due-to="Gary Gregory">
        Make defensive copies of char[] passwords.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-515" due-to="Tom Jenkinson, Gary Gregory">
        Do not try to register synchronization when the transaction is no longer active.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-516" due-to="Tom Jenkinson, Gary Gregory">
        Do not double returnObject back to the pool if there is a transaction context with a shared connection.
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-518" due-to="Gary Gregory">
        Allow DBCP to work with old Java 6/JDBC drivers without throwing AbstractMethodError.
      </action>
      <action dev="ggregory" type="add" issue="DBCP-519" due-to="Gary Gregory">
        Add some toString() methods for debugging (never printing passwords.)
      </action>
      <action dev="ggregory" type="update" issue="DBCP-520" due-to="Zheng Feng">
        BasicManagedDataSource needs to pass the TSR with creating DataSourceXAConnectionFactory.
      </action>
      <action dev="ggregory" type="add" issue="DBCP-527" due-to="Gary Gregory">
        Add getters to some classes.
      </action>
      <action dev="ggregory" type="add" issue="DBCP-528" due-to="Gary Gregory">
        org.apache.commons.dbcp2.DriverManagerConnectionFactory should use a char[] instead of a String to store passwords.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-537" due-to="Gary Gregory">
        Update Apache Commons Pool from 2.6.0 to 2.6.1.
      </action>
    </release>
    <release version="2.5.0" date="2018-07-15" description="This is a minor release, including bug fixes and enhancements.">
      <action dev="ggregory" type="update" issue="DBCP-505" due-to="Gary Gregory">
        Update Java requirement from version 7 to 8.
      </action>
      <action dev="ggregory" type="add" issue="DBCP-506" due-to="Gary Gregory">
        Support JDBC 4.2.
      </action>
      <action dev="ggregory" type="add" issue="DBCP-479" due-to="Guillaume Husta, Gary Gregory">
        Support default schema in configuration.
      </action>
       <action dev="ggregory" type="update" issue="DBCP-427" due-to="Vladimir Konkov, Phil Steitz, Gary Gregory">
        Examines 'SQLException's thrown by underlying connections or statements for fatal (disconnection) errors.
      </action>
       <action dev="ggregory" type="update" issue="DBCP-507" due-to="Vladimir Konkov, Phil Steitz, Gary Gregory">
        Change default for fail-fast connections from false to true.
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-508" due-to="Gary Gregory">
        Prepared statement keys should take a Connection's schema into account.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-504" due-to="Bruno P. Kinoshita">
        Increase test coverage.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-510" due-to="Gary Gregory">
        Update Apache Commons Pool from 2.5.0 to 2.6.0.
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-512" due-to="Gary Gregory">
        Avoid exceptions when closing a connection in mutli-threaded use case.
      </action>
    </release>
    <release version="2.4.0" date="2018-06-12" description="This is a minor release, including bug fixes and enhancements.">
      <action dev="ggregory" type="fix" issue="DBCP-484" due-to="Emanuel Freitas">
        Connection leak during XATransaction in high load.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-492" due-to="Gary Gregory">
        Drop Ant build.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-491" due-to="Zheng Feng, Gary Gregory">
        Ensure DBCP ConnectionListener can deal with transaction managers which invoke rollback in a separate thread.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-494" due-to="Gary Gregory">
        org.apache.commons.dbcp2.PStmtKey should make copies of given arrays in constructors.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-495" due-to="Gary Gregory">
        Remove duplicate code in org.apache.commons.dbcp2.cpdsadapter.PStmtKeyCPDS.
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-496" due-to="Gary Gregory">
        Add support for pooling CallableStatements to the org.apache.commons.dbcp2.cpdsadapter package.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-497" due-to="Gary Gregory">
        Deprecate use of PStmtKeyCPDS in favor of PStmtKey.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-498" due-to="Gary Gregory">
        org.apache.commons.dbcp2.DataSourceConnectionFactory should use a char[] instead of a String to store passwords.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-499" due-to="Gary Gregory">
        org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory should use a char[] instead of a String to store passwords.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-500" due-to="Gary Gregory">
        org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS should use a char[] instead of a String to store passwords.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-501" due-to="Gary Gregory">
        org.apache.commons.dbcp2.datasources.CPDSConnectionFactory should use a char[] instead of a String to store passwords.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-502" due-to="Gary Gregory">
        org.apache.commons.dbcp2.datasources internals should use a char[] instead of a String to store passwords.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-503" due-to="Gary Gregory">
        org.apache.commons.dbcp2.datasources.InstanceKeyDataSourceFactory.closeAll() does not close all.
      </action>
    </release>
    <release version="2.3.0" date="2018-05-12" description="This is a minor release, including bug fixes and enhancements.">
      <action dev="pschumacher" type="fix" issue="DBCP-476" due-to="Gary Evesson, Richard Cordova">
        AbandonedTrace.getTrace() contains race condition.
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-482" due-to="Dennis Lloyd, Gary Gregory">
        Avoid javax.management.InstanceNotFoundException on shutdown when a bean is not registered. Closes #9.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-483" due-to="Gary Gregory">
        Make constant public: org.apache.commons.dbcp2.PoolingDriver.URL_PREFIX.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-486" due-to="Gary Gregory">
        DriverAdapterCPDS.setUser(), setPassword(), and getPooledConnection() with null arguments throw NullPointerExceptions when connection properties are set.
      </action>
      <action dev="ggregory" type="update" issue="DBCP-487" due-to="Gary Gregory">
        Add API org.apache.commons.dbcp2.datasources.PerUserPoolDataSource.clear().
      </action>
      <action dev="ggregory" type="update" issue="DBCP-488" due-to="Gary Gregory">
        NPE for org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS.setConnectionProperties(null).      
      </action>
      <action dev="ggregory" type="update" issue="DBCP-490" due-to="Gary Gregory">
        The method org.apache.commons.dbcp2.PoolingDriver.getConnectionPool(String) does not tell you which pool name is not registered when it throws an exception.      
      </action>
    </release>
    <release version="2.2.0" date="2017-12-27" description="This is a minor release, including bug fixes and enhancements.">
      <action dev="ggregory" type="fix" issue="DBCP-481" due-to="Gary Gregory">
        Update Apache Commons Pool from 2.4.2 to 2.5.0.
      </action>
      <action dev="mattsicker" type="fix" issue="DBCP-454" due-to="Philipp Marx, Matt Sicker">
        OSGi declarations contain multiple import headers for javax.transaction.
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-478" due-to="nicola mele">
        Wrong parameter name in site documentation for BasicDataSource Configuration Parameters.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-452">
        Add jmxName to properties set by BasicDataSourceFactory.  This
        enables container-managed pools created from JNDI Resource
        definitions to enable JMX by supplying a valid root JMX name.  
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-446" due-to="Gary Gregory, feng yang, Euclides M, Phil Steitz">
        NullPointerException thrown when calling ManagedConnection.isClosed().
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-444">
        InvalidateConnection can result in closed connection returned by getConnection.
      </action>
      <action dev="ggregory" type="fix" issue="DBCP-449" due-to="Grzegorz D.">
        Complete the fix for DBCP-418, enabling PoolableConnection class to load in environments
        (such as GAE) where the JMX ManagementFactory is not available.
      </action>
      <action dev="ggregory" type="add" issue="DBCP-451">
        Add constructor DriverManagerConnectionFactory(String).
      </action>
      <action dev="markt" type="fix" issue="DBCP-455" due-to="Kyohei Nakamura">
        Ensure that the cacheState setting is used when statement pooling is
        disabled.
      </action>
      <action dev="markt" type="fix" issue="DBCP-453" due-to="Philipp Marx">
        Ensure that setSoftMinEvictableIdleTimeMillis is used when working with
        BasicDataSource.
      </action>
      <action dev="markt" type="fix" issue="DBCP-456" due-to="Kyohei Nakamura">
        Correct the name of the configuration attribute
        softMinEvictableIdleTimeMillis.
      </action>
      <action dev="markt" type="fix" issue="DBCP-472">
        Avoid potential infinite loops when checking if an SQLException is fatal
        for a connection or not.
      </action>
      <action dev="markt" type="fix" issue="DBCP-468">
        Expand the fail-fast for fatal connection errors feature to include
        managed connections.
      </action>
      <action dev="markt" type="fix" issue="DBCP-463">
        Correct a typo in the method name
        PoolableConnectionFactory#setMaxOpenPreparedStatements. The old method
        remains but is deprecated so not to break clients currently using the
        incorrect name.
      </action>
       <action dev="markt" type="add" issue="DBCP-462" due-to="Keiichi Fujino">
         Refactoring to prepare for a future patch to enable pooling of all
         prepared and callable statements in PoolingConnection.
       </action>
       <action dev="markt" type="fix" issue="DBCP-459">
         Ensure that a thread's interrupt status is visible to the caller if the
         thread is interrupted during a call to
         PoolingDataSource.getConnection().
       </action>
       <action dev="markt" type="add" issue="DBCP-458" due-to="Adrian Tarau">
         Make it simpler to extend BasicDataSource to allow sub-classes to
         provide custom GenericObjectPool implementations.
       </action>
       <action dev="markt" type="fix" issue="DBCP-457">
         When using a BasicDataSource, pass changes related to the handling of
         abandoned connections to the underlying pool so that the pool
         configuration may be updated dynamically. 
       </action>
       <action dev="markt" type="add" issue="DBCP-474" due-to="Keiichi Fujino">
         Enable pooling of all prepared and callable statements
         inPoolingConnection.
       </action>
    </release>
    <release version="2.1.1" date="6 Aug 2015" description=
"This is a patch release, including bug fixes only.">
      <action dev="psteitz" type="update">
        Updated pool version to 2.4.2.  The fix for POOL-300 may cause DBCP
        users to see more reports of abandoned connections (if removal and logging
        are configured).  Prior to the fix for POOL-300, the PrintWriter used to log
        abandoned connection stack traces was not being flushed on each log event.
      </action>
      <action issue="DBCP-441" dev="psteitz" type="fix">
        Added BasicDataSource abandonedUsageTracking property missing from BasicDataSourceFactory.
      </action>
      <action issue="DBCP-442" dev="psteitz" type="fix">
        SharedPoolDataSource getConnection fails when testOnBorrow is set with
        a null validation query.
      </action>
      <action issue="DBCP-438" dev="psteitz" type="fix" due-to="Raihan Kibria">
        Nested connections in a transaction (local) throws null pointer. 
      </action>
      <action issue="DBCP-437" dev="psteitz" type="fix">
        BasicDataSource does not set disconnectionSql properties on its PoolableConnectionFactory.
      </action>
    </release>
    <release version="2.1" date="23 Feb 2015" description=
 "This is minor release, including bug fixes and enhancements. Note that
  one of the enhancements (DBCP-423) is to implement AutoCloseable in
  BasicDataSource, PoolingDataSource and the InstanceKeyDataSource
  implementations.
      ">
      <action issue="DBCP-420" dev="sebb" type="fix">
        InstanceKeyDataSource discards native SQLException when given password does not match
        password used to create the connection.
      </action>
      <action issue="DBCP-422" dev="ggregory" type="update">
        Update Apache Commons Logging to 1.2 from 1.1.3.
      </action>
      <action dev="markt" type="fix">
        Correct some Javadoc references to Apache Commons Pool 2 classes that
        have changed names since Pool 1.x. 
      </action>
      <action dev="markt" type="fix">
        Do not ignore the configured custom eviction policy when creating a
        BasicDataSource.
      </action>
      <action dev="psteitz" type="add" issue="DBCP-426" due-to="Kasper Sørensen">
        Added invalidateConnection method to BasicDataSource.
      </action>
      <action issue="DBCP-428" dev="psteitz" type="fix" due-to="Vladimir Konkov">
        Unsuccessful Connection enlistment in XA Transaction ignored by TransactionContext.
      </action>
      <action issue="DBCP-424" dev="psteitz" type="update">
        Made expired connection logging configurable in BasicDataSource.  Setting
        logExpiredConnections to false suppresses expired connection log messages.
      </action>
      <action issue="DBCP-423" dev="psteitz" type="update">
        Made Datasources implement AutoCloseable.
      </action>
      <action issue="DBCP-427" dev="psteitz" type="add" due-to="Vladimir Konkov">
        Added fastFailValidation property to PoolableConnection, configurable in
        BasicDataSource.  When set to true, connections that have previously thrown
        fatal disconnection errors will fail validation immediately (no driver calls).
      </action>
      <action issue="DBCP-432" dev="psteitz" type="fix">
        Changed BasicDataSource createDataSource method to ensure that initialization
        completes before clients get reference to newly created instances.
      </action> 
      <action issue="DBCP-433" dev="psteitz" type="fix" due-to="Vladimir Konkov">
        Fixed connection leak when SQLException is thrown while enlisting an XA
        transaction.
      </action>
      <action issue="DBCP-434" dev="psteitz" type="fix">
        Setting jmxName to null should suppress JMX registration of connection
        and statement pools.
      </action>
      <action dev="psteitz" type="update">
        Eliminated synchronization in BasicDataSource getNumActive, getNumIdle methods.
      </action>
      <action issue="DBCP-435" type="update" due-to="Denixx Baykin">
        Added property name verification to BasicDataSourceFactory. References including
        obsolete or unrecognized properties now generate log messages.
      </action>
    </release>
    <release version="2.0.1" date="24 May 2014" description="This is a bug fix release.">
      <action dev="markt" type="fix">
        Small performance improvements when returning connections to the pool.
      </action>
      <action issue="DBCP-414" dev="markt" type="fix" due-to="Pasi Eronen">
        Fixed DelegatingStatement close to ensure closed statements do not retain references
        to pooled prepared statements. Due to finalization code added in 2.0, this was causing
        pooled prepared statements to be closed by GC while in use by clients.
      </action>
      <action issue="DBCP-412" dev="psteitz" type="update">
        Added check in PoolingDataSource constructor to ensure that the connection factory
        and pool are properly linked.
      </action>
      <action issue="DBCP-417" dev="psteitz" type="fix">
        Fixed connection leak when managed connections are closed during transactions.
      </action>
      <action issue="DBCP-418" dev="psteitz" type="fix">
        Enable PoolableConnection class to load without JMX.
      </action>
    </release>
    <release version="2.0" date="3 March 2014" description=
"This release includes new features as well as bug fixes and enhancements.
 Version 2.0.x supports JDBC 4.1, so requires Java 7.
 
 The Java package name has been changed from 'org.apache.commons.dbcp' to 'org.apache.commons.dbcp2'.
 Also the Maven groupId is now 'org.apache.commons' and the artifactId is 'commons-dbcp2'
 These changes are necessary because the API is not strictly binary compatible with the 1.x releases.
 To convert from the earlier releases, update the package name in imports, update the dependencies and recompile.
 There may be a few other changes to be made.

 Applications running under Java 7 should use DBCP 2.0.x.
 Java 6 users should use DBCP 1.4.x which supports JDBC 4.
 Java 1.4 and Java 5 users should use DBCP 1.3.x which supports JDBC 3.
      ">
      <action issue="DBCP-411" dev="sebb" type="fix">
        BasicManagedDataSource - unregister from JMX on close().
      </action>
        <action issue="DBCP-154" dev="markt" type="fix">
        Log validation failures of poolable connections.
      </action>
      <action issue="DBCP-403" dev="sebb" type="fix">
        DelegatingStatement.close() fails with NPE if statement is null
      </action>
      <action issue="DBCP-322" dev="sebb" type="fix">
        CPDSConnectionFactory.validateObject(Object) ignores Throwable.
      </action>
      <action dev="markt" type="add">
        Provide a new option (cacheState) to cache current values of autoCommit
        and readOnly so database queries are not required for every call to the
        associated getters. This option is enabled by default.
      </action>
      <action dev="markt" issue="DBCP-300" type="fix">
        Removed unnecessary synchronisation in BasicDataSource#createDataSource.
      </action>
      <action dev="markt" type="update">
        The Java package name has been changed from org.apache.commons.dbcp to
        org.apache.commons.dbcp2.
      </action>
      <action dev="markt" type="update">
        Update to Commons Pool 2 (based on java.util.concurrent) to provide
        pooling functionality.
      </action>
      <action dev="markt" type="update">
        Updated source code for Java 1.6 (added @Override &amp; @Deprecated
        annotations).
      </action>
      <action dev="markt" type="update">
        Removed JOCL support.
      </action>
      <action dev="markt" issue="DBCP-143" type="update">
        Remove deprecated SQLNestedException. 
      </action>
      <action dev="markt" issue="DBCP-384" type="fix">
        Fix threading issues with accessToUnderlyingConnectionAllowed attribute
        of PoolingDriver which is used to support unit testing.
      </action>
      <action dev="markt" issue="DBCP-292" type="add">
        BasicDataSource instances are now exposed via JMX. All the configuration
        properties are available as is the connection pool and the statement
        pools (if statement pooling is enabled).
      </action>
      <action dev="markt" issue="DBCP-376" type="fix" due-to="Dave Oxley">
        Fix thread safety issues in the SharedPoolDataSource and the
        PerUserPoolDataSource. 
      </action>
      <action dev="markt" issue="DBCP-382" type="fix" due-to="Stefan Rempfer">
        Allow accessToUnderlyingConnectionAllowed to be configured when
        configuration takes place via JNDI in a JavaEE container.
      </action>
      <action dev="markt" issue="DBCP-369" type="fix" due-to="Michael Pradel">
        Fix threading issue when using multiple instances of the
        SharedPoolDataSource concurrently.
      </action>
      <action dev="markt" issue="DBCP-391" type="fix">
        Ensure that the close state of a pooled connection and the underlying
        connection is consistent when the underlying connection is closed as a
        result of an error condition.
      </action>
      <action dev="markt" issue="DBCP-404" type="fix">
        Make all mutable fields private.
      </action>
      <action dev="markt" issue="DBCP-364" type="fix">
        Return BasicDataSource rather than DataSource from
        BasicDataSourceFactory so a cast is not required to use BasicDataSource
        specific methods.
      </action>
      <action dev="markt" issue="DBCP-358" type="fix">
        The equals() implementations of the DelegatingXxx classes are now
        symmetric. There are some important API changes underlying this fix.
        Firstly, two DelegatingXxx instances are no longer considered equal if
        they have the same innermost delegate. Secondly, a DelegatingXxx
        instance is not considered equal to its innermost delegate. The
        getInnermostDelegateInternal() method has been made public (but remains
        part of the internal API) to allow classes extending this implementation
        to access the innermost delegate when required.
      </action>
      <action dev="markt" issue="DBCP-368" type="add">
        Expose the new Pool 2 property evictionPolicyClassName to enable more
        sophisticated eviction strategies to be used.
      </action>
      <action dev="markt" issue="DBCP-406" type="add" due-to="Steeve Beroard">
        Add support for pooling PreparedStatements that use auto-generated keys.
      </action>
      <action dev="markt" issue="DBCP-180" type="fix">
        Enable JDBC resources that are no longer referenced by client code to be
        eligible for garbage collection.
      </action>
      <action dev="markt" issue="DBCP-177" type="add">
        Enable DBCP to work with a SecurityManager such that only DBCP needs to
        be granted the necessary permissions to communicate with the database.
      </action>
      <action dev="markt" issue="DBCP-410" type="fix" due-to="Andreas Sturmlechner">
        Correct path to Javadoc overview in build.xml.
      </action>
      <action dev="markt" issue="DBCP-234" type="fix">
        The default values for readOnly, autoCommit and transactionIsolation are
        now taken from the JDBC driver. No calls to setReadOnly(),
        setAutoCommit() or setTransactionIsolation() will be made for a newly
        borrowed connection unless a default is explicitly configured and the
        connection is currently using a different setting. 
      </action>
      <action dev="markt" issue="DBCP-219" type="add">
        Register pooled connections with JMX so that they may be forcibly closed
        via JMX if required.
      </action>
      <action dev="markt" issue="DBCP-373" type="add">
        Modify SharedPoolDataSource and PerUserPoolDataSource to expose all of
        the configuration properties of the underlying connection pool(s). This
        represents a significant refactoring of these classes and a number of
        property names have changed as a result. 
      </action>
      <action dev="markt" issue="DBCP-351" type="add">
        Provide an option to control if autoCommit is always set to true when a
        connection is returned to the connection pool.
      </action>
      <action dev="markt" issue="DBCP-399" type="add">
        Provide an option to control if rollback is called when a connection is
        returned to the poll with autoCommit disabled.
      </action>
      <action dev="markt" issue="DBCP-340" type="add">
        Provide an option to set the default query timeout.
      </action>
      <action dev="markt" type="fix">
        Connection.isValid() should not throw an SQLException if the connection
        is closed.
      </action>
      <action dev="markt" issue="DBCP-357" type="fix">
        Use Connection.isValid() to validate connections unless a validation
        query is explicitly configured. Note that this means it is no longer
        necessary for a validation query to be specified in order for validation
        to take place. When testing with Oracle, this resulted in database
        validation being approximately 7 times faster.
      </action>
      <action dev="markt" issue="DBCP-249" type="add">
        Add support for validation testing database connections on creation.
      </action>
    </release>
    <release version="1.5.1" date="not yet released" description="TBD">
      <action dev="markt" issue="DBCP-400" type="fix">
        Correct the documentation for the maxOpenPreparedStatements parameter
        and review the use of the phrase non-positive throughout the
        documentation and javadoc, replacing it with negative where that is the
        correct definition to use.
      </action>
      <action dev="markt" issue="DBCP-405" type="fix">
        Avoid multiple calls to Connection.getAutoCommit() in
        PoolableConnectionFactory.passivateObject() as it could be an expensive
        call.
      </action>
      <action dev="markt" issue="DBCP-392" type="fix">
        Use one line per statement for methods with multiple statements rather
        than using a single line.
      </action>
      <action dev="markt" issue="DBCP-396" type="fix">
        Expose all of the AbandonedConfig properties through a BasicDataSource.
      </action>
      <action dev="markt" issue="DBCP-380" type="fix" due-to="Balazs Zsoldos">
        Correct implementation of DelegatingConnection.isWrapperFor() so it
        works correctly with older JDBC drivers.
      </action>
      <action dev="markt" issue="DBCP-347" type="fix" due-to="Robert Poskrobek">
        Correct implementation of DelegatingStatement.isWrapperFor(). Also fix
        DelegatingDatabaseMetaData.isWrapperFor() and
        DelegatingResultSet.isWrapperFor() that had the same problem.
      </action>
      <action dev="markt" issue="DBCP-341" type="fix" due-to="Ioannis Canellos">
        LocalXAConnectionFactory does not properly check if Xid is equal to
        currentXid when resuming which may result in an XAException.
      </action>
      <action dev="markt" issue="DBCP-355" type="fix" due-to="Florent Guillaume">
        Ensure that the XAConnection is closed when the associated Connection is
        closed.
      </action>
      <action dev="markt" issue="DBCP-398" type="fix">
        Clarify Jaavdoc for isClosed() method of PoolableConnection.
      </action>
      <action dev="markt" issue="DBCP-383" type="fix">
        Avoid NullPointerException and throw an XAException if an attempt is
        made to commit the current transaction for a connection when no
        transaction has been started.
      </action>
      <action dev="markt" issue="DBCP-372" type="fix">
        Using batchUpdate() should not invalidate the PreparedStatement when it
        is returned to the pool.
      </action>
      <action dev="markt" issue="DBCP-309" type="fix">
        Improve documentation for JNDI example using BasicDataSource. 
      </action>
    </release>
    <release version="1.4.1" date="not yet released" description="TBD">
      <action dev="psteitz" issue="DBCP-334" type="update" due-to="Alberto Mozzone">
        Exposed GenericObjectPool's softMinEvictableIdleTimeMillis property for
        configuration and use by BasicDataSource.
      </action>
      <action dev="psteitz" issue="DBCP-337" type="fix" due-to="Rob Gansevles">
        Made equals reflexive in DelegatingStatement (and subclasses), DelegatingMetaData,
        DelegatingResultSet and PoolingDriver#PoolGuardConnectionWrapper.
      </action>
      <action dev="psteitz" issue="DBCP-342" type="fix" due-to="Byungchol Kim">
        Modified createDataSource method in BasicDataSource to ensure that GenericObjectPool
        Evictor tasks are not started and orphaned when BasicDataSource encounters errors on
        initialization.  Prior to this fix, when minIdle and timeBetweenEvictionRunsMillis
        are both positive, Evictors orphaned by failed initialization can continue to
        generate database connection requests.  This issue is duplicated by DBCP-339
        and DBCP-93.
      </action>
      <action dev="psteitz" issue="DBCP-330" type="fix">
        Changed DelegatingDatabaseMetaData to no longer add itself to the AbandonedTrace
        of its parent connection.  This was causing excessive memory consumption and was
        not necessary, as resultsets created by DelegatingDatabaseMetaData instances are
        attached to the parent connection's trace on creation.  Also fixes DBCP-352.
      </action>
      <action dev="psteitz" issue="DBCP-343" type="fix">
        Modified execute methods of Statement objects to ensure that whenever
        a statement is used, the lastUsed property of its parent connection is
        updated.
      </action>
      <action dev="markt" issue="DBCP-333" type="fix">
        Correctly implemented the option to configure the class loader used to load
        the JDBC driver.
      </action>
      <action dev="psteitz" issue="DBCP-346" type="update" due-to="Ken Tatsushita">
        LIFO configuration option has been added to BasicDataSource.  When set
        to true (the default), the pool acts as a LIFO queue; setting to false
        causes connections to enter and exit to pool in FIFO order.
      </action>
      <action dev="psteitz" issue="DBCP-344" type="fix" due-to="Jeremy Whiting">
        Test transitive dependencies brought in by geronimo-transaction created
        version conflicts (commons logging and junit).  These have been explicitly
        excluded in the POM.
      </action>
      <action dev="psteitz" issue="DBCP-348" type="fix" due-to="Eiji Takahashi">
        BasicDataSourceFactory incorrectly used "initConnectSqls" in versions
        1.3 and 1.4 of DBCP as the property name for connectionInitSqls.
        Online docs for 1.3/1/4 have been updated to reflect this inconsistency.
        The BasicDataSourceFactory property name has been changed to "connectInitSqls"
        to match the online docs and the BasicDataSource property name.
      </action>
    </release>
    <release version="1.4" date="2010-02-14" description="This release includes
     new features as well as bug fixes and enhancements.  Some bug fixes
     change semantics (e.g. connection close is now idempotent).  The 1.3
     and 1.4 releases of DBCP are built from the same sources.  Version 1.4 
     supports JDBC 4, so requires JDK 1.6. Applications running under
     JDK 1.4-1.5 must use DBCP 1.3. Applications running under JDK 1.6
     should use DBCP 1.4. Other than support for the added methods in JDBC 4,
     there is nothing new or different in DBCP 1.4 vs. DBCP 1.3.   The list of
     changes below since 1.2.2 applies to both the 1.3 and 1.4 release.  Other than
     the one issue related to adding JDBC 4 support (DBCP-191), all bug fixes
     or new features are included in both DBCP 1.3 and 1.4 ">
      <action dev="psteitz" type="fix" issue="DBCP-320">
        Eliminated poolKeys cache from PerUserPoolDataSource.
      </action>
      <action dev="sebb" type="fix" issue="DBCP-321">
        Eliminated userKeys LRUMap cache from SharedPoolDataSource.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-319" due-to="Sebastian Bazley">
        Made private fields final where possible.
      </action>
      <action dev="sebb" type="fix" issue="DBCP-318" due-to="Sebastian Bazley">
        PerUserPoolDataSource.getPooledConnectionAndInfo multi-threading bug.
      </action>
      <action dev="sebb" type="fix" issue="DBCP-315" due-to="Sebastian Bazley">
        Remove throws clause from method that does not throw an exception.
      </action>
      <action dev="sebb" type="fix" issue="DBCP-313" due-to="Sebastian Bazley">
        Remove code that catches and ignores Exceptions when calling
        PooledConnection.removeConnectionEventListener(ConnectionEventListener)
        as the method does not throw any Exceptions.
      </action>
      <action dev="sebb" type="fix" issue="DBCP-316" due-to="Sebastian Bazley">
        Remove impossible null check.
      </action>
      <action dev="sebb" type="update" issue="DBCP-314" due-to="Sebastian Bazley">
        Renamed variables with duplicate names in different scopes.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-312" due-to="Glen Mazza">
        Clarified javadoc for BasicDataSource close() method.
      </action>
      <action dev="psteitz" type="add" issue="DBCP-204" due-to="Wei Chen">
        Made PoolingConnection pool CallableStatements. When BasicDataSource's 
        poolPreparedStatements property is true, CallableStatements are now
        pooled along with PreparedStatements. The maxOpenPreparedStatements
        property limits the combined number of Callable and Prepared statements
        that can be in use at a given time.
      </action>
      <action dev="markt" type="update" issue="DBCP-305" due-to="Christopher Schultz">
        Use an API specific exception for logging abandoned objects to make
        scanning the logs for these exceptions simpler and to provide a better
        message that includes the creation time of the abandoned object.
      </action>
      <action dev="markt" type="fix" issue="DBCP-303" due-to="Dave Oxley">
        Ensure Statement.getGeneratedKeys() works correctly with the CPDS
        adapter.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-302" due-to="Sebastian Bazley">
        Removed incorrectly advertised ClassNotFoundException from
        JOCLContentHandler.ConstructorDetails.createObject().
      </action>
      <action dev="markt" type="update" issue="DBCP-203" due-to="Mark Grand">
        Make the class loader used to load the JDBC driver configurable for the
        BasicDatasource.
      </action>
      <action dev="markt" type="fix" issue="DBCP-8">
        Handle user password changes for InstanceKeyDataSources.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-289" due-to="Marc Kannegießer">
        Made XADataSource configurable in BasicManagedDataSource.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-294" due-to="Philippe Mouawad">
        Added PoolableManagedConnection and PoolableManagedConnectionFactory so that
        pooled managed connections can unregister themselves from transaction registries,
        avoiding resource leaks.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-276">
        Added connectionProperties property to DriverAdapterCPDS.
      </action>
      <action dev="psteitz" type="add" issue="DBCP-226">
        Added a validationQueryTimeout configuration parameter to BasicDataSource
        allowing the user to specify a timeout value (in seconds) for connection
        validation queries. 
      </action>
      <action dev="psteitz" type="add" issue="DBCP-175" due-to="Jiri Melichna and Jerome Lacoste">
        Added a connectionInitSqls configuration parameter to BasicDataSource
        allowing the user to specify a collection of SQL statements to execute
        one time when a physical database connection is first opened.
      </action>
      <action dev="markt" type="fix" issue="DBCP-212">
        PoolableConnectionFactory.makeObject() is no longer synchronized. This
        provides improved response times when load spikes at the cost of a
        faster rise in database server load. This change was made as a partial
        fix for DBCP-212.  The synchronization changes in Commons Pool 1.5 complete
        the fix for this issue.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-242">
        Reverted DelegatingConnection close to 1.2.2 version to ensure
        open statements are closed before the underlying connection is closed.
      </action>
      <action dev="markt" type="fix" issue="DBCP-235">
        Refactor DelegatingConnection and ManagedConnection enable overridden
        equals() and hashcode() to work correctly.
      </action>
      <action dev="markt" type="update" issue="DBCP-265">
        Add a DelegatingDatabaseMetaData to track ResultSets returned from
        DatabaseMetaData objects.
      </action>
      <action dev="markt" type="fix" issue="DBCP-215">
        Modified BasicDataSourceFactory to complete initialization of the pool
        by creating initialSize connections rather than leaving this to lazy
        initialization when the pool is used.
      </action>
      <action dev="markt" type="fix" issue="DBCP-253">
        Eliminated masked _stmt field in descendents of DelegatingStatement.
       </action>
      <action dev="markt" type="fix" issue="DBCP-191" due-to="Michael Heuer and J. David Beutel" >
        Modified DBCP sources to support compilation under JDK 1.4-1.6
        using Ant flags to do conditional compilation.
      </action>
      <action dev="markt" type="fix" issue="DBCP-272">
        Added a static initializer to BasicDatasource that calls
        DriverManager.getDrivers() to force initialization before we ever do
        anything that might use Class.forName() to load (and register) a JDBC
        driver.
      </action>
      <action dev="markt" type="fix" issue="DBCP-4">
        Eliminated direct System.out calls in AbandonedTrace.
      </action>
      <action dev="niallp" type="fix" issue="DBCP-264">
        Modified DelegatingStatement close to clear open batches.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-255">
        Eliminated unused private "parent" field in AbandonedTrace.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-273" due-to="Mark Lin">
        Fixed errors handling boolean-valued Reference properties in 
        InstanceKeyObjectFactory, DriverAdapterCPDS that were causing 
        testOnBorrow and poolPreparedStatements properties to be incorrectly
        set when creating objects from javax.naming.Reference instances.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-271" due-to="Sebastian Bazley">
        Made private instance fields of AbandonedTrace volatile (parent,
        createdBy, lastUsed, createdTime) or final (trace).
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-270" due-to="Filip Hanik">
        Narrowed synchronization in AbandonedTrace to resolve an Evictor deadlock.
      </action>
      <action dev="bayard" type="fix" issue="DBCP-218">
        Corrected Javadoc to state that getLoginTimeout and setLoginTimeout are
        NOT supported by BasicDataSource.
      </action>
      <action dev="bayard" type="update" issue="DBCP-211">
        Added Maven 2 pom.xml. Removed a block of code from TestJOCLed that set
        the Xerces parser manually. This was to support early JDKs. The 1.3
        version of DBCP requires JDK 1.4+.
      </action>
      <action dev="psteitz" type="add" issue="DBCP-228" due-to="Dain Sundstrom">
        Added support for pooling managed connections.
      </action>
      <action dev="psteitz" type="add" issue="DBCP-230" due-to="Dain Sundstrom">
        Added BasicManagedDataSource, extending BasicDataSource.
        Also improved extensibility of BasicDataSource by encapsulating
        methods to create object pool, connection factory and datasource
        instance previously embedded in createDataSource.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-233" due-to="Dain Sundstrom">
        Changed behavior to allow Connection, Statement, PreparedStatement,
        CallableStatement and ResultSet to be closed multiple times. The first
        time close is called the resource is closed and any subsequent calls
        have no effect. This behavior is required as per the Javadocs for these
        classes. Also added tests for closing all types multiple times and
        updated any tests that incorrectly assert that a resource can not be
        closed more then once.  Fixes DBCP-3, DBCP-5, DBCP-23 and DBCP-134.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-11" due-to="Dain Sundstrom">
        Modified PoolingDataSource, PoolingDriver and DelegatingStatement to
        assure that all returned Statements, PreparedStatements, 
        CallableStatements and ResultSets are wrapped with a delegating object,
        which already properly handle the back pointers for Connection and
        Statement.  Also added tests to to assure that the *same* object used 
        to create the statement or result set is returned  from either 
        getConnection() or getStatement().
      </action>
      <action dev="dain" type="update" issue="DBCP-143">
        SQLNestedException has been deprecated and will be replaced in DBCP 2.0 with
        SQLException and standard Java exception chaining.
      </action>
      <action dev="dain" type="fix" issue="DBCP-221">
        BasicDataSource.close() now permanently marks the data source as closed,
        and no new connections can be obtained from the data source. At close all
        idle connections are destroyed and the method returns.  As the remaining
        active connections are closed, they are destroyed.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-241">
        Eliminated potential sources of NullPointerExceptions in 
        PoolingConnection.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-216" due-to="Marcos Sanz">
        Improved error recovery and listener cleanup in 
        KeyedCPDSConnectionFactory. Substituted calls to destroyObject with
         _pool.invalidateObject on error to ensure pool active count is
        decremented on error events. Ensured that events from closed or invalid
        connections are ignored and listeners are cleaned up. 
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-245" due-to="Michael Drechsel">
        Fixed error in SharedPoolDataSource causing incorrect passwords to be 
        stored under certain conditions.
      </action> 
      <action dev="psteitz" type="fix" issue="DBCP-237" due-to="Oliver Matz">
        Added exception handler to ensure that PooledConnections are not
        orphaned when an exception occurs in setUpDefaults or clearWarnings in 
        InstanceKeyDataSource.getConnection.
      </action> 
      <action dev="psteitz" type="fix" issue="DBCP-252" due-to="FindBugs">
        Made getPool synchronized in PoolableConnectionFactory.
        Fixes inconsistent synchronization accessing _pool.
      </action> 
      <action dev="psteitz" type="fix" issue="DBCP-252" due-to="FindBugs">
        Fixed inconsistent synchronization on _rollbackAfterValidation,
        _validationQuery and _pool in CPDSConnectionFactory and 
        KeyedCPDSConnectionFactory by making the first two volatile and making
        both getter and setter for _pool synchronized.
      </action> 
    </release>
    <release version="1.3" date="2010-02-14" description="Compatability release for JDBC 3.
      See version 1.4 description and change log.">
     <action type="update">
        See &lt;a href="changes-report.html#a1.4"&gt;DBCP 1.4 Changes &lt;/a&gt; for details. Version
        1.3 is identical to 1.4, other than JDBC 4 methods being filtered out of the DBCP 1.3 sources. Changes
        Since 1.2.2 are the same for 1.3 and 1.4.
      </action>
    </release>
    <release version="1.2.2" date="2007-04-04"
      description="This is a maintenance release containing bug fixes
      and enhancements. All API changes are binary compatible with version 1.2.1.">
      <action dev="dirkv " type="add">
        Add a &lt;i&gt;JNDI How To&lt;/i&gt; to the User Guide.
      </action>
      <action dev="dirkv " type="fix" issue="DBCP-108" due-to="Maxwell Grender-Jones">
        DriverManagerConnectionFactory: blank user name and password handling.
      </action>
      <action dev="dirkv " type="fix" issue="DBCP-113" due-to="Rohan Lenard">
        Broken behaviour for BasicDataSource.setMaxActive(0).
      </action>
      <action dev="dirkv " type="fix" issue="DBCP-36" due-to="Jonathan Whitall">
        BasicDataSource does not work with getConnection(String, String).
      </action>
      <action dev="dirkv " type="update" issue="DBCP-164" due-to="Todd Carmichael">
        Enhancements to prepared statement in DriverAdapterCPDS.
      </action>
      <action dev="yoavs" type="update" issue="DBCP-186" due-to="Ralf Hauser">
        Better messages and docs for LoginTimeout UnsupportedOperationException.
      </action>
      <action dev="yoavs" type="fix" issue="DBCP-50" due-to="Nicky Nicolson">
        Error in JOCL snippet in org.apache.commons.dbcp package javadoc.
      </action>
      <action dev="yoavs" type="update" issue="DBCP-165" due-to="QM">
        Added toString() methods to DelegatingPreparedStatement and DelegatingStatement
      </action>
      <action dev="yoavs" type="fix">
        Changes to make DBCP compile on JDK 1.5 by adding source="1.4" to compiler
        arguments (there are compiler errors in JDK 5.0 without this source switch
        that cannot be fixed without JDK 5.0-specific syntax).
      </action>
      <action dev="dirkv " type="fix" issue="DBCP-20" due-to="Chris Nappin">
        Per-user pooling with Oracle driver and default isolation settings.
      </action>
      <action dev="dirkv " type="fix" issue="DBCP-9" due-to="Adrian Baker">
        Error in JOCL document in javadoc.
      </action>
      <action dev="sullis" type="update">
        Added toString() method to DelegatingConnection.
      </action>
      <action dev="dirkv " type="update" issue="DBCP-181" due-to="Meikel Bisping">
        Add DriverManager.invalidateConnection().
      </action>
      <action dev="dirkv " type="fix" issue="DBCP-184" due-to="Meikel Bisping">
        Improved Exception nesting in ConnectionPool.
      </action>
      <action dev="dennisl" type="fix" issue="DBCP-144" due-to="Sebb">
        Fix broken website links for examples.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-28" 
        due-to="Huw Lewis, James Ring">
        Modified PoolableConnection close method to invalidate instance
        when invoked on an already closed connection.
      </action>
      <action dev="joehni" type="fix" issue="DBCP-81">
        Inserted null checks to avoid NPE in close operations.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-105" 
        due-to="Sandy McArthur, Thomas Fischer">
        Changed getReference method in InstanceKeyDataSource to return a
        concrete factory and added implementations of getReference in concrete
        subclasses.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-39" due-to="Jindrich Vimr">
        Inserted null check in close method of SharedPoolDataSource to avoid
        NPE when invoked on non-initialized pool.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-71" due-to="Douglas Squirrel">
        Document fact that true values for testOnBorrow, testOnReturn, testWhileIdle
        only have effect when validationQuery is set to a non-null string.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-102">
        Modified activateObject in PoolableConnection to test connection
        properties before resetting to defaults.
      </action>
      <action dev="sandymac" type="fix" issue="DBCP-188">
        Corrected maxActive documentation in configuration.html.
      </action>
      <action dev="psteitz"  type="update">
        Upgraded dependency to Pool 1.3.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-187" due-to="Ralf Hauser">
        Added connection info to SQLException messages when closed connections
        (resp stmts) are accessed in DelegatingConnection, DelegatingStatement.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-41" due-to="Anton Tagunov">
        Fixed errors in pool parameter documentation and made
        0 value for _maxPreparedStatements in DriverAdapterCPDS behave
        like a negative value, to be consistent with documentation
        and pool behavior.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-100">
        Made userKeys an instance variable (i.e., not static)
        in SharedPoolDataSource.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-198">
        Changed implementation of equals in 
        PoolingDataSource.PoolGuardConnectionWrapper
        to ensure it is reflexive, even when wrapped connections are not
        DelegatingConnections.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-116" due-to="Thomas Fischer">
        Added rollbackAfterValidation property and code to issue a rollback on a
        connection after validation when this property is set to true to eliminate
        Oracle driver exceptions. Default property value is false.
      </action>
      <action dev="psteitz" type="update" issue="DBCP-68">
        Removed dependency on Commons Collections by adding collections
        2.1 sources for LRUMap and SequencedHashMap with package scope to 
        datasources package.
      </action>
      <action dev="psteitz" type="fix" issue="DBCP-65">
        Removed synchronization from prepareStatement methods in
        PoolingConnection. Synchronization in these methods was causing
        deadlocks. No resources other than the prepared statement pool are
        accessed by these methods, and the pool methods are synchronized. 
        Also fixes DBCP-202.
      </action>
    </release>   

    <release version="1.2.1" date="2004-06-12" description="Maintenance Release to restore JDK 1.3 compatibility">
      <action type="fix">
        See &lt;a href="release-notes-1.2.1.html"&gt;DBCP 1.2.1 Release Notes&lt;/a&gt; for details.
      </action>
    </release>   

    <release version="1.2" date="2004-06-07">
      <action type="update">
        See &lt;a href="release-notes-1.2.html"&gt;DBCP 1.2 Release Notes&lt;/a&gt; for details.
      </action>
    </release>   

    <release version="1.1" date="2003-10-20">
      <action type="update">
        See &lt;a href="release-notes-1.1.html"&gt;DBCP 1.1 Release Notes&lt;/a&gt; for details.
      </action>
    </release>   
 
   <release version="1.0" date="2002-08-12" description="Initial Release">
      <action type="add">
        Initial Release
      </action>
    </release>   

  </body>
</document>
