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 th...@apache.org on 2014/04/23 10:11:57 UTC

svn commit: r1589352 - in /jackrabbit/oak/branches/1.0: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java

Author: thomasm
Date: Wed Apr 23 08:11:57 2014
New Revision: 1589352

URL: http://svn.apache.org/r1589352
Log:
OAK-1755 Search fails if the property to be searched on is of different types in different nodes

Modified:
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java
    jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java?rev=1589352&r1=1589351&r2=1589352&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/AstElement.java Wed Apr 23 08:11:57 2014
@@ -124,7 +124,12 @@ abstract class AstElement {
         if (v.getType().tag() == type) {
             return v;
         }
-        return PropertyValues.convert(v, type, query.getNamePathMapper());
+        try {
+            return PropertyValues.convert(v, type, query.getNamePathMapper());
+        } catch (IllegalArgumentException e) {
+            // not possible to convert
+            return v;
+        }
     }
 
     /**

Modified: jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java?rev=1589352&r1=1589351&r2=1589352&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java (original)
+++ jackrabbit/oak/branches/1.0/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/query/QueryTest.java Wed Apr 23 08:11:57 2014
@@ -34,6 +34,7 @@ import java.util.Set;
 
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
+import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.ValueFactory;
@@ -62,6 +63,23 @@ public class QueryTest extends AbstractR
     }
     
     @Test
+    public void date() throws Exception {
+        Session session = getAdminSession();
+        Node t1 = session.getRootNode().addNode("t1");
+        t1.setProperty("x", "22.06.07");
+        Node t2 = session.getRootNode().addNode("t2");
+        t2.setProperty("x", "2007-06-22T01:02:03.000Z", PropertyType.DATE);
+        session.save();
+        
+        String query = "//*[x='a' or x='b']";
+        QueryResult r = session.getWorkspace().
+                getQueryManager().createQuery(
+                query, "xpath").execute();
+        NodeIterator it = r.getNodes();
+        assertFalse(it.hasNext());
+    }
+    
+    @Test
     public void unicode() throws Exception {
         Session session = getAdminSession();
         Node content = session.getRootNode().addNode("test");