org.apache.commons.jxpath.ri.axes
Class DescendantContext

java.lang.Object
  extended byorg.apache.commons.jxpath.ri.EvalContext
      extended byorg.apache.commons.jxpath.ri.axes.DescendantContext
All Implemented Interfaces:
ExpressionContext, java.util.Iterator

public class DescendantContext
extends EvalContext

An EvalContext that walks the "descendant::" and "descendant-or-self::" axes.

Version:
$Revision: 1.16 $ $Date: 2004/02/29 14:17:38 $
Author:
Dmitri Plotnikov

Field Summary
private  NodePointer currentNodePointer
           
private static NodeTest ELEMENT_NODE_TEST
           
private  boolean includeSelf
           
private  NodeTest nodeTest
           
private  boolean setStarted
           
private  java.util.Stack stack
           
 
Fields inherited from class org.apache.commons.jxpath.ri.EvalContext
parentContext, position, rootContext
 
Constructor Summary
DescendantContext(EvalContext parentContext, boolean includeSelf, NodeTest nodeTest)
           
 
Method Summary
 NodePointer getCurrentNodePointer()
          Returns the current context node.
 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.
private  boolean isRecursive()
          Checks if we are reentering a bean we have already seen and if so returns true to prevent infinite recursion.
 boolean nextNode()
          Returns true if there is another object in the current set.
 void reset()
          Sets current position = 0, which is the pre-iteration state.
 boolean setPosition(int position)
          Moves the current position to the specified index.
 
Methods inherited from class org.apache.commons.jxpath.ri.EvalContext
getContextNodeList, getContextNodePointer, getCurrentPosition, getDocumentOrder, getJXPathContext, getNodeSet, getPosition, getRootContext, getSingleNodePointer, getValue, hasNext, next, nextSet, remove, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

nodeTest

private NodeTest nodeTest

setStarted

private boolean setStarted

stack

private java.util.Stack stack

currentNodePointer

private NodePointer currentNodePointer

includeSelf

private boolean includeSelf

ELEMENT_NODE_TEST

private static final NodeTest ELEMENT_NODE_TEST
Constructor Detail

DescendantContext

public DescendantContext(EvalContext parentContext,
                         boolean includeSelf,
                         NodeTest nodeTest)
Method Detail

isChildOrderingRequired

public boolean isChildOrderingRequired()
Description copied from class: EvalContext
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.

Overrides:
isChildOrderingRequired in class EvalContext

getCurrentNodePointer

public NodePointer getCurrentNodePointer()
Description copied from class: EvalContext
Returns the current context node. Undefined before the beginning of the iteration.

Specified by:
getCurrentNodePointer in class EvalContext

reset

public void reset()
Description copied from class: EvalContext
Sets current position = 0, which is the pre-iteration state.

Overrides:
reset in class EvalContext

setPosition

public boolean setPosition(int position)
Description copied from class: EvalContext
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.

Overrides:
setPosition in class EvalContext

nextNode

public boolean nextNode()
Description copied from class: EvalContext
Returns true if there is another object in the current set. Switches the current position and node to the next object.

Specified by:
nextNode in class EvalContext

isRecursive

private boolean isRecursive()
Checks if we are reentering a bean we have already seen and if so returns true to prevent infinite recursion.