[jdom-interest] Bug in Document(List) -> setMixedContent()

Jason Hunter jhunter at collab.net
Mon Jun 25 21:04:08 PDT 2001

> Here is a patch to Document that fixes a problem similar to one reported
> earlier today with Element.
> This really can't work unless the document already existed.  oldRoot is null
> on a new document which causes NPE's so this patch allows you to create a
> new document from a starter List.

Integrated.  Please verify.

>         finally {
>             if (ex != null) {
>                 // Restore the original state and parentage and throw
>                 if (oldRoot != null) { //*******************
>                         content = oldContent;
>                         oldRoot.setDocument(this);
>                         // Unmodify all modified elements.  DO NOT change

I did a more limited if clause.  Yours appears to wrap all logic, but
shouldn't it just wrap the oldRoot.setDocument()?

> I also patched Document(List, DocType)to throw an NPE if the list is null
> which would result in an invalid state. I suppose the NPE is arguable but
> this is better than returning a useless document.
>     public Document(List content, DocType docType) {
>             if (content == null)
>                     throw new NullPointerException();
>         setMixedContent(content);
>         setDocType(docType);
>     }

Whether or not you can have a truly empty doc is not really decided.

> My updated test suite still has a couple of other places where Document
> doesn't handle nulls but these are documented as TODO's and can wait.

Good 'nuff.


More information about the jdom-interest mailing list