org.apache.commons.jxpath.ri
Class JXPathContextReferenceImpl

java.lang.Object
  extended byorg.apache.commons.jxpath.JXPathContext
      extended byorg.apache.commons.jxpath.ri.JXPathContextReferenceImpl

public class JXPathContextReferenceImpl
extends JXPathContext

The reference implementation of JXPathContext.

Version:
$Revision: 1.43 $ $Date: 2004/04/04 23:16:23 $
Author:
Dmitri Plotnikov

Field Summary
private static int CLEANUP_THRESHOLD
           
private static int cleanupCount
           
private static java.util.Map compiled
           
private static Compiler COMPILER
           
private  Pointer contextPointer
           
protected  NamespaceResolver namespaceResolver
           
private static java.util.Vector nodeFactories
           
private static NodePointerFactory[] nodeFactoryArray
           
private  Pointer rootPointer
           
static boolean USE_SOFT_CACHE
          Change this to false to disable soft caching of CompiledExpressions.
 
Fields inherited from class org.apache.commons.jxpath.JXPathContext
contextBean, decimalFormats, factory, functions, idManager, keyManager, parentContext, vars
 
Constructor Summary
protected JXPathContextReferenceImpl(JXPathContext parentContext, java.lang.Object contextBean)
           
  JXPathContextReferenceImpl(JXPathContext parentContext, java.lang.Object contextBean, Pointer contextPointer)
           
 
Method Summary
static void addNodePointerFactory(NodePointerFactory factory)
          Call this with a custom NodePointerFactory to add support for additional types of objects.
static java.lang.Object allocateConditionally(java.lang.String className, java.lang.String existenceCheckClassName)
          Checks if existenceCheckClass exists on the class path.
private  void checkSimplePath(Expression expr)
          Checks if the path follows the JXPath restrictions on the type of path that can be passed to create...
private  Expression compileExpression(java.lang.String xpath)
           
protected  CompiledExpression compilePath(java.lang.String xpath)
          Overridden by each concrete implementation of JXPathContext to perform compilation.
private static void createNodeFactoryArray()
           
 Pointer createPath(java.lang.String xpath)
          Creates missing elements of the path by invoking an AbstractFactory, which should first be installed on the context by calling "setFactory".
 Pointer createPath(java.lang.String xpath, Expression expr)
           
 Pointer createPathAndSetValue(java.lang.String xpath, Expression expr, java.lang.Object value)
           
 Pointer createPathAndSetValue(java.lang.String xpath, java.lang.Object value)
          The same as setValue, except it creates intermediate elements of the path by invoking an AbstractFactory, which should first be installed on the context by calling "setFactory".
 EvalContext getAbsoluteRootContext()
           
private  NodePointer getAbsoluteRootPointer()
           
protected  Compiler getCompiler()
          Returns a static instance of TreeCompiler.
 Pointer getContextPointer()
          Returns a Pointer for the context bean.
private  EvalContext getEvalContext()
           
 Function getFunction(QName functionName, java.lang.Object[] parameters)
           
 Pointer getNamespaceContextPointer()
          Returns the namespace context pointer set with setNamespaceContextPointer() or, if none has been specified, the context pointer otherwise.
 NamespaceResolver getNamespaceResolver()
           
 java.lang.String getNamespaceURI(java.lang.String prefix)
          Given a prefix, returns a registered namespace URI.
static NodePointerFactory[] getNodePointerFactories()
           
 Pointer getPointer(java.lang.String xpath)
          Traverses the xpath and returns a Pointer.
 Pointer getPointer(java.lang.String xpath, Expression expr)
           
 JXPathContext getRelativeContext(Pointer pointer)
          Returns a JXPathContext that is relative to the current JXPathContext.
 java.lang.Object getValue(java.lang.String xpath)
          Traverses the xpath and returns the resulting object.
 java.lang.Object getValue(java.lang.String xpath, java.lang.Class requiredType)
          Calls getValue(xpath), converts the result to the required type and returns the result of the conversion.
 java.lang.Object getValue(java.lang.String xpath, Expression expr)
           
 java.lang.Object getValue(java.lang.String xpath, Expression expr, java.lang.Class requiredType)
           
 NodePointer getVariablePointer(QName name)
           
 java.util.Iterator iterate(java.lang.String xpath)
          Traverses the xpath and returns a Iterator of all results found for the path.
 java.util.Iterator iterate(java.lang.String xpath, Expression expr)
           
 java.util.Iterator iteratePointers(java.lang.String xpath)
          Traverses the xpath and returns an Iterator of Pointers.
 java.util.Iterator iteratePointers(java.lang.String xpath, Expression expr)
           
 void registerNamespace(java.lang.String prefix, java.lang.String namespaceURI)
          Registers a namespace prefix.
 void removeAll(java.lang.String xpath)
          Removes all elements of the object graph described by the xpath.
 void removeAll(java.lang.String xpath, Expression expr)
           
 void removePath(java.lang.String xpath)
          Removes the element of the object graph described by the xpath.
 void removePath(java.lang.String xpath, Expression expr)
           
 void setNamespaceContextPointer(Pointer pointer)
          Namespace prefixes can be defined implicitly by specifying a pointer to a context where the namespaces are defined.
 void setValue(java.lang.String xpath, Expression expr, java.lang.Object value)
           
private  Pointer setValue(java.lang.String xpath, Expression expr, java.lang.Object value, boolean create)
           
 void setValue(java.lang.String xpath, java.lang.Object value)
          Modifies the value of the property described by the supplied xpath.
 
Methods inherited from class org.apache.commons.jxpath.JXPathContext
compile, getContextBean, getDecimalFormatSymbols, getFactory, getFunctions, getIdentityManager, getKeyManager, getLocale, getParentContext, getPointerByID, getPointerByKey, getVariables, isLenient, newContext, newContext, selectNodes, selectSingleNode, setDecimalFormatSymbols, setFactory, setFunctions, setIdentityManager, setKeyManager, setLenient, setLocale, setVariables
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

USE_SOFT_CACHE

public static final boolean USE_SOFT_CACHE
Change this to false to disable soft caching of CompiledExpressions.

See Also:
Constant Field Values

COMPILER

private static final Compiler COMPILER

compiled

private static java.util.Map compiled

cleanupCount

private static int cleanupCount

nodeFactories

private static java.util.Vector nodeFactories

nodeFactoryArray

private static NodePointerFactory[] nodeFactoryArray

rootPointer

private Pointer rootPointer

contextPointer

private Pointer contextPointer

namespaceResolver

protected NamespaceResolver namespaceResolver

CLEANUP_THRESHOLD

private static final int CLEANUP_THRESHOLD
See Also:
Constant Field Values
Constructor Detail

JXPathContextReferenceImpl

protected JXPathContextReferenceImpl(JXPathContext parentContext,
                                     java.lang.Object contextBean)

JXPathContextReferenceImpl

public JXPathContextReferenceImpl(JXPathContext parentContext,
                                  java.lang.Object contextBean,
                                  Pointer contextPointer)
Method Detail

createNodeFactoryArray

private static void createNodeFactoryArray()

addNodePointerFactory

public static void addNodePointerFactory(NodePointerFactory factory)
Call this with a custom NodePointerFactory to add support for additional types of objects. Make sure the factory returns a name that puts it in the right position on the list of factories.


getNodePointerFactories

public static NodePointerFactory[] getNodePointerFactories()

getCompiler

protected Compiler getCompiler()
Returns a static instance of TreeCompiler. Override this to return an aternate compiler.


compilePath

protected CompiledExpression compilePath(java.lang.String xpath)
Description copied from class: JXPathContext
Overridden by each concrete implementation of JXPathContext to perform compilation. Is called by compile().

Specified by:
compilePath in class JXPathContext

compileExpression

private Expression compileExpression(java.lang.String xpath)

getValue

public java.lang.Object getValue(java.lang.String xpath)
Traverses the xpath and returns the resulting object. Primitive types are wrapped into objects.

Specified by:
getValue in class JXPathContext

getValue

public java.lang.Object getValue(java.lang.String xpath,
                                 Expression expr)

getValue

public java.lang.Object getValue(java.lang.String xpath,
                                 java.lang.Class requiredType)
Calls getValue(xpath), converts the result to the required type and returns the result of the conversion.

Specified by:
getValue in class JXPathContext

getValue

public java.lang.Object getValue(java.lang.String xpath,
                                 Expression expr,
                                 java.lang.Class requiredType)

iterate

public java.util.Iterator iterate(java.lang.String xpath)
Traverses the xpath and returns a Iterator of all results found for the path. If the xpath matches no properties in the graph, the Iterator will not be null.

Specified by:
iterate in class JXPathContext

iterate

public java.util.Iterator iterate(java.lang.String xpath,
                                  Expression expr)

getPointer

public Pointer getPointer(java.lang.String xpath)
Description copied from class: JXPathContext
Traverses the xpath and returns a Pointer. A Pointer provides easy access to a property. If the xpath matches no properties in the graph, the pointer will be null.

Specified by:
getPointer in class JXPathContext

getPointer

public Pointer getPointer(java.lang.String xpath,
                          Expression expr)

setValue

public void setValue(java.lang.String xpath,
                     java.lang.Object value)
Description copied from class: JXPathContext
Modifies the value of the property described by the supplied xpath. Will throw an exception if one of the following conditions occurs:

Specified by:
setValue in class JXPathContext

setValue

public void setValue(java.lang.String xpath,
                     Expression expr,
                     java.lang.Object value)

createPath

public Pointer createPath(java.lang.String xpath)
Description copied from class: JXPathContext
Creates missing elements of the path by invoking an AbstractFactory, which should first be installed on the context by calling "setFactory".

Will throw an exception if the AbstractFactory fails to create an instance for a path element.

Specified by:
createPath in class JXPathContext

createPath

public Pointer createPath(java.lang.String xpath,
                          Expression expr)

createPathAndSetValue

public Pointer createPathAndSetValue(java.lang.String xpath,
                                     java.lang.Object value)
Description copied from class: JXPathContext
The same as setValue, except it creates intermediate elements of the path by invoking an AbstractFactory, which should first be installed on the context by calling "setFactory".

Will throw an exception if one of the following conditions occurs:

Specified by:
createPathAndSetValue in class JXPathContext

createPathAndSetValue

public Pointer createPathAndSetValue(java.lang.String xpath,
                                     Expression expr,
                                     java.lang.Object value)

setValue

private Pointer setValue(java.lang.String xpath,
                         Expression expr,
                         java.lang.Object value,
                         boolean create)

checkSimplePath

private void checkSimplePath(Expression expr)
Checks if the path follows the JXPath restrictions on the type of path that can be passed to create... methods.


iteratePointers

public java.util.Iterator iteratePointers(java.lang.String xpath)
Traverses the xpath and returns an Iterator of Pointers. A Pointer provides easy access to a property. If the xpath matches no properties in the graph, the Iterator be empty, but not null.

Specified by:
iteratePointers in class JXPathContext

iteratePointers

public java.util.Iterator iteratePointers(java.lang.String xpath,
                                          Expression expr)

removePath

public void removePath(java.lang.String xpath)
Description copied from class: JXPathContext
Removes the element of the object graph described by the xpath.

Specified by:
removePath in class JXPathContext

removePath

public void removePath(java.lang.String xpath,
                       Expression expr)

removeAll

public void removeAll(java.lang.String xpath)
Description copied from class: JXPathContext
Removes all elements of the object graph described by the xpath.

Specified by:
removeAll in class JXPathContext

removeAll

public void removeAll(java.lang.String xpath,
                      Expression expr)

getRelativeContext

public JXPathContext getRelativeContext(Pointer pointer)
Description copied from class: JXPathContext
Returns a JXPathContext that is relative to the current JXPathContext. The supplied pointer becomes the context pointer of the new context. The relative context inherits variables, extension functions, locale etc from the parent context.

Specified by:
getRelativeContext in class JXPathContext

getContextPointer

public Pointer getContextPointer()
Description copied from class: JXPathContext
Returns a Pointer for the context bean.

Specified by:
getContextPointer in class JXPathContext

getAbsoluteRootPointer

private NodePointer getAbsoluteRootPointer()

getEvalContext

private EvalContext getEvalContext()

getAbsoluteRootContext

public EvalContext getAbsoluteRootContext()

getVariablePointer

public NodePointer getVariablePointer(QName name)

getFunction

public Function getFunction(QName functionName,
                            java.lang.Object[] parameters)

registerNamespace

public void registerNamespace(java.lang.String prefix,
                              java.lang.String namespaceURI)
Description copied from class: JXPathContext
Registers a namespace prefix.

Overrides:
registerNamespace in class JXPathContext
Parameters:
prefix - A namespace prefix
namespaceURI - A URI for that prefix

getNamespaceURI

public java.lang.String getNamespaceURI(java.lang.String prefix)
Description copied from class: JXPathContext
Given a prefix, returns a registered namespace URI. If the requested prefix was not defined explicitly using the registerNamespace method, JXPathContext will then check the context node to see if the prefix is defined there. See setNamespaceContextPointer.

Overrides:
getNamespaceURI in class JXPathContext
Parameters:
prefix - The namespace prefix to look up
Returns:
namespace URI or null if the prefix is undefined.

setNamespaceContextPointer

public void setNamespaceContextPointer(Pointer pointer)
Description copied from class: JXPathContext
Namespace prefixes can be defined implicitly by specifying a pointer to a context where the namespaces are defined. By default, NamespaceContextPointer is the same as the Context Pointer, see getContextPointer()

Overrides:
setNamespaceContextPointer in class JXPathContext

getNamespaceContextPointer

public Pointer getNamespaceContextPointer()
Description copied from class: JXPathContext
Returns the namespace context pointer set with setNamespaceContextPointer() or, if none has been specified, the context pointer otherwise.

Overrides:
getNamespaceContextPointer in class JXPathContext
Returns:
The namespace context pointer.

getNamespaceResolver

public NamespaceResolver getNamespaceResolver()

allocateConditionally

public static java.lang.Object allocateConditionally(java.lang.String className,
                                                     java.lang.String existenceCheckClassName)
Checks if existenceCheckClass exists on the class path. If so, allocates an instance of the specified class, otherwise returns null.