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
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 Summary
FieldsModifier and TypeFieldDescriptionprivate booleanprivate booleanprotected EvalContextparent contextprivate Iteratorprotected intpositionprotected RootContextroot contextprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate booleanConstruct an iterator.Returns the list of all Pointers in this context for the current position of the parent context.Get the current context node.abstract NodePointerReturns the current context node.intGet the current position.intDetermines the document order for this context.Get the JXPathContext in which this function is being evaluated.Returns the list of all Pointers in this context for all positions of the parent contexts.intReturns the current context position.Returns the root context of the path, which provides easy access to variables and functions.Returns the first encountered Pointer that matches the current context's criteria.getValue()Typically returns the NodeSet by calling getNodeSet(), but will be overridden for contexts that more naturally produce individual values, e.g.booleanhasNext()Returns true if there are mode nodes matching the context's constraints.booleanEven 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.next()Returns the next node pointer in the contextabstract booleannextNode()Returns true if there is another object in the current set.booleannextSet()Returns true if there is another sets of objects to interate over.private voidMoves the iterator forward by one positionvoidremove()Operation is not supportedvoidreset()Sets current position = 0, which is the pre-iteration state.booleansetPosition(int position) Moves the current position to the specified index.protected voidsortPointers(List l) Sort a list of pointers based on document order.toString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Iterator
forEachRemaining
-
Field Details
-
parentContext
parent context -
rootContext
root context -
position
protected int positionposition -
startedSetIteration
private boolean startedSetIteration -
done
private boolean done -
hasPerformedIteratorStep
private boolean hasPerformedIteratorStep -
pointerIterator
-
-
Constructor Details
-
EvalContext
Create a new EvalContext.- Parameters:
parentContext- parent context
-
-
Method Details
-
getContextNodePointer
Description copied from interface:ExpressionContextGet the current context node.- Specified by:
getContextNodePointerin interfaceExpressionContext- Returns:
- The current context node pointer.
-
getJXPathContext
Description copied from interface:ExpressionContextGet the JXPathContext in which this function is being evaluated.- Specified by:
getJXPathContextin interfaceExpressionContext- Returns:
- A list representing the current context nodes.
-
getPosition
public int getPosition()Description copied from interface:ExpressionContextReturns the current context position.- Specified by:
getPositionin interfaceExpressionContext- 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. -
next
Returns the next node pointer in the context -
performIteratorStep
private void performIteratorStep()Moves the iterator forward by one position -
remove
public void remove()Operation is not supported- Specified by:
removein interfaceIterator- Throws:
UnsupportedOperationException
-
constructIterator
private boolean constructIterator()Construct an iterator.- Returns:
- whether the Iterator was constructed
-
sortPointers
Sort a list of pointers based on document order.- Parameters:
l- the list to sort.
-
getContextNodeList
Returns the list of all Pointers in this context for the current position of the parent context.- Specified by:
getContextNodeListin interfaceExpressionContext- Returns:
- List
-
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
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
-
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
Returns the first encountered Pointer that matches the current context's criteria.- Returns:
- Pointer
-
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
-