<?xml version="1.0" encoding="UTF-8"?>
<!--
     Licensed to the Apache Software Foundation (ASF) under one or more
     contributor license agreements.  See the NOTICE file distributed with
     this work for additional information regarding copyright ownership.
     The ASF licenses this file to You under the Apache License, Version 2.0
     (the "License"); you may not use this file except in compliance with
     the License.  You may obtain a copy of the License at

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

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
  -->
<document xmlns="http://maven.apache.org/changes/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/plugins/maven-changes-plugin/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons Digester Changes</title>
  </properties>
  <body>
  <release version="3.2" date="201?-??-??" description="Maintenance release.">
    
  </release>
  <release version="3.1" date="2011-10-29" description="New features release.">
    <action dev="simonetripodi" type="add" issue="DIGESTER-150">
      Use Java5 Concurrent APIs to asynchronous parse()
    </action>
  </release>
  <release version="3.0" date="2011-07-06" description="New major release.">
    <action dev="simonetripodi" type="fix" issue="DIGESTER-28">
      Default ClassLoader policy unusable in EAR archive
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-72">
      Allow SetNextRule to fire on begin
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-85">
      Include filename or uri if Digester.parse(File file or String uri throws a SAXException
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-90">
      xmlrules does not support setNamespaceURI
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-103">
      xmlrules does not support NodeCreateRule
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-105">
      Need to process [attribute id="name"]somename[/attribute]
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-118">
      ObjectCreateRule shouldn't keep className as a field.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-123">
      xmlrules dtd does not define xmlattrs for node-create-rule
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-127">
      Allow DigesterLoader to accept an instance of a preconfigured Digester
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-131">
      Allow recursive match in ExtendedBaseRules.
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-132">
      Add a CompoundSubstitutor to support more than one Substitutors at a time.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-134">
      Bug in SetPropertyRule.
    </action>
    <action dev="simonetripodi" type="update" issue="DIGESTER-137">
      Public/protected static fields which intended as constants, but which are not marked final.
    </action>
  </release>
  </body>
</document>
