[jdom-interest] newbie question

Laurent Bihanic laurent.bihanic at atosorigin.com
Wed Dec 4 07:45:03 PST 2002


bob mcwhirter wrote:
> Also, fwiw, I've got changes in the pipe-line, so that when evaluating
> the XPath, you can pass a VariableContext into the method, allowing for
> multi-threadsafe evaluation of an XPath with simultaneous different
> variable bindings.  Not in jaxen yet, but soon.  Was just an oversight.

This is a general problem: To reuse compiled XPaths in a multi-threaded 
application you need to pass per-thread context information to XxxContext 
implementations (VariableContext, NamespaceContext...).
But this context information is very often application-specific and thus out 
of Jaxen scope. So, passing a VariableContext to the methods may only apply to 
few specific cases.

A more general solution would be to provide overloaded mehods allowing the 
application to pass a "call context" object (java.lang.Object) and to enhance 
the XxxContext interfaces to add 2 arguments: the context object the XPath 
expression is being evaluated on and the application "call context".

You may have a look at the latest implementation of JDOM Jaxen-wrapper 
(org.jdom.xpath.JaxenXPath.java) to see the trick required to pass context 
information to a NamespaceContext. And it does not even support 
multi-threading! In a multi-threaded environment, one would have to replace 
the currentContext object by a Hashtable, using Thread.currentThread() as key.

Laurent




More information about the jdom-interest mailing list