<?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.0" date="TBD" 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-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="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>
