[jdom-interest] JDOM2 Update.
jdom at tuis.net
Sun Oct 2 18:36:30 PDT 2011
This has been a busy spell since the last update.
This is ready to go, and has been going through the final stages of
publishing it. You can see the change-log by either inspecting the
Changes file or the issues list:
In summary, there have been 14 bug fixes, and the Jar will be available
The JDOM 1.x branch will remain open for bug-fixes only.
If you want a sneak-peak of the 1.1.2 code you can download the source
There are two major news items here, and an anticipated plan:
1. the jUnit testing has close to complete coverage, with only some
unreachable code, and some quirky exception cases being missed;
2. Basic Generics changes have been made.
3. Putting together a JDOM2 plan
There are some failing tests, and some ignored tests. The failing tests
relate two one of two things:
- there is a bug in JDOM where multiple consecutive Text content
instances are not processed correctly... see
https://github.com/hunterhacker/jdom/issues/31 I have ignored some
tests, and left one failing until this gets resolved.
- The Jaxen code has a bug with respect to the ordering of Attribute and
Namespace nodes, see http://jira.codehaus.org/browse/JAXEN-215 It means
that for Attributes and Namespaces the XPath node set is not returned in
Document order, and the Test cases expect that, so currently they fail.
(I have a 'patched' version of Jaxen in my environment and the tests pass).
I have done a first pass at Generics for the code. The intention for
this was was to do a cleanup of warnings and to get a baseline of a
'simple' JDOM that's 'neat'. See the conclusion for how to get the code.
I have made only one significant API change which is to substantially
extend the 'Filter' interface, and implementing classes. This has
allowed for a completely 'clean' JDOM2 code base. The Filter API change
is backward-compatible (unless you happen to have your own
implementation of the Filter interface), and as a result, you should be
able to do a drop-in replacement of the current JDOM2 code with your
existing code (except you will have to change all the org.jdom.* imports
At this point the code is as close as possible to being a 'minimum'
JDOM2: it is JDOM with Generics, plus a minimum amount of spice on the
Filter API to make the getContent(Filter) stuff work. See the
'Conclusion' for how to get the code.
At this point The code is 'ripe' for ideas. The regression test harness
is comprehensive, the code is close to 'clean', and yet it is all still
very familiar to anyone familiar with JDOM.
There is one concern I have with the code in it's current state, and
that is the serialization code, which is haphazard, incomplete, and
inconsistent. I am not an expert on serialization, so I have left it
If you ignore serialization issues in eclipse, there are no longer any
warnings at all. Running 'FindBugs' identifies only two issue types,
Serialization, and some 'inefficient new Integer() calls)'
So, given the current state of the code, what comes next?
In the short term I intend to get some builds up on to the web-site so
that people can play with the code. In addition, there will be some
statistics related to code coverage, and unit tests. This will give
people an easy way to track progress, and to play with the code.
Then I intend to fix some of the more 'trivial' bugs that are still
outstanding, like the TRIM_FULL_WHITE bugs, some Iterator problems, List
At the same time I plan on updating the wiki documentation for a bunch
So, at the end of this week I expect to have a better idea of what the
final result should look like.
If you want to have a look at the code, get a feel for what it looks
like, you can get it very easily. I have tagged the current code state
with the tag 'jdom2-epoch'. Thus, you can reference that in github, and
get a zipped package of the code base for that tag. Clicking on this
link should start a download for you:
If you have suggestions or ideas for what you think the results should
look like now is the time to speak up.
More information about the jdom-interest