[jdom-interest] JDOM2 Update.

Rolf jdom at tuis.net
Sun Oct 2 18:36:30 PDT 2011


Hi All

Another update.

This has been a busy spell since the last update.

JDOM 1.1.2
==========

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:

https://github.com/hunterhacker/jdom/blob/jdom-1.1.2/core/CHANGES.txt
https://github.com/hunterhacker/jdom/issues?labels=backport+1.1.2+done&sort=created&direction=desc&state=closed&page=1 


In summary, there have been 14 bug fixes, and the Jar will be available 
on maven-central.

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 
at: https://github.com/hunterhacker/jdom/zipball/jdom-1.1.2

JDOM 2
======

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

Unit Tests:
-----------

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).

Generics:
---------

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 
to org.jdom2.*

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.


Planning:
---------

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 
unchanged.

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 
problems, etc.

At the same time I plan on updating the wiki documentation for a bunch 
of things.

So, at the end of this week I expect to have a better idea of what the 
final result should look like.

Conclusion
----------

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: 
https://github.com/hunterhacker/jdom/zipball/jdom2-epoch

If you have suggestions or ideas for what you think the results should 
look like now is the time to speak up.

Rolf


More information about the jdom-interest mailing list