morten 01/10/08 00:47:19
Modified: java/src/org/apache/xalan/xsltc/dom DOMImpl.java
Log:
Changed the way in which we eliminated duplicate nodes returned by some
iterators. We had two iterators we used to lay on top of other iterators
that we suspected could produce duplicate or out-of-order nodes. These
iterators were DOMImpl$OrderedIterator and DupFilterIterator. I chose to
keep the latter as it both filters out duplcate nodes and puts nodes in
correct document order.
PR: n/a
Obtained from: n/a
Submitted by: [EMAIL PROTECTED]
Reviewed by: [EMAIL PROTECTED]
Revision Changes Path
1.38 +2 -65
xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java
Index: DOMImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/DOMImpl.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- DOMImpl.java 2001/10/05 09:47:55 1.37
+++ DOMImpl.java 2001/10/08 07:47:18 1.38
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: DOMImpl.java,v 1.37 2001/10/05 09:47:55 morten Exp $
+ * @(#)$Id: DOMImpl.java,v 1.38 2001/10/08 07:47:18 morten Exp $
*
* The Apache Software License, Version 1.1
*
@@ -1654,74 +1654,11 @@
return(new NodeValueIterator(iterator, type, value, op));
}
- /**************************************************************
- * Iterator that assured that a single node is only returned once
- * and that the nodes are returned in document order.
- */
- private final class OrderedIterator extends NodeIteratorBase {
-
- private BitArray _nodes = null;
- private int _save = 0;
- private int _mark = 0;
- private int _start = 0;
- private int _node = -1;
- private int _last = 0;
-
- public OrderedIterator(NodeIterator source, int node) {
- _nodes = new BitArray(_treeNodeLimit);
- source.setStartNode(node);
- while ((_node = source.next()) != END) {
- if (_start == -1) _start = _node;
- _last = _node;
- _nodes.setBit(_node);
- }
- _node = -1;
- }
-
- public int next() {
- while ((_node < _treeNodeLimit) && (!_nodes.getBit(++_node))) ;
- if (_node >= _treeNodeLimit) return(END);
- return returnNode(_node);
- }
-
- public NodeIterator reset() {
- _node = _start - 1;
- return(this);
- }
-
- public int getLast() {
- return(_last);
- }
-
- public void setMark() {
- _save = _node;
- }
-
- public void gotoMark() {
- _node = _save;
- }
-
- public NodeIterator setStartNode(int start) {
- _start = start;
- return((NodeIterator)this);
- }
-
- public boolean isReverse() {
- return(false);
- }
-
- public NodeIterator cloneIterator() {
- return((NodeIterator)this);
- }
-
- } // end of OrderedIterator
-
-
/**
* Encapsulates an iterator in an OrderedIterator to ensure node order
*/
public NodeIterator orderNodes(NodeIterator source, int node) {
- return new OrderedIterator(source, node);
+ return new DupFilterIterator(source);
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]