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());
+ }
+
}