[jdom-interest] Ideas for API changes

Elliotte Rusty Harold elharo at metalab.unc.edu
Sat Apr 28 17:33:54 PDT 2001

At 3:43 PM -0700 4/28/01, Jason Hunter wrote:

>Here's my challenge to you:  Figure out the interface of Item.  Keep in
>mind that any method declared should be useful across all classes
>implementing the interface.  And keep in mind the interface should be
>useful for more than just being a common base interface.  Object is good
>enough at being a common base; there would need to be extra value.

I'm not sure there needs to be more than that. I think having the 
common type alone because it really strengthens type checking 
throughout the API and makes a lot of code simpler. For instance, in 
addContent() we no longer need to check for seven different types at 
runtime before adding the object. All the checks can be performed at 
compile time. I don't know that this would be significantly faster, 
but it would be conceptually much simpler.

On a similar line, I don't feel Object is good enough as a common 
base class because a method that takes an Object as an argument 
implies to me that it can indeed take any object but our methods 
can't. This seems to cry out for a Node interface. The case where 
methods do take any objects as arguments, and to which me are most 
similar, the Java Collections API, indeed does allow any object types 
as arguments.

However, I do think they're a couple of methods that would be useful 
in the Node interface. At a minimum I'd say getParent() and 
getDocument(). I think we might also want to look at (though perhaps 
in 1.1) a getValue() method which returns the XPath value of a Node. 
This is a very useful thing to have even if you're not using XPath, 
and it is genuinely applicable to all node types, (as opposed to DOM 
nodes, some of which have null values.) I also think we could 
plausibly put hasChildren() and getChildren() in the Node interface.


| 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/     |

More information about the jdom-interest mailing list