[jdom-interest] JDOM and XPath API

Rolf jdom at tuis.net
Sun Sep 18 21:23:02 PDT 2011


Hi All.

The XPath code needs some work on the API side of things.

The current stat is that there is the class org.jdom2.xpath.XPath. This 
class performs two basic roles, it is the abstract base for any 
implemenations that provide XPath processing, and it is also a factory 
(of sorts) for setting the engine that will service XPaths.

The problem is that the Factory-type method is not very useful, for the 
following reasons:
1. The 'default' factory is not accessible by name (because JaxenXPath 
is not public).
2. Changing the 'factory' class is system-wide (a static), and means 
that your entire Java JVM needs to have the same active factory,

The bigger problem is that there is no good way to fix this problem 
without a significant change to the API.

What should that change be?

I envisage a fix that introduces a classic Factory pattern. This will 
require removing the factory type methods from the XPath class, to the 
XPathFactory class.

Further, with that change, the XPath class can easily become an 
interface... which may improve the flexibility of some things.

The XPathFactory class can have the same newInstance(), selectNodes() 
And selectSingleNode() methods which will in turn use a shortcut to the 
defaultFactory(). But, it can also be used to allow for different 
implementations of the factory.

For reference (perhaps even performance), we should maybe put together 
an implementation that uses javax.xml.xpath to get the details out of a 
DOM implementation....

Any comments, concerns?

Similarly, the Jaxen engine for XPath has code for 'navigatin' a JDOM 
document. THis code references org.jdom classes, and we need it to 
access org.jdom2.

This navigation functionality should be re-implemented on the JDOM2 side 
instead.

Rolf


More information about the jdom-interest mailing list