Package org.apache.commons.jxpath.ri
Class EvalContext
- java.lang.Object
-
- org.apache.commons.jxpath.ri.EvalContext
-
- All Implemented Interfaces:
java.util.Iterator
,ExpressionContext
- 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: 652845 $ $Date: 2008-05-02 12:46:46 -0500 (Fri, 02 May 2008) $
- Author:
- Dmitri Plotnikov
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
done
private boolean
hasPerformedIteratorStep
protected EvalContext
parentContext
parent contextprivate java.util.Iterator
pointerIterator
protected int
position
positionprotected RootContext
rootContext
root contextprivate boolean
startedSetIteration
-
Constructor Summary
Constructors Constructor Description EvalContext(EvalContext parentContext)
Create a new EvalContext.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private boolean
constructIterator()
Construct an iterator.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()
Get the current position.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 contextabstract 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 positionvoid
remove()
Operation is not supportedvoid
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(java.util.List l)
Sort a list of pointers based on document order.java.lang.String
toString()
-
-
-
Field Detail
-
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 java.util.Iterator pointerIterator
-
-
Constructor Detail
-
EvalContext
public EvalContext(EvalContext parentContext)
Create a new EvalContext.- Parameters:
parentContext
- parent context
-
-
Method Detail
-
getContextNodePointer
public Pointer getContextNodePointer()
Description copied from interface:ExpressionContext
Get the current context node.- Specified by:
getContextNodePointer
in interfaceExpressionContext
- 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 interfaceExpressionContext
- 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 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.- Specified by:
hasNext
in interfacejava.util.Iterator
- Returns:
- boolean
-
next
public java.lang.Object next()
Returns the next node pointer in the context- Specified by:
next
in interfacejava.util.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 interfacejava.util.Iterator
- Throws:
java.lang.UnsupportedOperationException
-
constructIterator
private boolean constructIterator()
Construct an iterator.- Returns:
- whether the Iterator was constructed
-
sortPointers
protected void sortPointers(java.util.List l)
Sort a list of pointers based on document order.- Parameters:
l
- the list to sort.
-
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 interfaceExpressionContext
- 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 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- Returns:
- Object
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.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
-
-