org.apache.commons.jxpath.ri
Class EvalContext

java.lang.Object
  extended by 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
protected  EvalContext parentContext
          parent context
protected  int position
          position
protected  RootContext rootContext
          root context
 
Constructor Summary
EvalContext(EvalContext parentContext)
          Create a new EvalContext.
 
Method Summary
 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 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(java.util.List l)
          Sort a list of pointers based on document order.
 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
parent context


rootContext

protected RootContext rootContext
root context


position

protected int position
position

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 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 java.util.Iterator
Returns:
boolean

next

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

Specified by:
next in interface java.util.Iterator
Returns:
Object

remove

public void remove()
Operation is not supported

Specified by:
remove in interface java.util.Iterator
Throws:
java.lang.UnsupportedOperationException

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 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 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 class java.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


Copyright © 2001-2011 Apache Software Foundation. All Rights Reserved.