BEA Systems, Inc.

WebLogic Server 6.1 API Reference

weblogic.apache.xpath.axes
Class AxesWalker

java.lang.Object
  |
  +--weblogic.apache.xpath.Expression
        |
        +--weblogic.apache.xpath.patterns.NodeTest
              |
              +--weblogic.apache.xpath.axes.PredicatedNodeTest
                    |
                    +--weblogic.apache.xpath.axes.AxesWalker
Direct Known Subclasses:
AttributeWalker, AttributeWalkerOneStep, ChildWalker, ChildWalkerMultiStep, ChildWalkerOneStep, DescendantWalker, FilterExprWalker, FollowingSiblingWalker, FollowingWalker, NamespaceWalker, ParentWalker, ReverseAxesWalker, RootWalker, SelfWalker, SelfWalkerOneStep

public abstract class AxesWalker
extends PredicatedNodeTest
implements java.lang.Cloneable, org.w3c.dom.traversal.TreeWalker, org.w3c.dom.traversal.NodeFilter

Serves as common interface for axes Walkers, and stores common state variables.

This class is based on an implementation from the Apache XML Project. In future releases the XML parser, XSLT processor, and associated classes will likely be updated to be based on a later version of the Apache implementations. Since Apache does not guarantee backwards compatibility between versions of their software, we cannot guarantee backwards compatibility of any of the classes contained in the weblogic.apache package or sub-packages.

See Also:
Serialized Form

Field Summary
static java.lang.String FEATURE_NODETESTFILTER
          String passed to Node.isSupported(java.lang.String, java.lang.String) to see if it implements a NodeTestFilter interface.
protected  int m_nextLevelAmount
          An estimation of the next level that this walker will traverse to.
protected  AxesWalker m_nextWalker
          The next walker in the location step chain.
 
Fields inherited from class weblogic.apache.xpath.axes.PredicatedNodeTest
m_lpi, m_proximityPositions
 
Fields inherited from class weblogic.apache.xpath.patterns.NodeTest
m_whatToShow, SCORE_NODETEST, SCORE_NONE, SCORE_NSWILD, SCORE_OTHER, SCORE_QNAME, SHOW_BYFUNCTION, SHOW_NAMESPACE, SUPPORTS_PRE_STRIPPING, WILD
 
Fields inherited from class weblogic.apache.xpath.Expression
m_slocator
 
Constructor Summary
AxesWalker(LocPathIterator locPathIterator)
          Construct an AxesWalker using a LocPathIterator.
 
Method Summary
 boolean canTraverseOutsideSubtree()
          Tell if this expression or it's subexpressions can traverse outside the current subtree.
protected  boolean checkOKToTraverse(AxesWalker prevStepWalker, AxesWalker testWalker, org.w3c.dom.Node currentTestNode, int nextLevelAmount)
          Tell if it's OK to traverse to the next node, following document order, or if the walker should wait for a condition to occur.
 java.lang.Object clone()
          Get a cloned AxesWalker.
 org.w3c.dom.Node firstChild()
          Moves the TreeWalker to the first visible child of the current node, and returns the new node.
protected  int getArgLen()
          Get the argument length of the location step in the opcode map.
 org.w3c.dom.Node getCurrentNode()
          The node at which the TreeWalker is currently positioned.
 boolean getExpandEntityReferences()
          The value of this flag determines whether the children of entity reference nodes are visible to the TreeWalker.
 org.w3c.dom.traversal.NodeFilter getFilter()
          The filter used to screen nodes.
 int getLastPos(XPathContext xctxt)
          Get the index of the last node that can be itterated to.
protected  int getLevelMax()
          Tell what's the maximum level this axes can descend to.
protected  int getNextLevelAmount()
          Tell what's the next level this axes can descend to.
protected  org.w3c.dom.Node getNextNode()
          Get the next node in document order on the axes.
 AxesWalker getNextWalker()
          Get the next walker in the location step chain.
 AxesWalker getPrevWalker()
          Get the previous walker reference in the location step chain.
 org.w3c.dom.Node getRoot()
          The root node of the TreeWalker, as specified in setRoot(Node root).
protected  int getStepType()
          The the step type op code.
 void init(Compiler compiler, int opPos, int stepType)
          Initialize an AxesWalker during the parse of the XPath expression.
protected  boolean isFastWalker()
          Tell if this is a special type of walker compatible with ChildWalkerMultiStep.
 org.w3c.dom.Node lastChild()
          Moves the TreeWalker to the last visible child of the current node, and returns the new node.
 org.w3c.dom.Node nextNode()
          Moves the TreeWalker to the next visible node in document order relative to the current node, and returns the new node.
 org.w3c.dom.Node nextSibling()
          Moves the TreeWalker to the next sibling of the current node, and returns the new node.
 org.w3c.dom.Node parentNode()
          Moves to and returns the closest visible ancestor node of the current node.
 org.w3c.dom.Node previousNode()
          Moves the TreeWalker to the previous visible node in document order relative to the current node, and returns the new node.
 org.w3c.dom.Node previousSibling()
          Moves the TreeWalker to the previous sibling of the current node, and returns the new node.
protected  org.w3c.dom.Node setCurrentIfNotNull(org.w3c.dom.Node currentNode)
          Set the current node if it's not null.
 void setCurrentNode(org.w3c.dom.Node currentNode)
          Set the current node.
 void setNextWalker(AxesWalker walker)
          Set the next walker in the location step chain.
 void setPrevWalker(AxesWalker walker)
          Set or clear the previous walker reference in the location step chain.
 void setRoot(org.w3c.dom.Node root)
          Set the root node of the TreeWalker.
 java.lang.String toString()
          Diagnostic string for this walker.
 
Methods inherited from class weblogic.apache.xpath.axes.PredicatedNodeTest
acceptNode, countProximityPosition, getLocPathIterator, getPredicateCount, getPredicateIndex, getProximityPosition, getProximityPosition, getProximityPosition, initPredicateInfo, initProximityPosition, isReverseAxes, nodeToString, resetProximityPositions, setLocPathIterator, setPredicateCount
 
Methods inherited from class weblogic.apache.xpath.patterns.NodeTest
calcScore, debugWhatToShow, execute, execute, getDefaultScore, getLocalName, getNamespace, getWhatToShow, initNodeTest, initNodeTest
 
Methods inherited from class weblogic.apache.xpath.Expression
assert, error, setSourceLocator, warn
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FEATURE_NODETESTFILTER

public static final java.lang.String FEATURE_NODETESTFILTER
String passed to Node.isSupported(java.lang.String, java.lang.String) to see if it implements a NodeTestFilter interface.

m_nextLevelAmount

protected transient int m_nextLevelAmount
An estimation of the next level that this walker will traverse to. Not always accurate.

m_nextWalker

protected AxesWalker m_nextWalker
The next walker in the location step chain.
Constructor Detail

AxesWalker

public AxesWalker(LocPathIterator locPathIterator)
Construct an AxesWalker using a LocPathIterator.

Parameters:
locPathIterator - non-null reference to the parent iterator.
Method Detail

init

public void init(Compiler compiler,
                 int opPos,
                 int stepType)
          throws javax.xml.transform.TransformerException
Initialize an AxesWalker during the parse of the XPath expression.

Parameters:
compiler - The Compiler object that has information about this walker in the op map.
opPos - The op code position of this location step.
stepType - The type of location step.
Throws:
javax.xml.transform.TransformerException -  

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Get a cloned AxesWalker.

Returns:
A new AxesWalker that can be used without mutating this one.
Throws:
java.lang.CloneNotSupportedException -  
Overrides:
clone in class PredicatedNodeTest

canTraverseOutsideSubtree

public boolean canTraverseOutsideSubtree()
Tell if this expression or it's subexpressions can traverse outside the current subtree.

Returns:
true if traversal outside the context node's subtree can occur.
Overrides:
canTraverseOutsideSubtree in class PredicatedNodeTest

getStepType

protected int getStepType()
The the step type op code.

Returns:
An integer that represents an axes traversal opcode found in OpCodes.

getArgLen

protected int getArgLen()
Get the argument length of the location step in the opcode map. TODO: Can this be removed since it is only valuable at compile time?

Returns:
The argument length of the location step in the opcode map.

getRoot

public org.w3c.dom.Node getRoot()
The root node of the TreeWalker, as specified in setRoot(Node root). Note that this may actually be below the current node.
Specified by:
getRoot in interface org.w3c.dom.traversal.TreeWalker

Returns:
The context node of the step.

setRoot

public void setRoot(org.w3c.dom.Node root)
Set the root node of the TreeWalker. (Not part of the DOM2 TreeWalker interface).

Parameters:
root - The context node of this step.

getCurrentNode

public final org.w3c.dom.Node getCurrentNode()
The node at which the TreeWalker is currently positioned.
The value must not be null. Alterations to the DOM tree may cause the current node to no longer be accepted by the TreeWalker's associated filter. currentNode may also be explicitly set to any node, whether or not it is within the subtree specified by the root node or would be accepted by the filter and whatToShow flags. Further traversal occurs relative to currentNode even if it is not part of the current view by applying the filters in the requested direction (not changing currentNode where no traversal is possible).
Specified by:
getCurrentNode in interface org.w3c.dom.traversal.TreeWalker

Returns:
The node at which the TreeWalker is currently positioned, only null if setRoot has not yet been called.
Throws:
org.w3c.dom.DOMException - NOT_SUPPORTED_ERR: Raised if the specified currentNode isnull .

setCurrentNode

public void setCurrentNode(org.w3c.dom.Node currentNode)
                    throws org.w3c.dom.DOMException
Set the current node.
Specified by:
setCurrentNode in interface org.w3c.dom.traversal.TreeWalker

Parameters:
currentNode - The current itteration node, should not be null.
Throws:
org.w3c.dom.DOMException -  

setCurrentIfNotNull

protected org.w3c.dom.Node setCurrentIfNotNull(org.w3c.dom.Node currentNode)
                                        throws org.w3c.dom.DOMException
Set the current node if it's not null.

Parameters:
currentNode - The current node or null.
Returns:
The node passed in.
Throws:
org.w3c.dom.DOMException -  

getFilter

public org.w3c.dom.traversal.NodeFilter getFilter()
The filter used to screen nodes.
Specified by:
getFilter in interface org.w3c.dom.traversal.TreeWalker

Returns:
This AxesWalker.

getExpandEntityReferences

public boolean getExpandEntityReferences()
The value of this flag determines whether the children of entity reference nodes are visible to the TreeWalker. If false, they will be skipped over.
To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the TreeWalker. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.
Specified by:
getExpandEntityReferences in interface org.w3c.dom.traversal.TreeWalker

Returns:
true.

parentNode

public org.w3c.dom.Node parentNode()
Moves to and returns the closest visible ancestor node of the current node. If the search for parentNode attempts to step upward from the TreeWalker's root node, or if it fails to find a visible ancestor node, this method retains the current position and returns null.
Specified by:
parentNode in interface org.w3c.dom.traversal.TreeWalker

Returns:
The new parent node, or null if the current node has no parent in the TreeWalker's logical view.

firstChild

public org.w3c.dom.Node firstChild()
Moves the TreeWalker to the first visible child of the current node, and returns the new node. If the current node has no visible children, returns null , and retains the current node.
Specified by:
firstChild in interface org.w3c.dom.traversal.TreeWalker

Returns:
The new node, or null if the current node has no visible children in the TreeWalker's logical view.

nextSibling

public org.w3c.dom.Node nextSibling()
Moves the TreeWalker to the next sibling of the current node, and returns the new node. If the current node has no visible next sibling, returns null , and retains the current node.
Specified by:
nextSibling in interface org.w3c.dom.traversal.TreeWalker

Returns:
The new node, or null if the current node has no next sibling in the TreeWalker's logical view.

lastChild

public org.w3c.dom.Node lastChild()
Moves the TreeWalker to the last visible child of the current node, and returns the new node. If the current node has no visible children, returns null , and retains the current node.
Specified by:
lastChild in interface org.w3c.dom.traversal.TreeWalker

Returns:
The new node, or null if the current node has no children in the TreeWalker's logical view.

previousSibling

public org.w3c.dom.Node previousSibling()
Moves the TreeWalker to the previous sibling of the current node, and returns the new node. If the current node has no visible previous sibling, returns null , and retains the current node.
Specified by:
previousSibling in interface org.w3c.dom.traversal.TreeWalker

Returns:
The new node, or null if the current node has no previous sibling in the TreeWalker's logical view.

previousNode

public org.w3c.dom.Node previousNode()
Moves the TreeWalker to the previous visible node in document order relative to the current node, and returns the new node. If the current node has no previous node, or if the search for previousNode attempts to step upward from the TreeWalker's root node, returns null , and retains the current node.
Specified by:
previousNode in interface org.w3c.dom.traversal.TreeWalker

Returns:
The new node, or null if the current node has no previous node in the TreeWalker's logical view.

setNextWalker

public void setNextWalker(AxesWalker walker)
Set the next walker in the location step chain.

Parameters:
walker - Reference to AxesWalker derivative, or may be null.

getNextWalker

public AxesWalker getNextWalker()
Get the next walker in the location step chain.

Returns:
Reference to AxesWalker derivative, or null.

setPrevWalker

public void setPrevWalker(AxesWalker walker)
Set or clear the previous walker reference in the location step chain.

Parameters:
walker - Reference to previous walker reference in the location step chain, or null.

getPrevWalker

public AxesWalker getPrevWalker()
Get the previous walker reference in the location step chain.

Returns:
Reference to previous walker reference in the location step chain, or null.

toString

public java.lang.String toString()
Diagnostic string for this walker.

Returns:
Diagnostic string for this walker.
Overrides:
toString in class java.lang.Object

getLevelMax

protected int getLevelMax()
Tell what's the maximum level this axes can descend to. This method is meant to be overloaded by derived classes.

Returns:
An estimation of the maximum level this axes can descend to.

getNextLevelAmount

protected int getNextLevelAmount()
Tell what's the next level this axes can descend to.

Returns:
An estimation of the next level that this walker will traverse to.

checkOKToTraverse

protected boolean checkOKToTraverse(AxesWalker prevStepWalker,
                                    AxesWalker testWalker,
                                    org.w3c.dom.Node currentTestNode,
                                    int nextLevelAmount)
Tell if it's OK to traverse to the next node, following document order, or if the walker should wait for a condition to occur.

Parameters:
prevStepWalker - The previous walker in the location path.
testWalker - The walker being tested, but the state may not be intact, so only static information can be obtained from it.
currentTestNode - The current node being testing.
nextLevelAmount - An estimation of the next level to traverse to.
Returns:
True if it's OK for testWalker to traverse to nextLevelAmount.

getNextNode

protected org.w3c.dom.Node getNextNode()
Get the next node in document order on the axes.

Returns:
the next node in document order on the axes, or null.

nextNode

public org.w3c.dom.Node nextNode()
Moves the TreeWalker to the next visible node in document order relative to the current node, and returns the new node. If the current node has no next node, or if the search for nextNode attempts to step upward from the TreeWalker's root node, returns null , and retains the current node.
Specified by:
nextNode in interface org.w3c.dom.traversal.TreeWalker

Returns:
The new node, or null if the current node has no next node in the TreeWalker's logical view.

getLastPos

public int getLastPos(XPathContext xctxt)
Get the index of the last node that can be itterated to.

Parameters:
xctxt - XPath runtime context.
Returns:
the index of the last node that can be itterated to.
Overrides:
getLastPos in class PredicatedNodeTest

isFastWalker

protected boolean isFastWalker()
Tell if this is a special type of walker compatible with ChildWalkerMultiStep.

Returns:
true this is a special type of walker compatible with ChildWalkerMultiStep.

Documentation is available at
http://download.oracle.com/docs/cd/E13222_01/wls/docs61

WebLogic classes and methods that do not appear in this reference are not public and are not supported.