You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by al...@apache.org on 2013/11/13 14:43:42 UTC

svn commit: r1541517 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java

Author: alexparvulescu
Date: Wed Nov 13 13:43:42 2013
New Revision: 1541517

URL: http://svn.apache.org/r1541517
Log:
OAK-1171 Query fails unexpectedly when property conversion is not possible


Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java?rev=1541517&r1=1541516&r2=1541517&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/ComparisonImpl.java Wed Nov 13 13:43:42 2013
@@ -95,7 +95,12 @@ public class ComparisonImpl extends Cons
         }
         // "the value of operand2 is converted to the
         // property type of the value of operand1"
-        p2 = convertValueToType(p2, p1);
+        try {
+            p2 = convertValueToType(p2, p1);
+        } catch (IllegalArgumentException ex) {
+            // unable to convert, just skip this node
+            return false;
+        }
         return evaluate(p1, p2);
     }
 

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java?rev=1541517&r1=1541516&r2=1541517&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java Wed Nov 13 13:43:42 2013
@@ -412,5 +412,24 @@ public class QueryTest extends AbstractR
         Node n = ni.nextNode();
         assertEquals("/etc/p2/r", n.getPath());
     }
-    
+
+    @Test
+    public void testOak1171() throws RepositoryException {
+        Session session = createAdminSession();
+        Node p = session.getRootNode().addNode("etc");
+        p.addNode("p1").setProperty("title", "test");
+        p.addNode("p2").setProperty("title", 1);
+        session.save();
+
+        Query q = session.getWorkspace().getQueryManager()
+                .createQuery("//*[@title = 'test']", "xpath");
+        QueryResult qr = q.execute();
+
+        NodeIterator ni = qr.getNodes();
+        assertTrue(ni.hasNext());
+        Node n = ni.nextNode();
+        assertEquals("/etc/p1", n.getPath());
+        assertFalse(ni.hasNext());
+    }
+
 }