[jdom-interest] How to "crash" JDOM, part 1
David W. Smiley
dsmiley at mitre.org
Thu Aug 31 09:59:54 PDT 2000
(corrected subject line)
I just now realized this is overall a more complicated issue. I've
decided to present the following _pseuodocode_ instead:
private:
/** If null, is a "root element", possibly a "document root element". */
Element parentElement= null;
/** Means that this element and all childs are bound to a document. To
be true, parentElement must be null. */
boolean isDocRootElement= false;
//not same as docRootElement
package-private:
Element getRootElement() {
return (parentElement == null ? this : parent.getRootElement());
}
public:
addElement(Element b) {
if (b.parentElement == null && b != getRootElement())
...add element...
else throw
}
removeElement(Element b) {
if (b not a child of this)
throw
b.parentElement= null;
}
Element copyElement() {
b= super.clone();
...set other fields, leaving parentElement as null and
isDocRootElement as false...
}
Questions? Comments? The only real time-hit here is getRootElement(),
but that will work really fast, especially considering documents don't
get that deep. Each ancestor in-between this and getRootElement doesn't
need to be checked because they all have an parent whereas 'b' doesn't.
-- David Smiley
More information about the jdom-interest
mailing list