[jdom-interest] detach() [eg]
Kenworthy, Edward
edward.kenworthy at exchange.co.uk
Sun Apr 22 23:44:42 PDT 2001
Hit the nail on the head. Allowing the root element to be detached and
throwing an illegalstateexception if you try anything with the document
(that requires a root, ie most things) while it has no root (my suggestion)
- or simply preventing the document from ever having a null root (elliotte's
suggestion) are both much more sensible.
----- Original Message -----
From: "Elliotte Rusty Harold" <elharo at metalab.unc.edu>
To: <jdom-interest at jdom.org>
Sent: Sunday, April 22, 2001 5:05 PM
Subject: Re: [jdom-interest] detach() [eg]
> However, this is not the problem. The problem is the phantom element
> JDOM attaches to the root after detaching the root. That seems really
> ugly and unexpected to me.
> >Elliotte Rusty Harold wrote:
> >>
> >> I propose the following compromise:
> >>
> >> 1. If detach() is called on the root element, then an exception is
thrown.
> >
> >Current mneumonic:
> >addContent(elt.clone()); // copy
> >addContent(elt.detach()); // move
> >
> >Proposed mneumonic:
> >addContent(elt.clone()); // copy
> >try {
> > addContent(elt.detach()); // try a move
> >} catch (IllegalXXXException e) {
> > elt.getDocument().setRootElement(new Element("filler"));
> > addContent(elt);
> >}
> >
> >I prefer the former.
> >
>
> I question the use case. How many times do you want to move the root
> element of a document? In any case, it seems to me that all we're
> saying is that when an element is used as the root the Document has
> locked it and won't let it be moved without a replacement. That seems
> perfectly reasonable to me.
>
> However, this is not the problem. The problem is the phantom element
> JDOM attaches to the root after detaching the root. That seems really
> ugly and unexpected to me. I had no idea JDOM was even doing that
> until this thread popped up. I think it violates the principle of
> least surprise. There is simply no way to predict that JDOM is going
> to create a new root element behind my back with an unknown name and
> assign it to the Document. It seems a lot less surprising to me that
> JDOM tosses an exception when I try to detach the root element.
>
> Furthermore, the proposed semantics of detach seem quite clear: if
> the parent is an element, then remove it from the parent. If the
> parent is a document throw an exception. The logical distinction
> between the two cases and the reason they behave differently is clear.
> --
>
> +-----------------------+------------------------+-------------------+
> | Elliotte Rusty Harold | elharo at metalab.unc.edu | Writer/Programmer |
> +-----------------------+------------------------+-------------------+
> | The XML Bible (IDG Books, 1999) |
> | http://metalab.unc.edu/xml/books/bible/ |
> | http://www.amazon.com/exec/obidos/ISBN=0764532367/cafeaulaitA/ |
> +----------------------------------+---------------------------------+
> | Read Cafe au Lait for Java News: http://metalab.unc.edu/javafaq/ |
> | Read Cafe con Leche for XML News: http://metalab.unc.edu/xml/ |
> +----------------------------------+---------------------------------+
> _______________________________________________
> To control your jdom-interest membership:
>
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
t.com
_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhos
t.com
More information about the jdom-interest
mailing list