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

          https://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/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd">
  <properties>
    <title>Apache Commons Digester Changes</title>
  </properties>
  <body>
  <release version="3.3" date="YYYY-MM-DD" description="Maintenance release.">
    <!-- ADD -->
    <action dev="simonetripodi" type="add" issue="DIGESTER-171" due-to="Nick Williams, Ivan Diana">Add DefaultThrowingErrorHandler to Digester API.</action>
    <action dev="ggregory" type="add" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action>
    <!--  FIX -->
    <action dev="simonetripodi" type="fix" issue="DIGESTER-175">
      Regression: DigesterTestCase#testPopNamedStackNotPushed expects EmptyStackException.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-174" due-to="Andreas Sahlbach">
      Inner List Annotation has wrong @Target for most of the predefined annotation rules.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-173" due-to="Nick Williams, Ivan Diana">
      No way to enable schema validation from DigesterLoader - patch provided by Ivan Diana.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-172" due-to="Nick Williams, Ivan Diana">
      Even with custom ErrorHandler, SAX errors are still written to stderr - patch provided by Ivan Diana.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-170" due-to="Dale Wijnand">
      Digester.pop(String) throws EmptyStackException where API doc says it returns null.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-169" due-to="Eugene Fedotov">
      Problem when including rules XML file with "classpath:" URL prefix.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-167" due-to="Eugene Fedotov">
      Groundless "Circular file inclusion detected" exception when including rules XML file.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-165" due-to="Dirk Schaube">
      BinderClassLoader does not override getResource.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-164" due-to="Frank David Martinez">
      RulesBase performance optimization.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-163" due-to="Torsten Krah">
      ConcurrentModificationException creating a new Digester via loaderInstance.newDigester().
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-162">
      ObjectCreateRule doesn't allow create objects which type is specified in attributeName only.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-161" due-to="Eduard Papa">
      Document thread-safety in Javadoc of Rule class.
    </action>
    <action dev="ebourg" type="update">
      ObjectCreationFactory is now a functional interface and can be used as a lambda expression.
    </action>
    <!-- UPDATE -->
    <action dev="ggregory" type="update" due-to="Gary Gregory">
      Bump commons-parent from 28 to 96 #146, #161, #169, #189, #193, #197, #200, #206.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">
      Bump GitHub action versions.
    </action>
    <action type="update" dev="ggregory" due-to="Gary Gregory">
      Bump GitHub build actions.
    </action>
    <action dev="ggregory" type="update" issue="DIGESTER-185" due-to="Gary Gregory">
      Bump Apache Commons Logging from 1.1.1 to 1.3.5 #142, #160, #175, #187.
    </action>
    <action dev="ggregory" type="update">
      Bump Java requirement from version 5 to 8.
    </action>
    <action dev="ggregory" type="update" issue="DIGESTER-187" due-to="Gary Gregory">
      Bump commons-beanutils:commons-beanutils from 1.8.3 to 1.11.0.
    </action>
    <action dev="ggregory" type="update" issue="DIGESTER-188" due-to="Dependabot">
      Bump cglib from 2.2.2 to 3.3.0 #9.
    </action>
    <action dev="ggregory" type="update" due-to="Dependabot">
      Bump JUnit from 4.10 to 4.13.2 in #77, #78.
    </action>
    <action dev="ggregory" type="update" due-to="Dependabot">
      Bump findbugs-maven-plugin from 2.3.2 to 3.0.5 #80.
    </action>
    <action dev="ggregory" type="update" due-to="Dependabot">
      Bump jarjar-maven-plugin from 1.5 to 1.9 #79.
    </action>
    <action dev="ggregory" type="update" due-to="Dependabot">
      Bump exec-maven-plugin from 1.1 to 3.2.0 #32, #130.
    </action>
    <action dev="ggregory" type="update" due-to="Dependabot">
      Bump org.apache.maven.plugins:maven-changes-plugin from 2.3 to 2.12.1 #112.
    </action>
    <action dev="ggregory" type="update" due-to="Dependabot">
      Bump org.apache.maven.plugins:maven-pmd-plugin from 2.3 to 3.21.2 #110.
    </action>
  </release>
  <release version="3.2" date="2011-12-13" description="Maintenance release.">
    <action dev="simonetripodi" type="fix" issue="DIGESTER-160">
      provide an additional artifact with shaded dependencies
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-159">
      */object-param-rule is not managed in the XML rules
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-157">
      Improve Set(Nested)PropertiesRuleAlias performances in the XML ruleset while binding rules.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-156">
      Make (Nested|Set)PropertiesBuilder#addAlias() fluent.
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-155">
      ClassLoader reference set to DigesterLoader not set in produced Digester instances
    </action>
    <action dev="simonetripodi" type="fix" issue="DIGESTER-154">
      The DigesterBinder is not able to load primitive classes by name
    </action>
    <action dev="mbenson" type="add" issue="DIGESTER-153">
      Add Constructor support to ObjectCreateRule
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-152">
      The org.apache.commons.digester3.binder.DigesterLoader doesn't allow binding a default org.xml.sax.Locator
    </action>
    <action dev="simonetripodi" type="add" issue="DIGESTER-151">
      The org.apache.commons.digester3.binder.DigesterLoader doesn't allow binding a default org.xml.sax.ErrorHandler.
    </action>
  </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>
