fi.hut.tml.xsmiles.mlfc.xforms.xpath.jaxen
Class BaseXPathEx

java.lang.Object
  extended byfi.hut.tml.xsmiles.mlfc.xforms.xpath.jaxen.BaseXPathEx
All Implemented Interfaces:
java.io.Serializable, org.jaxen.XPath

public class BaseXPathEx
extends java.lang.Object
implements org.jaxen.XPath, java.io.Serializable

Base functionality for all concrete, implementation-specific XPaths.

This class provides generic functionalty for further-defined implementation-specific XPaths.

If you want to adapt the Jaxen engine so that it can traverse your own object model then this is a good base class to derive from. Typically you only really need to provide your own Navigator implementation.

Author:
bob mcwhirter, James Strachan
See Also:
XPath for dom4j, XPath for JDOM, XPath for W3C DOM, XPath for Electric XML, Serialized Form

Field Summary
protected  DefaultXPathFactoryEx fact
           
protected  LookupCallback referredNodes
           
 
Constructor Summary
BaseXPathEx(java.lang.String xpathExpr, LookupCallback c)
          Construct given an XPath expression string.
BaseXPathEx(java.lang.String xpathExpr, org.jaxen.Navigator navigator)
          Construct given an XPath expression string.
 
Method Summary
 void addNamespace(java.lang.String prefix, java.lang.String uri)
          Add a namespace prefix-to-URI mapping for this XPath expression.
 boolean booleanValueOf(java.lang.Object node)
          Retrieve a boolean-value interpretation of this XPath expression when evaluated against a given context.
protected  org.jaxen.FunctionContext createFunctionContext()
          Create a default FunctionContext.
protected  org.jaxen.NamespaceContext createNamespaceContext()
          Create a default NamespaceContext.
protected  org.jaxen.VariableContext createVariableContext()
          Create a default VariableContext.
 java.lang.String debug()
          Returns the string version of this xpath.
 java.lang.Object evaluate(java.lang.Object node)
          Evaluate this XPath against a given context.
protected  org.jaxen.Context getContext(java.lang.Object node)
          Create a Context wrapper for the provided implementation-specific object.
protected  org.jaxen.ContextSupport getContextSupport()
          Retrieve the ContextSupport aggregation of NamespaceContext, FunctionContext, VariableContext, and Navigator.
 org.jaxen.FunctionContext getFunctionContext()
          Retrieve the FunctionContext used by this XPath expression.
 org.jaxen.NamespaceContext getNamespaceContext()
          Retrieve the NamespaceContext used by this XPath expression.
 org.jaxen.Navigator getNavigator()
          Retrieve the XML object-model-specific Navigator for us in evaluating this XPath expression.
 org.jaxen.expr.Expr getRootExpr()
          Retrieve the root expression of the internal compiled form of this XPath expression.
 org.jaxen.VariableContext getVariableContext()
          Retrieve the VariableContext used by this XPath expression.
 java.lang.Number numberValueOf(java.lang.Object node)
          Retrieve a number-value interpretation of this XPath expression when evaluated against a given context.
 java.util.List selectNodes(java.lang.Object node)
          Select all nodes that are selectable by this XPath expression.
protected  java.util.List selectNodesForContext(org.jaxen.Context context)
          Select all nodes that are selectable by this XPath expression on the given Context object.
 java.lang.Object selectSingleNode(java.lang.Object node)
          Select only the first node that is selectable by this XPath expression.
protected  java.lang.Object selectSingleNodeForContext(org.jaxen.Context context)
          Select only the first node that is selectable by this XPath expression.
 void setFunctionContext(org.jaxen.FunctionContext functionContext)
          Set a FunctionContext for use with this XPath expression.
 void setNamespaceContext(org.jaxen.NamespaceContext namespaceContext)
          Set a NamespaceContext for use with this XPath expression.
 void setReferredNodes(LookupCallback v)
           
 void setVariableContext(org.jaxen.VariableContext variableContext)
          Set a VariableContext for use with this XPath expression.
 java.lang.String stringValueOf(java.lang.Object node)
           
 java.lang.String toString()
          Return the original expression text.
 java.lang.String valueOf(java.lang.Object node)
          Deprecated.  
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

referredNodes

protected LookupCallback referredNodes

fact

protected DefaultXPathFactoryEx fact
Constructor Detail

BaseXPathEx

public BaseXPathEx(java.lang.String xpathExpr,
                   LookupCallback c)
            throws org.jaxen.JaxenException
Construct given an XPath expression string.

Parameters:
xpathExpr - The XPath expression.
Throws:
org.jaxen.JaxenException - if there is a syntax error while parsing the expression.

BaseXPathEx

public BaseXPathEx(java.lang.String xpathExpr,
                   org.jaxen.Navigator navigator)
            throws org.jaxen.JaxenException
Construct given an XPath expression string.

Parameters:
xpathExpr - The XPath expression.
navigator - the XML navigator to use
Throws:
org.jaxen.JaxenException - if there is a syntax error while parsing the expression.
Method Detail

setReferredNodes

public void setReferredNodes(LookupCallback v)

evaluate

public java.lang.Object evaluate(java.lang.Object node)
                          throws org.jaxen.JaxenException
Evaluate this XPath against a given context.

The context of evaluation my be a document, an element, or a set of elements.

If the expression evaluates to a single primitive (String, Number or Boolean) type, it is returned directly. Otherwise, the returned value is a List (a node-set, in the terms of the specification) of values.

When using this method, one must be careful to test the class of the returned objects, and of each of the composite members if a List is returned. If the returned members are XML entities, they will be the actual Document, Element or Attribute objects as defined by the concrete XML object-model implementation, directly from the context document. This does not return copies of anything, but merely returns references to entities within the source document.

Specified by:
evaluate in interface org.jaxen.XPath
Parameters:
node - The node, nodeset or Context object for evaluation. This value can be null.
Returns:
The result of evaluating the XPath expression against the supplied context.
Throws:
org.jaxen.JaxenException

selectNodes

public java.util.List selectNodes(java.lang.Object node)
                           throws org.jaxen.JaxenException
Select all nodes that are selectable by this XPath expression. If multiple nodes match, multiple nodes will be returned.

NOTE: In most cases, nodes will be returned in document-order, as defined by the XML Canonicalization specification. The exception occurs when using XPath expressions involving the union operator (denoted with the pipe '|' character).

Specified by:
selectNodes in interface org.jaxen.XPath
Parameters:
node - The node, nodeset or Context object for evaluation. This value can be null.
Returns:
The node-set of all items selected by this XPath expression.
Throws:
org.jaxen.JaxenException
See Also:
selectSingleNode(java.lang.Object)

selectSingleNode

public java.lang.Object selectSingleNode(java.lang.Object node)
                                  throws org.jaxen.JaxenException
Select only the first node that is selectable by this XPath expression. If multiple nodes match, only one node will be returned. NOTE: In most cases, the selected node will be the first selectable node in document-order, as defined by the XML Canonicalization specification. The exception occurs when using XPath expressions involving the union operator (denoted with the pipe '|' character).

Specified by:
selectSingleNode in interface org.jaxen.XPath
Parameters:
node - The node, nodeset or Context object for evaluation. This value can be null.
Returns:
The node-set of all items selected by this XPath expression.
Throws:
org.jaxen.JaxenException
See Also:
selectNodes(java.lang.Object)

valueOf

public java.lang.String valueOf(java.lang.Object node)
                         throws org.jaxen.JaxenException
Deprecated.  

Specified by:
valueOf in interface org.jaxen.XPath
Throws:
org.jaxen.JaxenException

stringValueOf

public java.lang.String stringValueOf(java.lang.Object node)
                               throws org.jaxen.JaxenException
Specified by:
stringValueOf in interface org.jaxen.XPath
Throws:
org.jaxen.JaxenException

booleanValueOf

public boolean booleanValueOf(java.lang.Object node)
                       throws org.jaxen.JaxenException
Retrieve a boolean-value interpretation of this XPath expression when evaluated against a given context.

The boolean-value of the expression is determined per the boolean(..) core function as defined in the XPath specification. This means that an expression that selects zero nodes will return false, while an expression that selects one-or-more nodes will return true.

Specified by:
booleanValueOf in interface org.jaxen.XPath
Parameters:
node - The node, nodeset or Context object for evaluation. This value can be null.
Returns:
The boolean-value interpretation of this expression.
Throws:
org.jaxen.JaxenException

numberValueOf

public java.lang.Number numberValueOf(java.lang.Object node)
                               throws org.jaxen.JaxenException
Retrieve a number-value interpretation of this XPath expression when evaluated against a given context.

The number-value of the expression is determined per the number(..) core function as defined in the XPath specification. This means that if this expression selects multiple nodes, the number-value of the first node is returned.

Specified by:
numberValueOf in interface org.jaxen.XPath
Parameters:
node - The node, nodeset or Context object for evaluation. This value can be null.
Returns:
The number-value interpretation of this expression.
Throws:
org.jaxen.JaxenException

addNamespace

public void addNamespace(java.lang.String prefix,
                         java.lang.String uri)
                  throws org.jaxen.JaxenException
Add a namespace prefix-to-URI mapping for this XPath expression.

Namespace prefix-to-URI mappings in an XPath are independant of those used within any document. Only the mapping explicitly added to this XPath will be available for resolving the XPath expression.

This is a convenience method for adding mappings to the default NamespaceContext in place for this XPath. If you have installed a specific custom NamespaceContext, then this method will throw a JaxenException.

Specified by:
addNamespace in interface org.jaxen.XPath
Parameters:
prefix - The namespace prefix.
uri - The namespace URI.
Throws:
org.jaxen.JaxenException - If a NamespaceContext used by this XPath has been explicitly installed.

setNamespaceContext

public void setNamespaceContext(org.jaxen.NamespaceContext namespaceContext)
Set a NamespaceContext for use with this XPath expression.

A NamespaceContext is responsible for translating namespace prefixes within the expression into namespace URIs.

Specified by:
setNamespaceContext in interface org.jaxen.XPath
Parameters:
namespaceContext - The NamespaceContext to install for this expression.
See Also:
NamespaceContext, NamespaceContext.translateNamespacePrefixToUri(java.lang.String)

setFunctionContext

public void setFunctionContext(org.jaxen.FunctionContext functionContext)
Set a FunctionContext for use with this XPath expression.

A FunctionContext is responsible for resolving all function calls used within the expression.

Specified by:
setFunctionContext in interface org.jaxen.XPath
Parameters:
functionContext - The FunctionContext to install for this expression.
See Also:
FunctionContext, FunctionContext.getFunction(java.lang.String, java.lang.String, java.lang.String)

setVariableContext

public void setVariableContext(org.jaxen.VariableContext variableContext)
Set a VariableContext for use with this XPath expression.

A VariableContext is responsible for resolving all variables referenced within the expression.

Specified by:
setVariableContext in interface org.jaxen.XPath
Parameters:
variableContext - The VariableContext to install for this expression.
See Also:
VariableContext, VariableContext.getVariableValue(java.lang.String, java.lang.String, java.lang.String)

getNamespaceContext

public org.jaxen.NamespaceContext getNamespaceContext()
Retrieve the NamespaceContext used by this XPath expression.

A FunctionContext is responsible for resolving all function calls used within the expression.

If this XPath expression has not previously had a NamespaceContext installed, a new default NamespaceContext will be created, installed and returned.

Specified by:
getNamespaceContext in interface org.jaxen.XPath
Returns:
The NamespaceContext used by this expression.
See Also:
NamespaceContext

getFunctionContext

public org.jaxen.FunctionContext getFunctionContext()
Retrieve the FunctionContext used by this XPath expression.

A FunctionContext is responsible for resolving all function calls used within the expression.

If this XPath expression has not previously had a FunctionContext installed, a new default FunctionContext will be created, installed and returned.

Specified by:
getFunctionContext in interface org.jaxen.XPath
Returns:
The FunctionContext used by this expression.
See Also:
FunctionContext

getVariableContext

public org.jaxen.VariableContext getVariableContext()
Retrieve the VariableContext used by this XPath expression.

A VariableContext is responsible for resolving all variables referenced within the expression.

If this XPath expression has not previously had a VariableContext installed, a new default VariableContext will be created, installed and returned.

Specified by:
getVariableContext in interface org.jaxen.XPath
Returns:
The VariableContext used by this expression.
See Also:
VariableContext

getRootExpr

public org.jaxen.expr.Expr getRootExpr()
Retrieve the root expression of the internal compiled form of this XPath expression.

Internally, Jaxen maintains a form of Abstract Syntax Tree (AST) to represent the structure of the XPath expression. This is normally not required during normal consumer-grade usage of Jaxen. This method is provided for hard-core users who wish to manipulate or inspect a tree-based version of the expression.

Returns:
The root of the AST of this expression.

toString

public java.lang.String toString()
Return the original expression text.

Returns:
The normalized XPath expression string.

debug

public java.lang.String debug()
Returns the string version of this xpath.

Returns:
The normalized XPath expression string.
See Also:
toString()

getContext

protected org.jaxen.Context getContext(java.lang.Object node)
Create a Context wrapper for the provided implementation-specific object.

Parameters:
node - The implementation-specific object to be used as the context.
Returns:
A Context wrapper around the object.

getContextSupport

protected org.jaxen.ContextSupport getContextSupport()
Retrieve the ContextSupport aggregation of NamespaceContext, FunctionContext, VariableContext, and Navigator.

Returns:
Aggregate ContextSupport for this XPath expression.

getNavigator

public org.jaxen.Navigator getNavigator()
Retrieve the XML object-model-specific Navigator for us in evaluating this XPath expression.

Specified by:
getNavigator in interface org.jaxen.XPath
Returns:
The implementation-specific Navigator.

createFunctionContext

protected org.jaxen.FunctionContext createFunctionContext()
Create a default FunctionContext.

Returns:
The default FunctionContext.

createNamespaceContext

protected org.jaxen.NamespaceContext createNamespaceContext()
Create a default NamespaceContext.

Returns:
A default NamespaceContext instance.

createVariableContext

protected org.jaxen.VariableContext createVariableContext()
Create a default VariableContext.

Returns:
A default VariableContext instance.

selectNodesForContext

protected java.util.List selectNodesForContext(org.jaxen.Context context)
                                        throws org.jaxen.JaxenException
Select all nodes that are selectable by this XPath expression on the given Context object. If multiple nodes match, multiple nodes will be returned.

NOTE: In most cases, nodes will be returned in document-order, as defined by the XML Canonicalization specification. The exception occurs when using XPath expressions involving the union operator (denoted with the pipe '|' character).

Parameters:
context - is the Context which gets evaluated.
Returns:
The node-set of all items selected by this XPath expression.
Throws:
org.jaxen.JaxenException

selectSingleNodeForContext

protected java.lang.Object selectSingleNodeForContext(org.jaxen.Context context)
                                               throws org.jaxen.JaxenException
Select only the first node that is selectable by this XPath expression. If multiple nodes match, only one node will be returned. NOTE: In most cases, the selected node will be the first selectable node in document-order, as defined by the XML Canonicalization specification. The exception occurs when using XPath expressions involving the union operator (denoted with the pipe '|' character).

Parameters:
context - is the Context which gets evaluated.
Returns:
The node-set of all items selected by this XPath expression.
Throws:
org.jaxen.JaxenException
See Also:
selectNodesForContext(org.jaxen.Context)


X-Smiles 1.2