Package org.apache.commons.jxpath.ri

# Class EvalContext

java.lang.Object
org.apache.commons.jxpath.ri.EvalContext

All Implemented Interfaces:
  `Iterator`, `ExpressionContext`

Direct Known Subclasses:
  `AncestorContext`, `AttributeContext`, `ChildContext`, `DescendantContext`, `InitialContext`, `NamespaceContext`, `NodeSetContext`, `ParentContext`, `PrecedingOrFollowingContext`, `PredicateContext`, `RootContext`, `SelfContext`

public abstract class EvalContext extends Object implements ExpressionContext, Iterator
An XPath evaluation context. When evaluating a path, a chain of EvalContexts is created, each context in the chain representing a step of the path. Subclasses of EvalContext implement behavior of various XPath axes: "child::", "parent::" etc.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected EvalContext`
  `parentContext`
  Parent context
  `protected int`
  `position`
  Position
  `protected RootContext`
  `rootContext`
  Root context

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `EvalContext(EvalContext parentContext)`
  Constructs a new EvalContext.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `List<Pointer>`
  `getContextNodeList()`
  Returns the list of all Pointers in this context for the current position of the parent context.
  `Pointer`
  `getContextNodePointer()`
  Gets the current context node.
  `abstract NodePointer`
  `getCurrentNodePointer()`
  Returns the current context node.
  `int`
  `getCurrentPosition()`
  Gets the current position.
  `int`
  `getDocumentOrder()`
  Determines the document order for this context.
  `JXPathContext`
  `getJXPathContext()`
  Gets the JXPathContext in which this function is being evaluated.
  `NodeSet`
  `getNodeSet()`
  Returns the list of all Pointers in this context for all positions of the parent contexts.
  `int`
  `getPosition()`
  Returns the current context position.
  `RootContext`
  `getRootContext()`
  Returns the root context of the path, which provides easy access to variables and functions.
  `Pointer`
  `getSingleNodePointer()`
  Returns the first encountered Pointer that matches the current context's criteria.
  `Object`
  `getValue()`
  Typically returns the NodeSet by calling getNodeSet(), but will be overridden for contexts that more naturally produce individual values, e.g.
  `boolean`
  `hasNext()`
  Returns true if there are mode nodes matching the context's constraints.
  `boolean`
  `isChildOrderingRequired()`
  Even if this context has the natural ordering and therefore does not require collecting and sorting all nodes prior to returning them, such operation may be required for any child context.
  `Object`
  `next()`
  Returns the next node pointer in the context
  `abstract boolean`
  `nextNode()`
  Returns true if there is another object in the current set.
  `boolean`
  `nextSet()`
  Returns true if there is another sets of objects to interate over.
  `void`
  `remove()`
  Operation is not supported
  `void`
  `reset()`
  Sets current position = 0, which is the pre-iteration state.
  `boolean`
  `setPosition(int position)`
  Moves the current position to the specified index.
  `protected void`
  `sortPointers(List l)`
  Sort a list of pointers based on document order.
  `String`
  `toString()`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface java.util.Iterator

  `forEachRemaining`

- ## Field Details

  - ### parentContext

    protected EvalContext parentContext
    Parent context

  - ### rootContext

    protected RootContext rootContext
    Root context

  - ### position

    protected int position
    Position

- ## Constructor Details

  - ### EvalContext

    public EvalContext(EvalContext parentContext)
    Constructs a new EvalContext.
    Parameters:
      `parentContext` - parent context

- ## Method Details

  - ### getContextNodeList

    public List<Pointer> getContextNodeList()
    Returns the list of all Pointers in this context for the current position of the parent context.
    Specified by:
      `getContextNodeList` in interface `ExpressionContext`
    Returns:
      List

  - ### getContextNodePointer

    public Pointer getContextNodePointer()
    Description copied from interface: `ExpressionContext`
    Gets the current context node.
    Specified by:
      `getContextNodePointer` in interface `ExpressionContext`
    Returns:
      The current context node pointer.

  - ### getCurrentNodePointer

    public abstract NodePointer getCurrentNodePointer()
    Returns the current context node. Undefined before the beginning of the iteration.
    Returns:
      NodePoiner

  - ### getCurrentPosition

    public int getCurrentPosition()
    Gets the current position.
    Returns:
      int position.

  - ### getDocumentOrder

    public int getDocumentOrder()
    Determines the document order for this context.
    Returns:
      1 ascending order, -1 descending order, 0 - does not require ordering

  - ### getJXPathContext

    public JXPathContext getJXPathContext()
    Description copied from interface: `ExpressionContext`
    Gets the JXPathContext in which this function is being evaluated.
    Specified by:
      `getJXPathContext` in interface `ExpressionContext`
    Returns:
      A list representing the current context nodes.

  - ### getNodeSet

    public NodeSet getNodeSet()
    Returns the list of all Pointers in this context for all positions of the parent contexts. If there was an ongoing iteration over this context, the method should not be called.
    Returns:
      NodeSet

  - ### getPosition

    public int getPosition()
    Description copied from interface: `ExpressionContext`
    Returns the current context position.
    Specified by:
      `getPosition` in interface `ExpressionContext`
    Returns:
      int

  - ### getRootContext

    public RootContext getRootContext()
    Returns the root context of the path, which provides easy access to variables and functions.
    Returns:
      RootContext

  - ### getSingleNodePointer

    public Pointer getSingleNodePointer()
    Returns the first encountered Pointer that matches the current context's criteria.
    Returns:
      Pointer

  - ### getValue

    public Object getValue()
    Typically returns the NodeSet by calling getNodeSet(), but will be overridden for contexts that more naturally produce individual values, e.g. VariableContext
    Returns:
      Object

  - ### hasNext

    public boolean hasNext()
    Returns true if there are mode nodes matching the context's constraints.
    Specified by:
      `hasNext` in interface `Iterator`
    Returns:
      boolean

  - ### isChildOrderingRequired

    public boolean isChildOrderingRequired()
    Even if this context has the natural ordering and therefore does not require collecting and sorting all nodes prior to returning them, such operation may be required for any child context.
    Returns:
      boolean

  - ### next

    public Object next()
    Returns the next node pointer in the context
    Specified by:
      `next` in interface `Iterator`
    Returns:
      Object

  - ### nextNode

    public abstract boolean nextNode()
    Returns true if there is another object in the current set. Switches the current position and node to the next object.
    Returns:
      boolean

  - ### nextSet

    public boolean nextSet()
    Returns true if there is another sets of objects to interate over. Resets the current position and node.
    Returns:
      boolean

  - ### remove

    public void remove()
    Operation is not supported
    Specified by:
      `remove` in interface `Iterator`
    Throws:
      `UnsupportedOperationException` - Always thrown.

  - ### reset

    public void reset()
    Sets current position = 0, which is the pre-iteration state.

  - ### setPosition

    public boolean setPosition(int position)
    Moves the current position to the specified index. Used with integer predicates to quickly get to the n'th element of the node set. Returns false if the position is out of the node set range. You can call it with 0 as the position argument to restart the iteration.
    Parameters:
      `position` - to set
    Returns:
      boolean

  - ### sortPointers

    protected void sortPointers(List l)
    Sort a list of pointers based on document order.
    Parameters:
      `l` - the list to sort.

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`