blob: 0f53242c8d564841639ebecbff04e0f746fe2a22 [file] [log] [blame]
Commons Digester Package
Version 1.7
Release Notes
This is a minor bugfix and maintenance release. A few small features have been added.
New projects are encouraged to use this release of digester, but there is no urgency
for existing projects to upgrade; Digester 1.6 has proven to be a stable release.
This release is 100% binary and source compatible with the previous release.
* The jakarta commons project has migrated to the Subversion version control system
(previously, CVS was used). There should be no effect on users of the Digester
library, but obviously the process of examining the latest source code, and of
creating patches for Digester has now changed. Please see the jakarta commons
website for details (
Release 1.7 has the same dependencies as release 1.6.
Compatible Dependency Sets:
Digester 1.7 + Logging 1.0.x + BeanUtils 1.x + Collections 2.x
Digester 1.7 + Logging 1.0.x + BeanUtils 1.x + Collections 3.x
Digester 1.7 + Logging 1.0.x + BeanUtils 1.7
Improved Documentation
As usual, documentation has improved in this release.
Minor Javadoc improvements occur in the following classes:
Rule, RulesBase, ExtendedBaseRules,
NodeCreateRule, CallMethodRule, CallParamRule, SetNextRule
The javadoc package documentation (package.html) has also had minor
updates to the following topics:
* How Digester can be used as a SAX content handler.
* How wildcard rules are ignored if non-wildcard matches
are available.
Named stacks are now cleared by the clear() method. Note that it is recommended
that a new Digester instance be created for each document parsed, hence this
should not be necessary.
Method resetRoot has been added. Again, this should only be relevant for programs
that attempt to reuse a single Digester instance to process multiple documents
(which is not recommended).
Method peek(String stackname, int n) has been added for consistency, to allow
access to arbitrary objects on named stacks. Thanks to Brian Hanafee for the
suggestion (bugzilla #33873).
Method setCustomContentHandler/getCustomContentHandler have been added so
rule classes can redirect SAX events without setting the parser's
contentHandler method during a parse. This new feature was then used to
resolve bug#34819.
The toString method has been improved, for better logging diagnostics.
Patch provided by Wendy Smoak.
The addressbook sample now demonstrates use of SetNestedPropertiesRule.
A new ignoreMissingProperty flag can be set false to cause
an exception to be generated when the xml contains an
attribute not available on the target bean. Patch contributed
by Gabriele Carcassi.
Xmlrules Enhancements
The xmlrules module has had a number of minor updates to provide access
to functionality that was previously accessable only via the digester
-- add set-nested-properties-rule tag. Much of this
patch provided by Wendy Smoak.
-- add targetoffset attribute to call-method-rule tag,
to allow the target object whose method is invoked
to be any object on the digester stack. Patch by
Wendy Smoak (bugzilla #33550).
-- add stack-index attribute to call-param-rule tag,
to allow passing any object on the digester stack
as a parameter to a target method. Patch by
Kris Nuttycombe, inspired by Blake Meike.
The digester-rules.dtd file has also been slightly cleaned up to
remove unnecessary duplication.
Plugins Enhancements
PluginCreateRule can now have an associated "factory" object for the Rules
object created at each "plugin point". This allows Rules implementations
other than RulesBase to be used with plugins. It also gives user code the
chance to set up default Rule objects within the Rules object which will
apply to all plugins. This change affects classes PluginRules,
PluginCreateRule and (new class) RulesFactory.
Reports Addressed
#31393 SetNestedPropertiesRule causes StackOverflowError
-- thanks to James Pine
#28739 Problem with parse(File) on windows machines
-- thanks to John Taylor
#34819 NodeCreateRule fails with Aelfred xml parser
Fixes without Bugzilla entries
* SetNestedPropertiesRule
new SetNestedPropertiesRule("foo", null)
was not ignoring element "foo".