Save This Page
Home » openjdk-7 » com.sun.org.apache.xpath » internal » [javadoc | source]
com.sun.org.apache.xpath.internal
public class: NodeSet [javadoc | source]
java.lang.Object
   com.sun.org.apache.xpath.internal.NodeSet

All Implemented Interfaces:
    Cloneable, ContextNodeList, NodeIterator, NodeList

The NodeSet class can act as either a NodeVector, NodeList, or NodeIterator. However, in order for it to act as a NodeVector or NodeList, it's required that setShouldCacheNodes(true) be called before the first nextNode() is called, in order that nodes can be added as they are fetched. Derived classes that implement iterators must override runTo(int index), in order that they may run the iteration to the given index.

Note that we directly implement the DOM's NodeIterator interface. We do not emulate all the behavior of the standard NodeIterator. In particular, we do not guarantee to present a "live view" of the document ... but in XSLT, the source document should never be mutated, so this should never be an issue.

Thought: Should NodeSet really implement NodeList and NodeIterator, or should there be specific subclasses of it which do so? The advantage of doing it all here is that all NodeSets will respond to the same calls; the disadvantage is that some of them may return less-than-enlightening results when you do so.

Field Summary
protected transient  int m_next    If this node is being used as an iterator, the next index that nextNode() will return. 
protected transient  boolean m_mutable    True if this list can be mutated. 
protected transient  boolean m_cacheNodes    True if this list is cached.
    serial:
 
 Node[] m_map    Array of nodes this points to.
    serial:
 
protected  int m_firstFree    Number of nodes in this NodeVector.
    serial:
 
Constructor:
 public NodeSet() 
 public NodeSet(int blocksize) 
 public NodeSet(NodeList nodelist) 
    Create a NodeSet, and copy the members of the given nodelist into it.
    Parameters:
    nodelist - List of Nodes to be made members of the new set.
 public NodeSet(NodeSet nodelist) 
    Create a NodeSet, and copy the members of the given NodeSet into it.
    Parameters:
    nodelist - Set of Nodes to be made members of the new set.
 public NodeSet(NodeIterator ni) 
    Create a NodeSet, and copy the members of the given NodeIterator into it.
    Parameters:
    ni - Iterator which yields Nodes to be made members of the new set.
 public NodeSet(Node node) 
    Create a NodeSet which contains the given Node.
    Parameters:
    node - Single node to be added to the new set.
Method from com.sun.org.apache.xpath.internal.NodeSet Summary:
addElement,   addNode,   addNodeInDocOrder,   addNodeInDocOrder,   addNodes,   addNodes,   addNodes,   addNodesInDocOrder,   addNodesInDocOrder,   appendNodes,   clone,   cloneWithReset,   contains,   detach,   elementAt,   getCurrentNode,   getCurrentPos,   getExpandEntityReferences,   getFilter,   getLast,   getLength,   getRoot,   getShouldCacheNodes,   getWhatToShow,   indexOf,   indexOf,   insertElementAt,   insertNode,   isFresh,   item,   nextNode,   peepOrNull,   peepTail,   peepTailSub1,   pop,   popAndTop,   popPair,   popQuick,   previousNode,   push,   pushPair,   removeAllElements,   removeElement,   removeElementAt,   removeNode,   reset,   runTo,   setCurrentPos,   setElementAt,   setLast,   setShouldCacheNodes,   setTail,   setTailSub1,   size
Methods from java.lang.Object:
equals,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from com.sun.org.apache.xpath.internal.NodeSet Detail:
 public  void addElement(Node value) 
    Append a Node onto the vector.
 public  void addNode(Node n) 
    Add a node to the NodeSet. Not all types of NodeSets support this operation
 public int addNodeInDocOrder(Node node,
    XPathContext support) 
    Add the node into a vector of nodes where it should occur in document order.
 public int addNodeInDocOrder(Node node,
    boolean test,
    XPathContext support) 
    Add the node into a vector of nodes where it should occur in document order.
 public  void addNodes(NodeList nodelist) 
    Copy NodeList members into this nodelist, adding in document order. If a node is null, don't add it.
 public  void addNodes(NodeSet ns) 

    Copy NodeList members into this nodelist, adding in document order. Only genuine node references will be copied; nulls appearing in the source NodeSet will not be added to this one.

    In case you're wondering why this function is needed: NodeSet implements both NodeIterator and NodeList. If this method isn't provided, Java can't decide which of those to use when addNodes() is invoked. Providing the more-explicit match avoids that ambiguity.)

 public  void addNodes(NodeIterator iterator) 
    Copy NodeList members into this nodelist, adding in document order. Null references are not added.
 public  void addNodesInDocOrder(NodeList nodelist,
    XPathContext support) 
    Copy NodeList members into this nodelist, adding in document order. If a node is null, don't add it.
 public  void addNodesInDocOrder(NodeIterator iterator,
    XPathContext support) 
    Copy NodeList members into this nodelist, adding in document order. If a node is null, don't add it.
 public  void appendNodes(NodeSet nodes) 
    Append the nodes to the list.
 public Object clone() throws CloneNotSupportedException 
    Get a cloned LocPathIterator.
 public NodeIterator cloneWithReset() throws CloneNotSupportedException 
    Get a cloned Iterator, and reset its state to the beginning of the iteration.
 public boolean contains(Node s) 
    Tell if the table contains the given node.
 public  void detach() 
    Detaches the iterator from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state. Afterdetach has been invoked, calls to nextNode orpreviousNode will raise the exception INVALID_STATE_ERR.

    This operation is a no-op in NodeSet, and will not cause INVALID_STATE_ERR to be raised by later operations.

 public Node elementAt(int i) 
    Get the nth element.
 public Node getCurrentNode() 
    Return the last fetched node. Needed to support the UnionPathIterator.
 public int getCurrentPos() 
    Get the current position, which is one less than the next nextNode() call will retrieve. i.e. if you call getCurrentPos() and the return is 0, the next fetch will take place at index 1.
 public boolean getExpandEntityReferences() 
    The value of this flag determines whether the children of entity reference nodes are visible to the iterator. 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 iterator. 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.
 public NodeFilter getFilter() 
    The filter object used to screen nodes. Filters are applied to further reduce (and restructure) the NodeIterator's view of the document. In our case, we will be using hardcoded filters built into our iterators... but getFilter() is part of the DOM's NodeIterator interface, so we have to support it.
 public int getLast() 
 public int getLength() 
    The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive. Note that this operation requires finding all the matching nodes, which may defeat attempts to defer that work.
 public Node getRoot() 
 public boolean getShouldCacheNodes() 
    Get whether or not this is a cached node set.
 public int getWhatToShow() 
    This attribute determines which node types are presented via the iterator. The available set of constants is defined in the NodeFilter interface. For NodeSets, the mask has been hardcoded to show all nodes except EntityReference nodes, which have no equivalent in the XPath data model.
 public int indexOf(Node elem) 
    Searches for the first occurence of the given argument, beginning the search at index, and testing for equality using the equals method.
 public int indexOf(Node elem,
    int index) 
    Searches for the first occurence of the given argument, beginning the search at index, and testing for equality using the equals method.
 public  void insertElementAt(Node value,
    int at) 
    Inserts the specified node in this vector at the specified index. Each component in this vector with an index greater or equal to the specified index is shifted upward to have an index one greater than the value it had previously.
 public  void insertNode(Node n,
    int pos) 
    Insert a node at a given position.
 public boolean isFresh() 
    Tells if this NodeSet is "fresh", in other words, if the first nextNode() that is called will return the first node in the set.
 public Node item(int index) 
    Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null. TODO: What happens if index is out of range?
 public Node nextNode() throws DOMException 
    Returns the next node in the set and advances the position of the iterator in the set. After a NodeIterator is created, the first call to nextNode() returns the first node in the set.
 public final Node peepOrNull() 
    Return the node at the top of the stack without popping the stack. Special purpose method for TransformerImpl, pushElemTemplateElement. Performance critical.
 public final Node peepTail() 
    Return the node at the tail of the vector without popping Special purpose method for TransformerImpl, pushElemTemplateElement. Performance critical.
 public final Node peepTailSub1() 
    Return the node one position from the tail without popping. Special purpose method for TransformerImpl, pushElemTemplateElement. Performance critical.
 public final Node pop() 
    Pop a node from the tail of the vector and return the result.
 public final Node popAndTop() 
    Pop a node from the tail of the vector and return the top of the stack after the pop.
 public final  void popPair() 
    Pop a pair of nodes from the tail of the stack. Special purpose method for TransformerImpl, pushElemTemplateElement. Performance critical.
 public final  void popQuick() 
    Pop a node from the tail of the vector.
 public Node previousNode() throws DOMException 
    Returns the previous node in the set and moves the position of the iterator backwards in the set.
 public final  void push(Node value) 
    Append a Node onto the vector.
 public final  void pushPair(Node v1,
    Node v2) 
    Push a pair of nodes into the stack. Special purpose method for TransformerImpl, pushElemTemplateElement. Performance critical.
 public  void removeAllElements() 
    Inserts the specified node in this vector at the specified index. Each component in this vector with an index greater or equal to the specified index is shifted upward to have an index one greater than the value it had previously.
 public boolean removeElement(Node s) 
    Removes the first occurrence of the argument from this vector. If the object is found in this vector, each component in the vector with an index greater or equal to the object's index is shifted downward to have an index one smaller than the value it had previously.
 public  void removeElementAt(int i) 
    Deletes the component at the specified index. Each component in this vector with an index greater or equal to the specified index is shifted downward to have an index one smaller than the value it had previously.
 public  void removeNode(Node n) 
    Remove a node.
 public  void reset() 
    Reset the iterator. May have no effect on non-iterator Nodesets.
 public  void runTo(int index) 
    If an index is requested, NodeSet will call this method to run the iterator to the index. By default this sets m_next to the index. If the index argument is -1, this signals that the iterator should be run to the end.
 public  void setCurrentPos(int i) 
    Set the current position in the node set.
 public  void setElementAt(Node node,
    int index) 
    Sets the component at the specified index of this vector to be the specified object. The previous component at that position is discarded. The index must be a value greater than or equal to 0 and less than the current size of the vector.
 public  void setLast(int last) 
 public  void setShouldCacheNodes(boolean b) 
    If setShouldCacheNodes(true) is called, then nodes will be cached. They are not cached by default. This switch must be set before the first call to nextNode is made, to ensure that all nodes are cached.
 public final  void setTail(Node n) 
    Set the tail of the stack to the given node. Special purpose method for TransformerImpl, pushElemTemplateElement. Performance critical.
 public final  void setTailSub1(Node n) 
    Set the given node one position from the tail. Special purpose method for TransformerImpl, pushElemTemplateElement. Performance critical.
 public int size() 
    Get the length of the list.