org.apache.synapse.util.xpath
Class SynapseXPath

java.lang.Object
  extended by org.jaxen.BaseXPath
      extended by org.apache.axiom.om.xpath.AXIOMXPath
          extended by org.apache.synapse.util.xpath.SynapseXPath
All Implemented Interfaces:
Serializable, XPath

public class SynapseXPath
extends AXIOMXPath

XPath that has been used inside Synapse xpath processing. This has a extension function named get-property which is use to retrieve message context properties with the given name from the function

For example the following function get-property('prop') can be evaluatedd using an XPath to retrieve the message context property value with the name prop.

Apart from that this XPath has a certain set of XPath variables associated with it. They are as follows;

body
The SOAP 1.1 or 1.2 body element.
header
The SOAP 1.1 or 1.2 header element.

Also there are some XPath prefixes defined in SynapseXPath to access various properties using XPath variables, where the variable name represents the particular prefix and the property name as the local part of the variable. Those variables are;

ctx
Prefix for Synapse MessageContext properties
axis2
Prefix for Axis2 MessageContext properties
trp
Prefix for the transport headers

This XPath is Thread Safe, and provides a special set of evaluate functions for the MessageContext and SOAPEnvelope as well as a method to retrieve string values of the evaluated XPaths

See Also:
AXIOMXPath, getContext(Object), SynapseXPathFunctionContext, SynapseXPathVariableContext, Serialized Form

Constructor Summary
SynapseXPath(OMAttribute attribute)
          Construct an XPath expression from a given attribute.
SynapseXPath(OMElement element, String xpathExpr)
          Construct an XPath expression from a given string and initialize its namespace context based on a given element.
SynapseXPath(String xpathString)
          Initializes the SynapseXPath with the given xpathString as the XPath
 
Method Summary
 void addNamespace(OMNamespace ns)
           
 Object evaluate(Object primaryContext, MessageContext secondaryContext)
          Specialized form of xpath evaluation function.An xpath evaluate() will be performed using two contexts (ie:-soap-envelope and on Synapse Message Context).
protected  Context getContext(Object obj)
          Create a Context wrapper for the provided object.
static SynapseXPath parseXPathString(String xPathStr)
           
 String stringValueOf(MessageContext synCtx)
          Evaluates the XPath expression against the MessageContext of the current message and returns a String representation of the result
 
Methods inherited from class org.apache.axiom.om.xpath.AXIOMXPath
addNamespace, addNamespaces, getNamespaces
 
Methods inherited from class org.jaxen.BaseXPath
booleanValueOf, createFunctionContext, createNamespaceContext, createVariableContext, debug, evaluate, getContextSupport, getFunctionContext, getNamespaceContext, getNavigator, getRootExpr, getVariableContext, numberValueOf, selectNodes, selectNodesForContext, selectSingleNode, selectSingleNodeForContext, setFunctionContext, setNamespaceContext, setVariableContext, stringValueOf, toString, valueOf
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SynapseXPath

public SynapseXPath(String xpathString)
             throws JaxenException

Initializes the SynapseXPath with the given xpathString as the XPath

Parameters:
xpathString - xpath in its string format
Throws:
JaxenException - in case of an initialization failure

SynapseXPath

public SynapseXPath(OMElement element,
                    String xpathExpr)
             throws JaxenException
Construct an XPath expression from a given string and initialize its namespace context based on a given element.

Parameters:
element - The element that determines the namespace context of the XPath expression. See AXIOMXPath.addNamespaces(OMElement) for more details.
xpathExpr - the string representation of the XPath expression.
Throws:
JaxenException - if there is a syntax error while parsing the expression or if the namespace context could not be set up

SynapseXPath

public SynapseXPath(OMAttribute attribute)
             throws JaxenException
Construct an XPath expression from a given attribute. The string representation of the expression is taken from the attribute value, while the attribute's owner element is used to determine the namespace context of the expression.

Parameters:
attribute - the attribute to construct the expression from
Throws:
JaxenException - if there is a syntax error while parsing the expression or if the namespace context could not be set up
Method Detail

parseXPathString

public static SynapseXPath parseXPathString(String xPathStr)
                                     throws JaxenException
Throws:
JaxenException

stringValueOf

public String stringValueOf(MessageContext synCtx)

Evaluates the XPath expression against the MessageContext of the current message and returns a String representation of the result

Parameters:
synCtx - the source message which holds the MessageContext against full context
Returns:
a String representation of the result of evaluation

evaluate

public Object evaluate(Object primaryContext,
                       MessageContext secondaryContext)
Specialized form of xpath evaluation function.An xpath evaluate() will be performed using two contexts (ie:-soap-envelope and on Synapse Message Context). This is useful for evaluating xpath on a nodeset for function contexts (we need both nodeset and synapse ctxts for evaluating function scope expressions)

Parameters:
primaryContext - a context object ie:- a soap envelope
secondaryContext - a context object ie:-synapse message ctxt
Returns:
result

addNamespace

public void addNamespace(OMNamespace ns)
                  throws JaxenException
Throws:
JaxenException

getContext

protected Context getContext(Object obj)
Create a Context wrapper for the provided object. This methods implements the following class specific behavior:
MessageContext
The XPath expression is evaluated against the SOAP envelope and the functions and variables defined by SynapseXPathFunctionContext and SynapseXPathVariableContext are available.
SOAPEnvelope
The variables defined by SynapseXPathVariableContext are available.
For all other object types, the behavior is identical to BaseXPath.getContext(Object).

Note that the behavior described here also applies to all evaluation methods such as BaseXPath.evaluate(Object) or BaseXPath.selectSingleNode(Object), given that these methods all use getContext(Object).

Overrides:
getContext in class BaseXPath
See Also:
SynapseXPathFunctionContext.getFunction(String, String, String), SynapseXPathVariableContext.getVariableValue(String, String, String)


Copyright © 2005-2012 Apache Software Foundation. All Rights Reserved.