[jdom-commits] CVS update: jdom/src/java/org/jdom/output
cvs at jools.org
cvs at jools.org
Fri Jan 25 10:42:52 PST 2002
Date: Friday January 25, 2002 @ 13:42
Update of /home/cvspublic/jdom/src/java/org/jdom/output
In directory jools.org:/tmp/cvs-serv5717/output
Integrating two large sets of patches from Brad Huffman. Here's
the first patch set, in his words:
I finished working on a version that uses a AttributeList and ContentList
that phil suggested (and alex seemed to like).
While no blazing speed improvements, it did make the code smaller and a lot
easier to understand.
1. AttributeList is a extension of AbstractList for holding attributes.
It contains all the verifications and checks (namespace, duplicates).
2. ContentList is a extension of AbstractList for holding Element or
Document content (depending on the constructor).
It also contains all the verifications and checks (including a single
3. Both maintain the contact that a failure leaves things unchanged.
4. Both use a ArrayList as a backing list, but it is not created
until the first call to add(Object).
5. The above implies no need for attributeCount(), nodeCount(),
getAttribute(int), getContent(int), since getAttributes() and
getContent() don't create content.
6. FilterList is now also extension of AbstractList. The constructors
are FilterList(List,Filter), FilterList(List,Comparator),
7. Filter now only needs 3 methods - canAdd(Object), canRemove(Object),
8. FilterList, Filter, ElementFilter are moved to org.jdom.filter since
one doesn't need to know to use JDOM core.
Personally, I was sceptical at first, but I do like this incarnation the
best. It a lot easier to understand and just as fast as what's currently
in the repository.
Here's the follow-on patch set, again in his words:
Okay, here hopefully is the final incarnation. It should address most
of everyones concerns from last time.
Changes since last time:
1. FilterList and FilterListIterator moved inner to classes of
ContentList giving them access to it's instance variables
for future optimizations.
2. Remove unused methods from AttributeList and ContentList.
3. Made sure all Exceptions have a useful message.
4. Class protected AttributeList, ContentList, etc.
Here's my high-level summary of the public API change. This'll be handy
for the CHANGES file:
* Added ability for a Document to have a detached root, with an ISE
thrown in case of read from such a Document.
* Added a public method Document.detachRootElement()
* Limited the public Filter-related classes to just Filter.
* XMLOutputter now has a Format inner class
* XMLOutputter has changed the escape*() methods to be public
* XMLOutputter has added the following public methods:
output(List list, OutputStream out)
output(List list, Writer out)
* No getContent(Filter) method is yet exposed.
* The org.jdom.filter package will not need to be used afterall.
* I fixed a few little issues (mostly Javadoc) I found in the code
and did some whitespace reformatting.
A few of the jdom-test cases now fail, but most appear to have a good
explanation. Specifically, handling null parameters is a little
different now. Hopefully the author (Phil?) can verify my reading.
The code seems to work on a few tiny little real-life tests, but it's 2:37am
and I'm not doing any more tonight. There's a lot of changes in this check-in
so keep your eyes open and please report anything unusual you notice!
And thanks, Brad!
File: no file XMLOutputter.java Status: Needs Checkout
Working revision: 1.69 Fri Jan 25 18:42:52 2002
Repository revision: 1.69 /home/cvspublic/jdom/src/java/org/jdom/output/XMLOutputter.java,v
jdom_prefilter (revision: 1.66)
jdom_1_0_b7 (revision: 1.62)
jdom_1_0_b6 (revision: 1.35)
start (revision: 18.104.22.168)
jdom (branch: 1.1.1)
More information about the jdom-commits