org.apache.commons.jxpath.ri
Class EvalContext

java.lang.Object
  extended byorg.apache.commons.jxpath.ri.EvalContext
All Implemented Interfaces:
ExpressionContext, java.util.Iterator
Direct Known Subclasses:
AncestorContext, AttributeContext, ChildContext, DescendantContext, InitialContext, NamespaceContext, NodeSetContext, ParentContext, PrecedingOrFollowingContext, PredicateContext, RootContext, SelfContext

public abstract class EvalContext
extends java.lang.Object
implements ExpressionContext, java.util.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: 1.30 $ $Date: 2004/03/25 05:42:01 $
Author:
Dmitri Plotnikov

Field Summary
private  boolean done
           
private  boolean hasPerformedIteratorStep
           
protected  EvalContext parentContext
           
private  java.util.Iterator pointerIterator
           
protected  int position
           
private static java.util.Comparator REVERSE_COMPARATOR
           
protected  RootContext rootContext
           
private  boolean startedSetIteration
           
 
Constructor Summary
EvalContext(EvalContext parentContext)
           
 
Method Summary
private  boolean constructIterator()
           
 java.util.List getContextNodeList()
          Returns the list of all Pointers in this context for the current position of the parent context.
 Pointer getContextNodePointer()
          Get the current context node.
abstract  NodePointer getCurrentNodePointer()
          Returns the current context node.
 int getCurrentPosition()
           
 int getDocumentOrder()
          Determines the document order for this context.
 JXPathContext getJXPathContext()
          Get 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.
 java.lang.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.
 java.lang.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.
private  void performIteratorStep()
          Moves the iterator forward by one position
 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.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

parentContext

protected EvalContext parentContext

rootContext

protected RootContext rootContext

position

protected int position

startedSetIteration

private boolean startedSetIteration

done

private boolean done

hasPerformedIteratorStep

private boolean hasPerformedIteratorStep

pointerIterator

private java.util.Iterator pointerIterator

REVERSE_COMPARATOR

private static final java.util.Comparator REVERSE_COMPARATOR
Constructor Detail

EvalContext

public EvalContext(EvalContext parentContext)
Method Detail

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

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.


hasNext

public boolean hasNext()
Returns true if there are mode nodes matching the context's constraints.

Specified by:
hasNext in interface java.util.Iterator

next

public java.lang.Object next()
Returns the next node pointer in the context

Specified by:
next in interface java.util.Iterator

performIteratorStep

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


remove

public void remove()
Operation is not supported

Specified by:
remove in interface java.util.Iterator

constructIterator

private boolean constructIterator()

getContextNodeList

public java.util.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:
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.


getValue

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


toString

public java.lang.String toString()

getRootContext

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


reset

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


getCurrentPosition

public int getCurrentPosition()

getSingleNodePointer

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


getCurrentNodePointer

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


nextSet

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


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.


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.