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 2014/05/26 14:05:35 UTC

svn commit: r1597571 - in /jackrabbit/oak/branches/1.0: ./ oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java

Author: alexparvulescu
Date: Mon May 26 12:05:34 2014
New Revision: 1597571

URL: http://svn.apache.org/r1597571
Log:
OAK-1829 IllegalStateException while trying retrieve rows information from QueryResult
 - merged to 1.0 branch


Modified:
    jackrabbit/oak/branches/1.0/   (props changed)
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java
    jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java

Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1597569

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java?rev=1597571&r1=1597570&r2=1597571&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/LowerCaseImpl.java Mon May 26 12:05:34 2014
@@ -27,7 +27,11 @@ import org.apache.jackrabbit.oak.api.Pro
 import org.apache.jackrabbit.oak.query.index.FilterImpl;
 import org.apache.jackrabbit.oak.spi.query.PropertyValues;
 
+import com.google.common.base.Function;
+
+import static com.google.common.collect.Iterables.transform;
 import static org.apache.jackrabbit.oak.api.Type.STRING;
+import static org.apache.jackrabbit.oak.api.Type.STRINGS;
 
 /**
  * The function "lower(..)".
@@ -70,11 +74,20 @@ public class LowerCaseImpl extends Dynam
         if (p == null) {
             return null;
         }
-        // TODO what is the expected result of LOWER(x) for an array property?
-        // currently throws an exception
-        String value = p.getValue(STRING);
         // TODO toLowerCase(): document the Turkish locale problem
-        return PropertyValues.newString(value.toLowerCase());
+        if (p.getType().isArray()) {
+            Iterable<String> lowerCase = transform(p.getValue(STRINGS),
+                    new Function<String, String>() {
+                        @Override
+                        public String apply(String input) {
+                            return input.toLowerCase();
+                        }
+                    });
+            return PropertyValues.newString(lowerCase);
+        } else {
+            String value = p.getValue(STRING);
+            return PropertyValues.newString(value.toLowerCase());
+        }
     }
 
     @Override

Modified: jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java?rev=1597571&r1=1597570&r2=1597571&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/test/java/org/apache/jackrabbit/oak/query/index/TraversingIndexQueryTest.java Mon May 26 12:05:34 2014
@@ -349,4 +349,14 @@ public class TraversingIndexQueryTest ex
         assertQuery("//*[*/@d < 3]", "xpath", Arrays.asList("/content"));
     }
 
+    @Test
+    public void testLowercaseOnArrays() throws Exception {
+        // OAK-1829
+        Tree content = root.getTree("/").addChild("content");
+        content.setProperty("array", Arrays.asList("X", "Y"), Type.STRINGS);
+        root.commit();
+        assertQuery("//*[jcr:like(fn:lower-case(@array), '%x%')]", "xpath",
+                Arrays.asList("/content"));
+    }
+
 }