mmidy 02/05/15 15:04:02
Modified: java/src/org/apache/xml/dtm/ref
DTMDefaultBaseTraversers.java
Log:
Bugzilla 8894: DescendantForRoot traversers needed to implement their own
version of first(int, int) so that their context would be from the root.
Revision Changes Path
1.10 +57 -0
xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseTraversers.java
Index: DTMDefaultBaseTraversers.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/ref/DTMDefaultBaseTraversers.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DTMDefaultBaseTraversers.java 10 Apr 2002 20:33:16 -0000 1.9
+++ DTMDefaultBaseTraversers.java 15 May 2002 22:04:02 -0000 1.10
@@ -1633,6 +1633,34 @@
{
return getDocument();
}
+
+ /**
+ * By the nature of the stateless traversal, the context node can not be
+ * returned or the iteration will go into an infinate loop. So to
traverse
+ * an axis, the first function must be used to get the first node.
+ *
+ * <p>This method needs to be overloaded only by those axis that process
+ * the self node. <\p>
+ *
+ * @param context The context node of this traversal. This is the point
+ * of origin for the traversal -- its "root node" or starting point.
+ * @param expandedTypeID The expanded type ID that must match.
+ *
+ * @return the first node in the traversal.
+ */
+ public int first(int context, int expandedTypeID)
+ {
+ if (isIndexed(expandedTypeID))
+ {
+ int identity = 0;
+ int firstPotential = getFirstPotential(identity);
+
+ return makeNodeHandle(getNextIndexed(identity, firstPotential,
expandedTypeID));
+ }
+
+ int root = first(context);
+ return next(root, root, expandedTypeID);
+ }
}
/**
@@ -1676,6 +1704,35 @@
{
return makeNodeHandle(_firstch(0));
}
+
+ /**
+ * By the nature of the stateless traversal, the context node can not be
+ * returned or the iteration will go into an infinate loop. So to
traverse
+ * an axis, the first function must be used to get the first node.
+ *
+ * <p>This method needs to be overloaded only by those axis that process
+ * the self node. <\p>
+ *
+ * @param context The context node of this traversal. This is the point
+ * of origin for the traversal -- its "root node" or starting point.
+ * @param expandedTypeID The expanded type ID that must match.
+ *
+ * @return the first node in the traversal.
+ */
+ public int first(int context, int expandedTypeID)
+ {
+ if (isIndexed(expandedTypeID))
+ {
+ int identity = 0;
+ int firstPotential = getFirstPotential(identity);
+
+ return makeNodeHandle(getNextIndexed(identity, firstPotential,
expandedTypeID));
+ }
+
+ int root = getDocument();
+ return next(root, root, expandedTypeID);
+ }
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]