[jdom-interest] JDOM 2 list of elements, remove nulls out entries and fails to remove?

David Wall david.wall at myeastside.com
Fri May 11 17:42:31 PDT 2012

I believe I've run into a problem that I don't think I had with JDOM 
1.1.3 before I upgraded to 2.0.1.

I create a list of elements of a selected element using:

List<?> documentVersionElements = 
rootElement.getChildren("DocumentVersion", ns);

I see that I have 6 elements as expected in my list. None are null.

I am basically then trying to find a matching related element id in that 
list using something like:

                 Element found = null;
                 ListIterator<?> iter = documentVersionElements 
                 while( iter.hasNext() ) {
                     Element checkElement = (Element)iter.next();
                     EsfUUID evParentId = new 
EsfUUID(checkElement.getChildText("documentId", ns));
                     if ( evParentId.equals(id) ) {
                         found = checkElement;

Then, assuming I find it (found != null), I process it as expected.  But 
I then want to remove the found element from the element list so it 
cannot be found again, so I use this:


Most of the time, this seems to work as expected, and the 
documentVersionElements list is then shorter by 1.  But there are times 
when a list of 6 elements remains 6 elements after the remove (and 
remove() returns false), with 4 of them now null (not removed, but 
actually a null element), so in when I return to the listIterator() 
above and get my next() element, the element is null.

It's as if my Element objects are not unique in the list in terms of 
equals/hashCode as my elements should never be nulled out.

I am not sure why an element I find by iterating cannot then be removed. 
How could it fail to remove? Why would it change other list elements to 
NULL instead?  Is this not a valid usage pattern?


More information about the jdom-interest mailing list