## org.apache.taglibs.standard.tag.common.xml
Class JSTLXPathImpl

    java.lang.Object
      org.apache.taglibs.standard.tag.common.xml.JSTLXPathImpl

All Implemented Interfaces:
  XPath

    public class JSTLXPathImpl

extends Object
implements XPath

The JSTLXPathImpl class provides implementation for the methods defined in javax.xml.xpath.XPath interface. This provide simple access to the results of an XPath expression. This class provides our own implementation of XPath, so that we can support a generic Object type in returnType arguement for XPath's evaluate instance method. Most of the implementation is exactly similar to what is already provided in com.sun.org.apache.xpath.internal.jaxp.XPathImpl.java

Method Summary
`XPathExpression` `compile(String expression)` Compile an XPath expression for later evaluation.
`String` `evaluate(String expression, InputSource source)` Evaluate an XPath expression in the context of the specified `InputSource` and return the result as a `String`.
`Object` `evaluate(String expression, InputSource source, QName returnType)` Evaluate an XPath expression in the context of the specified `InputSource` and return the result as the specified type.
`String` `evaluate(String expression, Object item)` Evaluate an XPath expression in the specified context and return the result as a `String`.
`Object` `evaluate(String expression, Object item, QName returnType)` Evaluate an `XPath` expression in the specified context and return the result as the specified type.
`NamespaceContext` `getNamespaceContext()` Returns the current namespace context.
`XPathFunctionResolver` `getXPathFunctionResolver()` Returns the current function resolver.
`XPathVariableResolver` `getXPathVariableResolver()` Returns the current variable resolver.
`void` `reset()` Reset this `XPath` to its original configuration.
`void` `setNamespaceContext(NamespaceContext nsContext)` Establishes a namespace context.
`void` `setXPathFunctionResolver(XPathFunctionResolver resolver)` Establishes a function resolver.
`void` `setXPathVariableResolver(XPathVariableResolver resolver)` Establishes a variable resolver.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### setXPathVariableResolver

    public void setXPathVariableResolver(XPathVariableResolver resolver)

  Establishes a variable resolver.

  Specified by:
    `setXPathVariableResolver` in interface `XPath`
  Parameters:
    `resolver` - Variable Resolver

### getXPathVariableResolver

    public XPathVariableResolver getXPathVariableResolver()

  Returns the current variable resolver.

  Specified by:
    `getXPathVariableResolver` in interface `XPath`
  Returns:
    Current variable resolver

### setXPathFunctionResolver

    public void setXPathFunctionResolver(XPathFunctionResolver resolver)

  Establishes a function resolver.

  Specified by:
    `setXPathFunctionResolver` in interface `XPath`
  Parameters:
    `resolver` - XPath function resolver

### getXPathFunctionResolver

    public XPathFunctionResolver getXPathFunctionResolver()

  Returns the current function resolver.

  Specified by:
    `getXPathFunctionResolver` in interface `XPath`
  Returns:
    Current function resolver

### setNamespaceContext

    public void setNamespaceContext(NamespaceContext nsContext)

  Establishes a namespace context.

  Specified by:
    `setNamespaceContext` in interface `XPath`
  Parameters:
    `nsContext` - Namespace context to use

### getNamespaceContext

    public NamespaceContext getNamespaceContext()

  Returns the current namespace context.

  Specified by:
    `getNamespaceContext` in interface `XPath`
  Returns:
    Current Namespace context

### evaluate

    public Object evaluate(String expression,
                           Object item,
                           QName returnType)
                    throws XPathExpressionException

  Evaluate an `XPath` expression in the specified context and return the result as the specified type.

  See "Evaluation of XPath Expressions" section of JAXP 1.3 spec for context item evaluation, variable, function and `QName` resolution and return type conversion.

  If `returnType` is not one of the types defined in `XPathConstants` ( `NUMBER`, `STRING`, `BOOLEAN`, `NODE` or `NODESET`) then an `IllegalArgumentException` is thrown.

  If a `null` value is provided for `item`, an empty document will be used for the context. If `expression` or `returnType` is `null`, then a `NullPointerException` is thrown.

  Specified by:
    `evaluate` in interface `XPath`
  Parameters:
    `expression` - The XPath expression.
    `item` - The starting context (node or node list, for example).
    `returnType` - The desired return type.
  Returns:
    Result of evaluating an XPath expression as an `Object` of `returnType`.
  Throws:
    `XPathExpressionException` - If `expression` cannot be evaluated.
    `IllegalArgumentException` - If `returnType` is not one of the types defined in `XPathConstants`.
    `NullPointerException` - If `expression` or `returnType` is `null`.

### evaluate

    public String evaluate(String expression,
                           Object item)
                    throws XPathExpressionException

  Evaluate an XPath expression in the specified context and return the result as a `String`.

  This method calls `evaluate(String expression, Object item, QName returnType)` with a `returnType` of `XPathConstants.STRING`.

  See "Evaluation of XPath Expressions" of JAXP 1.3 spec for context item evaluation, variable, function and QName resolution and return type conversion.

  If a `null` value is provided for `item`, an empty document will be used for the context. If `expression` is `null`, then a `NullPointerException` is thrown.

  Specified by:
    `evaluate` in interface `XPath`
  Parameters:
    `expression` - The XPath expression.
    `item` - The starting context (node or node list, for example).
  Returns:
    The `String` that is the result of evaluating the expression and converting the result to a `String`.
  Throws:
    `XPathExpressionException` - If `expression` cannot be evaluated.
    `NullPointerException` - If `expression` is `null`.

### compile

    public XPathExpression compile(String expression)
                            throws XPathExpressionException

  Compile an XPath expression for later evaluation.

  If `expression` contains any `XPathFunction`s, they must be available via the `XPathFunctionResolver`. An `XPathExpressionException` will be thrown if the `XPathFunction` cannot be resovled with the `XPathFunctionResolver`.

  If `expression` is `null`, a `NullPointerException` is thrown.

  Specified by:
    `compile` in interface `XPath`
  Parameters:
    `expression` - The XPath expression.
  Returns:
    Compiled XPath expression.
  Throws:
    `XPathExpressionException` - If `expression` cannot be compiled.
    `NullPointerException` - If `expression` is `null`.

### evaluate

    public Object evaluate(String expression,
                           InputSource source,
                           QName returnType)
                    throws XPathExpressionException

  Evaluate an XPath expression in the context of the specified `InputSource` and return the result as the specified type.

  This method builds a data model for the `InputSource` and calls `evaluate(String expression, Object item, QName returnType)` on the resulting document object.

  See "Evaluation of XPath Expressions" section of JAXP 1.3 spec for context item evaluation, variable, function and QName resolution and return type conversion.

  If `returnType` is not one of the types defined in `XPathConstants`, then an `IllegalArgumentException` is thrown.

  If `expression`, `source` or `returnType` is `null`, then a `NullPointerException` is thrown.

  Specified by:
    `evaluate` in interface `XPath`
  Parameters:
    `expression` - The XPath expression.
    `source` - The input source of the document to evaluate over.
    `returnType` - The desired return type.
  Returns:
    The `Object` that encapsulates the result of evaluating the expression.
  Throws:
    `XPathExpressionException` - If expression cannot be evaluated.
    `IllegalArgumentException` - If `returnType` is not one of the types defined in `XPathConstants`.
    `NullPointerException` - If `expression`, `source` or `returnType` is `null`.

### evaluate

    public String evaluate(String expression,
                           InputSource source)
                    throws XPathExpressionException

  Evaluate an XPath expression in the context of the specified `InputSource` and return the result as a `String`.

  This method calls `evaluate(String expression, InputSource source, QName returnType)` with a `returnType` of `XPathConstants.STRING`.

  See "Evaluation of XPath Expressions" section of JAXP 1.3 spec for context item evaluation, variable, function and QName resolution and return type conversion.

  If `expression` or `source` is `null`, then a `NullPointerException` is thrown.

  Specified by:
    `evaluate` in interface `XPath`
  Parameters:
    `expression` - The XPath expression.
    `source` - The `InputSource` of the document to evaluate over.
  Returns:
    The `String` that is the result of evaluating the expression and converting the result to a `String`.
  Throws:
    `XPathExpressionException` - If expression cannot be evaluated.
    `NullPointerException` - If `expression` or `source` is `null`.

### reset

    public void reset()

  Reset this `XPath` to its original configuration.

  `XPath` is reset to the same state as when it was created with `XPathFactory#newXPath()`. `reset()` is designed to allow the reuse of existing `XPath`s thus saving resources associated with the creation of new `XPath`s.

  The reset `XPath` is not guaranteed to have the same `XPathFunctionResolver`, `XPathVariableResolver` or `NamespaceContext` `Object`s, e.g. `Object.equals(Object obj)`. It is guaranteed to have a functionally equal `XPathFunctionResolver`, `XPathVariableResolver` and `NamespaceContext`.

  Specified by:
    `reset` in interface `XPath`

Copyright © 2008 Mort Bay Consulting. All Rights Reserved.