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 md...@apache.org on 2014/10/22 17:48:59 UTC

svn commit: r1633641 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java oak-jcr/pom.xml oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java

Author: mduerig
Date: Wed Oct 22 15:48:59 2014
New Revision: 1633641

URL: http://svn.apache.org/r1633641
Log:
OAK-2197: Node.getReferences throw IllegalArgumentException
Properly deal with multi valued properties

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
    jackrabbit/oak/trunk/oak-jcr/pom.xml
    jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java?rev=1633641&r1=1633640&r2=1633641&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/ast/SelectorImpl.java Wed Oct 22 15:48:59 2014
@@ -581,11 +581,18 @@ public class SelectorImpl extends Source
                 }
                 return PropertyValues.newString(strings);
             }
+            Type<?> baseType = type.isArray() ? type.getBaseType() : type;
             @SuppressWarnings("unchecked")
-            PropertyBuilder<Object> builder = (PropertyBuilder<Object>) PropertyBuilder.array(type);
+            PropertyBuilder<Object> builder = (PropertyBuilder<Object>) PropertyBuilder.array(baseType);
             builder.setName("");
             for (PropertyValue v : list) {
-                builder.addValue(v.getValue(type));
+                if (type.isArray()) {
+                    for (Object value : (Iterable<?>) v.getValue(type)) {
+                        builder.addValue(value);
+                    }
+                } else {
+                    builder.addValue(v.getValue(type));
+                }
             }
             PropertyState s = builder.getPropertyState();
             return PropertyValues.create(s);

Modified: jackrabbit/oak/trunk/oak-jcr/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/pom.xml?rev=1633641&r1=1633640&r2=1633641&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-jcr/pom.xml Wed Oct 22 15:48:59 2014
@@ -145,8 +145,6 @@
       org.apache.jackrabbit.core.query.ShareableNodeTest#testName                                    <!-- OAK-118 -->
       org.apache.jackrabbit.core.query.ShareableNodeTest#testPathConstraint                          <!-- OAK-118 -->
       org.apache.jackrabbit.oak.jcr.query.QueryTest#fnNameEncoding                                   <!-- OAK-1000 -->
-
-      org.apache.jackrabbit.oak.jcr.ReferencesTest#testMultipleMultiReferences                       <!-- OAK-2197 -->
     </known.issues>
   </properties>
 

Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java?rev=1633641&r1=1633640&r2=1633641&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/ReferencesTest.java Wed Oct 22 15:48:59 2014
@@ -71,7 +71,6 @@ public class ReferencesTest extends Abst
         checkReferences("refs", ref.getWeakReferences(), n.getPath() + "/myref");
     }
 
-    // FIXME OAK-2197
     public void testMultipleMultiReferences() throws RepositoryException {
         Node ref = testRootNode.addNode(nodeName2, testNodeType);
         ref.addMixin(mixReferenceable);