org.apache.commons.jxpath.ri
Class JXPathContextReferenceImpl

java.lang.Object
  extended by org.apache.commons.jxpath.JXPathContext
      extended by org.apache.commons.jxpath.ri.JXPathContextReferenceImpl

public class JXPathContextReferenceImpl
extends JXPathContext

The reference implementation of JXPathContext.

Version:
$Revision: 670727 $ $Date: 2008-06-23 15:10:38 -0500 (Mon, 23 Jun 2008) $
Author:
Dmitri Plotnikov

Field Summary
protected  NamespaceResolver namespaceResolver
          Namespace resolver
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)
          Create a new JXPathContextReferenceImpl.
  JXPathContextReferenceImpl(JXPathContext parentContext, java.lang.Object contextBean, Pointer contextPointer)
          Create a new JXPathContextReferenceImpl.
 
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.
protected  CompiledExpression compilePath(java.lang.String xpath)
          Overridden by each concrete implementation of JXPathContext to perform compilation.
 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 JXPathContext.setFactory(org.apache.commons.jxpath.AbstractFactory).
 Pointer createPath(java.lang.String xpath, Expression expr)
          Create the given path.
 Pointer createPathAndSetValue(java.lang.String xpath, Expression expr, java.lang.Object value)
          Create the given path setting its value to 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 JXPathContext.setFactory(org.apache.commons.jxpath.AbstractFactory).
 EvalContext getAbsoluteRootContext()
          Get the absolute root context.
protected  Compiler getCompiler()
          Returns a static instance of TreeCompiler.
 Pointer getContextPointer()
          Returns a Pointer for the context bean.
 Function getFunction(QName functionName, java.lang.Object[] parameters)
          Get the named Function.
 Pointer getNamespaceContextPointer()
          Returns the namespace context pointer set with setNamespaceContextPointer() or, if none has been specified, the context pointer otherwise.
 NamespaceResolver getNamespaceResolver()
          Get the namespace resolver.
 java.lang.String getNamespaceURI(java.lang.String prefix)
          Given a prefix, returns a registered namespace URI.
static NodePointerFactory[] getNodePointerFactories()
          Get the registered NodePointerFactories.
 Pointer getPointer(java.lang.String xpath)
          Traverses the xpath and returns a Pointer.
 Pointer getPointer(java.lang.String xpath, Expression expr)
          Get a pointer to the specified path/expression.
 java.lang.String getPrefix(java.lang.String namespaceURI)
          Get the prefix associated with the specifed namespace URI.
 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)
          Get the value indicated.
 java.lang.Object getValue(java.lang.String xpath, Expression expr, java.lang.Class requiredType)
          Get the value indicated.
 NodePointer getVariablePointer(QName name)
          Get a VariablePointer for the given variable 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)
          Traverses the xpath and returns a Iterator of all results found for the path.
 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)
          Traverses the xpath and returns an Iterator of Pointers.
 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)
          Remove all matching nodes.
 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)
          Remove the specified path.
 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)
          Set the value of xpath to value.
 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, getNodeSetByKey, 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

namespaceResolver

protected NamespaceResolver namespaceResolver
Namespace resolver

Constructor Detail

JXPathContextReferenceImpl

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

Parameters:
parentContext - parent context
contextBean - Object

JXPathContextReferenceImpl

public JXPathContextReferenceImpl(JXPathContext parentContext,
                                  java.lang.Object contextBean,
                                  Pointer contextPointer)
Create a new JXPathContextReferenceImpl.

Parameters:
parentContext - parent context
contextBean - Object
contextPointer - context pointer
Method Detail

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.

Parameters:
factory - NodePointerFactory to add

getNodePointerFactories

public static NodePointerFactory[] getNodePointerFactories()
Get the registered NodePointerFactories.

Returns:
NodePointerFactory[]

getCompiler

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

Returns:
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
Parameters:
xpath - to compile
Returns:
CompiledExpression

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
Parameters:
xpath - expression
Returns:
Object found

getValue

public java.lang.Object getValue(java.lang.String xpath,
                                 Expression expr)
Get the value indicated.

Parameters:
xpath - String
expr - Expression
Returns:
Object

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
Parameters:
xpath - expression
requiredType - Class
Returns:
Object

getValue

public java.lang.Object getValue(java.lang.String xpath,
                                 Expression expr,
                                 java.lang.Class requiredType)
Get the value indicated.

Parameters:
xpath - expression
expr - compiled Expression
requiredType - Class
Returns:
Object

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
Parameters:
xpath - expression
Returns:
Iterator

iterate

public java.util.Iterator iterate(java.lang.String xpath,
                                  Expression expr)
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.

Parameters:
xpath - expression
expr - compiled Expression
Returns:
Iterator

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
Parameters:
xpath - desired
Returns:
Pointer

getPointer

public Pointer getPointer(java.lang.String xpath,
                          Expression expr)
Get a pointer to the specified path/expression.

Parameters:
xpath - String
expr - compiled Expression
Returns:
Pointer

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
Parameters:
xpath - indicating position
value - to set

setValue

public void setValue(java.lang.String xpath,
                     Expression expr,
                     java.lang.Object value)
Set the value of xpath to value.

Parameters:
xpath - path
expr - compiled Expression
value - Object

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 JXPathContext.setFactory(org.apache.commons.jxpath.AbstractFactory).

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

Specified by:
createPath in class JXPathContext
Parameters:
xpath - indicating destination to create
Returns:
pointer to new location

createPath

public Pointer createPath(java.lang.String xpath,
                          Expression expr)
Create the given path.

Parameters:
xpath - String
expr - compiled Expression
Returns:
resulting Pointer

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 JXPathContext.setFactory(org.apache.commons.jxpath.AbstractFactory).

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

Specified by:
createPathAndSetValue in class JXPathContext
Parameters:
xpath - indicating position to create
value - to set
Returns:
pointer to new location

createPathAndSetValue

public Pointer createPathAndSetValue(java.lang.String xpath,
                                     Expression expr,
                                     java.lang.Object value)
Create the given path setting its value to value.

Parameters:
xpath - String
expr - compiled Expression
value - Object
Returns:
resulting Pointer

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
Parameters:
xpath - expression
Returns:
Iterator

iteratePointers

public java.util.Iterator iteratePointers(java.lang.String xpath,
                                          Expression expr)
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.

Parameters:
xpath - expression
expr - compiled Expression
Returns:
Iterator

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
Parameters:
xpath - indicating position to remove

removePath

public void removePath(java.lang.String xpath,
                       Expression expr)
Remove the specified path.

Parameters:
xpath - expression
expr - compiled Expression

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
Parameters:
xpath - indicating positions to remove

removeAll

public void removeAll(java.lang.String xpath,
                      Expression expr)
Remove all matching nodes.

Parameters:
xpath - expression
expr - compiled Expression

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
Parameters:
pointer - Pointer
Returns:
JXPathContext

getContextPointer

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

Specified by:
getContextPointer in class JXPathContext
Returns:
Pointer

getAbsoluteRootContext

public EvalContext getAbsoluteRootContext()
Get the absolute root context.

Returns:
EvalContext

getVariablePointer

public NodePointer getVariablePointer(QName name)
Get a VariablePointer for the given variable name.

Parameters:
name - variable name
Returns:
NodePointer

getFunction

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

Parameters:
functionName - name
parameters - function args
Returns:
Function

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.

getPrefix

public java.lang.String getPrefix(java.lang.String namespaceURI)
Get the prefix associated with the specifed namespace URI.

Overrides:
getPrefix in class JXPathContext
Parameters:
namespaceURI - the ns URI to check.
Returns:
String prefix
See Also:
JXPathContext.getPrefix(java.lang.String)

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
Parameters:
pointer - The pointer to the context where prefixes used in XPath expressions should be resolved.

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()
Get the namespace resolver.

Returns:
NamespaceResolver

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.

Parameters:
className - to instantiate
existenceCheckClassName - guard class
Returns:
className instance


Copyright © 2001-2011 Apache Software Foundation. All Rights Reserved.