Author: mbenson Date: Mon Jul 2 13:47:47 2007 New Revision: 552591 URL: http://svn.apache.org/viewvc?view=rev&rev=552591 Log: [JXPATH-89] relax restriction against comparisons between different trees; incompatible parents are simply equal (thus no assumptions can be made wrt order).
Modified: jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/NodePointer.java jakarta/commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/compiler/VariableTest.java Modified: jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/NodePointer.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/NodePointer.java?view=diff&rev=552591&r1=552590&r2=552591 ============================================================================== --- jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/NodePointer.java (original) +++ jakarta/commons/proper/jxpath/trunk/src/java/org/apache/commons/jxpath/ri/model/NodePointer.java Mon Jul 2 13:47:47 2007 @@ -662,9 +662,7 @@ } if (depth1 == 1) { - throw new JXPathException( - "Cannot compare pointers that do not belong to the same tree: '" - + p1 + "' and '" + p2 + "'"); + return 0; } int r = compareNodePointers(p1.parent, depth1 - 1, p2.parent, depth2 - 1); if (r != 0) { Modified: jakarta/commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/compiler/VariableTest.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/compiler/VariableTest.java?view=diff&rev=552591&r1=552590&r2=552591 ============================================================================== --- jakarta/commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/compiler/VariableTest.java (original) +++ jakarta/commons/proper/jxpath/trunk/src/test/org/apache/commons/jxpath/ri/compiler/VariableTest.java Mon Jul 2 13:47:47 2007 @@ -16,9 +16,16 @@ */ package org.apache.commons.jxpath.ri.compiler; +import java.io.StringReader; +import java.util.Iterator; + +import javax.xml.parsers.DocumentBuilderFactory; + import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.jxpath.JXPathTestCase; import org.apache.commons.jxpath.Variables; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; /** * Test basic functionality of JXPath - infoset types, @@ -84,7 +91,7 @@ assertTrue( "Evaluating '$none', expected exception - did not get it", exception); - + exception = false; try { context.setValue("$none", new Integer(1)); @@ -265,5 +272,20 @@ "Remove collection element", "temp2", context.getValue("$temp[1]")); + } + + public void testUnionOfVariableAndNode() throws Exception { + Document doc = DocumentBuilderFactory.newInstance() + .newDocumentBuilder().parse( + new InputSource(new StringReader( + "<MAIN><A/><A/></MAIN>"))); + + JXPathContext context = JXPathContext.newContext(doc); + context.getVariables().declareVariable("var", "varValue"); + int sz = 0; + for (Iterator ptrs = context.iteratePointers("$var | /MAIN/A"); ptrs.hasNext(); sz++) { + ptrs.next(); + } + assertEquals(3, sz); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]