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]

Reply via email to