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.
Version:
$Revision: 652845 $ $Date: 2008-05-02 12:46:46 -0500 (Fri, 02 May 2008) $
  • Field Details

    • parentContext

      protected EvalContext parentContext
      parent context
    • rootContext

      protected RootContext rootContext
      root context
    • position

      protected int position
      position
    • startedSetIteration

      private boolean startedSetIteration
    • done

      private boolean done
    • hasPerformedIteratorStep

      private boolean hasPerformedIteratorStep
    • pointerIterator

      private Iterator pointerIterator
  • Constructor Details

    • EvalContext

      public EvalContext(EvalContext parentContext)
      Create a new EvalContext.
      Parameters:
      parentContext - parent context
  • Method Details

    • getContextNodePointer

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

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

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

      public int getDocumentOrder()
      Determines the document order for this context.
      Returns:
      1 ascending order, -1 descending order, 0 - does not require ordering
    • 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
    • hasNext

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

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

      private void performIteratorStep()
      Moves the iterator forward by one position
    • remove

      public void remove()
      Operation is not supported
      Specified by:
      remove in interface Iterator
      Throws:
      UnsupportedOperationException
    • constructIterator

      private boolean constructIterator()
      Construct an iterator.
      Returns:
      whether the Iterator was constructed
    • sortPointers

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

      public List 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
    • 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
    • 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
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getRootContext

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

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

      public int getCurrentPosition()
      Get the current position.
      Returns:
      int position.
    • getSingleNodePointer

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

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

      public boolean nextSet()
      Returns true if there is another sets of objects to interate over. Resets the current position and node.
      Returns:
      boolean
    • 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
    • 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