$Id: RELEASE-NOTES.txt,v 1.13 2004/05/01 20:49:56 craigmcc Exp $


                          Commons Digester Package
                                Version 1.6
                               Release Notes


INTRODUCTION:
============

This is mostly a feature release. A few minor bugs have been fixed (as listed
below) but Digester 1.5 proved a very stable release.

BACKWARDS INCOMPATIBILITIES
===========================

ArrayStack
----------
Previously, Digester required the collections library, simply for a single 
class: ArrayStack. To avoid depending explicitly on the commons-collections 
library, a copy of this class has been made within the digester library. All 
places which once used the collections version now use the digester version. 
Unfortunately, this will require all user classes which subclass the
modified classes to be recompiled. The affected classes are:
  CallParamRule (member bodyTextStack)
  Digester (members bodyTexts, params and stack)
  FactoryCreateRule
  xmlrules.DigesterRuleParser

RSS Example
-----------
Previously, Digester included example code for processing RSS (Really Simple
Syndication) streams in the core commons-digester.jar distribution, with the
code in package "org.apache.commons.digester.rss".  This code has been migrated
to the new source directory "src/examples/rss", complete with a build.xml script
that can recreate a new JAR file (commons-digester-rss.jar) containing this
code.  The Java package name has not changed, so the only impact on applications
actually using these classes will be the need to acquire the sources, build the
new JAR file, and add it toyour classpath.


NEW FEATURES:
=============

Improved Java Docs
------------------
As usual, documentation has improved in this release. 

Plugins
-------
There is a new package org.apache.commons.digester.plugins which provides
the facility for rules to declare "plugin points" in the parsed xml at
which users can specify their own classes to be instantiated and potentially
configured via the same xml file. This allows xml configuration files to
be "user extendable", in the manner that log4j, ant, etc. are (though with
even more flexibility in many ways). See the package documentation for
more information.

Substitution and Variable Expansion
-----------------------------------
Via the Substitutor class and the Digester.setSubstitutor method, xml
attributes and element data can be manipulated before being seen by any
Rule instances. Taking advantage of this framework, a VariableSubstitutor
class is provided which allows the parsing app to set up a table of values
that can be referenced via "${varname}" syntax (and variants thereof) in 
the input xml. See the package documentation for 
org.apache.commons.digester.substitution for more information. 

Parser Feature Setter
-----------------------------------
The ParserFeatureSetterFactory class (plus the helper classes in the
new org.apache.commons.digester.parser package) provides a portable
mechanism for setting some parser features which have not yet been
standardised by JAXP or similar specifications. See the package
documentation for more information.

PathCallParamRule
-----------------
This new Rule class allows the "path" to the current xml node, or 
just the name of the current xml node, to be passed as a parameter
of a CallMethodRule.

SetNestedPropertiesRule
------------------------
Allows child elements to be mapped to bean properties, like the
SetPropertiesRule maps attributes to bean properties. Example:
  <widget>
    <width>1</width>
    <height>2</height>
    <label>Hello, World</label>
  </widget>
This could previously be done via the BeanPropertySetterRule and the
ExtendedBaseRules engine with trailing-wildcard support, but this
Rule can be used with the default Rules class.

WithDefaultsRulesWrapper
------------------------
A Rules class which wraps any other Rules implementation and enhances it
so that if no rules are matched for an element in the input then a default
set of Rule instances are returned.

CallMethodRule target offset
----------------------------
Constructors now exist on this rule to allow the target object on which the
method is invoked to be specified as an offset on the digester object stack.
Previously, CallMethodRule always targetted the top object on the stack. Note
that at the current time, factory methods for these constructors do not
exist on the Digester class; the Rule needs to be constructed directly then
added to the digester to access this (not commonly needed) functionality. 

CallMethodRule handling of return value from invoked method
------------------------------------------------------------
A protected method "processMethodCallResult" on the CallMethodRule has
been created so that it is simple to subclass this Rule and override this
method to implement special checks or other processing of the return value
of a method invoked via this rule.

Digester lazy initialization
----------------------------
A new "initialize" method has been added that subclasses of Digester can
override to perform any initialization they wish to do before parsing
commences, but do not wish to do in the constructor.

Digester new Rule factory methods
---------------------------------
Factory methods have been added for the new CallParamPathRule and
SetNestedPropertiesRule. A factory method for the pre-existing
ObjectParamRule class has also been added.

Note that the new Plugin rules do not have factory methods, nor do the
new variants on the CallMethodRule which take an "offset" parameter. Use of
these rules is considered rare enough that a factory method is not
necessary. This may be revised at a later time.

Named Stacks
------------
The digester now provides push, pop, peek and isEmpty methods that take
a stack name as a parameter. These can be used for any purpose that new
Rule classes find useful. 

Param stack access now public
------------------------------
The previously package-scope methods for accessing the digester's parameter
stack are now public. This makes it possible for users to implement new
"call param" rules in their own namespace.

The createSAXException methods are now public
----------------------------------------------
These previously protected methods are now public, so that Rule classes
(both user-implemented and in subpackages of Digester) can call them when
errors are encountered.

SAXLogger access
-----------------
Since Digester 1.2, messages have been logged about SAX events handled by
the Digester during parsing via a "saxLog" logging object which is different 
from the Log object that is used for "higher-level" digester messages.
The new methods getSAXLogger and setSAXLogger on the Digester class allow 
access to this separate Log instance.

Matched rules stack
-------------------
New member "matches" on class Digester holds a stack where each element is a 
list of matching rules. When a child xml element is entered, the list of
matches is pushed onto the stack, and at end it is popped off. This
yields performance benefits, and potentially useful info for use by
rule classes.

Entity Resolver changes
-----------------------
The digester's default entity resolver behaviour is now to try resolving via
the SYSTEM id if the PUBLIC id is not present.

XMLRules new features
-----------------------
The ability to load rules from an InputSource has been added.
Support has been added for SetRootRule and ObjectParamRule.
The "context class loader" will be used, if one exists, when
resolving "include" statements in xmlrules files.
FromXmlRuleSet rulesets can now be added to a Digester instance 
starting at a base pattern specified by the caller.
A getCause() method has been added to the XmlLoadException class.

RuleSetBase allows patterns ending in '/'
-----------------------------------------
The subject of this one says it all.


OTHER IMPORTANT NOTES
======================

New License
-----------
This release is done under version 2.0 of the Apache License.
Please see the LICENSE.txt and NOTICE.txt files in the distribution.

RSS Support
-----------
The RSS package present in previous distributions of Digester was only ever 
intended to be a "worked example", so the code has been moved to the
"src/examples/api/rss" directory within the CVS repository, and is no
longer part of the standard Digester binary distribution. However
the same package structure has been preserved, so any users who were using the
rss code in production should just have to compile the example code and
include that additional jar in the classpath.

Examples Added
--------------
Several examples have been added to CVS at src/examples, for the enlightenment
of new Digester users.

Author and Version javadoc tags removed
---------------------------------------
All @author tags were removed, as per Apache Foundation policy. A list of
all the developers and contributors involved in Digester can still be
found via the Digester website, or in the "project.xml" file in the base
directory of the Digester CVS repository.

All @version tags were removed as they were not considered to be useful.


Commons Collections dependency
==============================
The commons-collections library has recently undergone a major release (3.0).
Digester has been tested with both commons-collections 2.1 and 3.0 and
there are no known issues with using either version of this library.


BUGS FROM PREVIOUS RELEASE
==========================

Reports Addressed
------------------
#22131 SetPropertiesRule: Avoid NPE when debugging enabled and no top object
#24613 xmlrules DTD does not provide SetRootRule
#25112 Cannot find digester-rules.dtd [DOCTYPE incorrect]
#28486 ExtendedBaseRules: Match can compute "longest match" incorrectly.

Outstanding Reports:
--------------------
#20903 ENH New rule for the digester (CallFactoryMethodRule)
#21903 ENH Include filename or uri if Digester.parse throws an exception

Bugs fixed with no bugzilla entry
----------------------------------
NodeCreateRule: r1.3 end method was not popping digester stack
ExtendedBaseRules: r.11 (patternStart)
ExtendedBaseRules: r.9 (findExactAncesterMatch(parentPattern))


DEPRECATION:
============
None

