Class DescendantContext

  • All Implemented Interfaces:
    java.util.Iterator, ExpressionContext

    public class DescendantContext
    extends EvalContext
    An EvalContext that walks the "descendant::" and "descendant-or-self::" axes.
    Version:
    $Revision: 670727 $ $Date: 2008-06-23 15:10:38 -0500 (Mon, 23 Jun 2008) $
    Author:
    Dmitri Plotnikov
    • Field Detail

      • 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)
        Create a new DescendantContext.
        Parameters:
        parentContext - parent context
        includeSelf - whether to include this node
        nodeTest - test
    • 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
        Returns:
        boolean
      • 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
        Returns:
        NodePoiner
      • 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
        Parameters:
        position - to set
        Returns:
        boolean
      • 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
        Returns:
        boolean
      • isRecursive

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