This is an automated email from the ASF dual-hosted git repository.

radu pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly-compiler-java.git


The following commit(s) were added to refs/heads/master by this push:
     new 34ca236  SLING-7380 - Querying maps with Integer keys returns null
34ca236 is described below

commit 34ca236c235ad5b1ada27f6cb9cd87264a101d1d
Author: Radu Cotescu <[email protected]>
AuthorDate: Tue Jan 16 10:05:33 2018 +0100

    SLING-7380 - Querying maps with Integer keys returns null
    
    * corrected object property resolution in 
org.apache.sling.scripting.sightly.render.AbstractRuntimeObjectModel#resolveProperty
    and 
org.apache.sling.scripting.sightly.render.AbstractRuntimeObjectModel#getProperty
    (closes #1)
---
 pom.xml                                            |  2 +-
 .../sightly/render/AbstractRuntimeObjectModel.java |  7 +++--
 .../render/AbstractRuntimeObjectModelTest.java     | 35 ++++++++++++++++++++--
 3 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/pom.xml b/pom.xml
index 6ae0363..2d3de5a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -159,7 +159,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             
<artifactId>org.apache.sling.scripting.sightly.compiler</artifactId>
-            <version>1.0.14</version>
+            <version>1.0.17-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 
diff --git 
a/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
 
b/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
index 3518f55..7235cfa 100644
--- 
a/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
+++ 
b/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
@@ -73,10 +73,11 @@ public abstract class AbstractRuntimeObjectModel implements 
RuntimeObjectModel {
 
     @Override
     public Object resolveProperty(Object target, Object property) {
-        Object resolved;
+        Object resolved = null;
         if (property instanceof Number) {
             resolved = ObjectModel.getIndex(target, ((Number) 
property).intValue());
-        } else {
+        }
+        if (resolved == null) {
             resolved = getProperty(target, property);
         }
         return resolved;
@@ -138,7 +139,7 @@ public abstract class AbstractRuntimeObjectModel implements 
RuntimeObjectModel {
             result = ((Record) target).getProperty(property);
         }
         if (result == null) {
-            result = ObjectModel.resolveProperty(target, property);
+            result = ObjectModel.resolveProperty(target, propertyObj);
         }
         return result;
     }
diff --git 
a/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java
 
b/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java
index 1cc988c..12bd65c 100644
--- 
a/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java
+++ 
b/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java
@@ -16,6 +16,12 @@
  
******************************************************************************/
 package org.apache.sling.scripting.sightly.render;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
 import org.junit.Test;
 
 import static org.junit.Assert.*;
@@ -25,10 +31,33 @@ public class AbstractRuntimeObjectModelTest {
     private AbstractRuntimeObjectModel runtimeObjectModel = new 
AbstractRuntimeObjectModel() {};
 
     @Test
-    public void testResolveProperty_ArrayLength() throws Exception {
+    public void testResolveProperty() {
+        assertEquals(0, 
runtimeObjectModel.resolveProperty(Collections.EMPTY_LIST, "size"));
+        assertNull(runtimeObjectModel.resolveProperty(null, null));
         int[] ints = new int[] {1, 2, 3};
-        Integer[] integers = new Integer[] {1, 2, 3};
         assertEquals(ints.length, runtimeObjectModel.resolveProperty(ints, 
"length"));
-        assertEquals(integers.length, 
runtimeObjectModel.resolveProperty(integers, "length"));
+        Integer[] testArray = new Integer[] {1, 2, 3};
+        assertEquals(testArray.length, 
runtimeObjectModel.resolveProperty(testArray, "length"));
+        assertEquals(2, runtimeObjectModel.resolveProperty(testArray, 1));
+        assertNull(runtimeObjectModel.resolveProperty(testArray, 3));
+        assertNull(runtimeObjectModel.resolveProperty(testArray, -1));
+        List<Integer> testList = Arrays.asList(testArray);
+        assertEquals(2, runtimeObjectModel.resolveProperty(testList, 1));
+        assertNull(runtimeObjectModel.resolveProperty(testList, 3));
+        assertNull(runtimeObjectModel.resolveProperty(testList, -1));
+        Map<String, Integer> map = new HashMap<String, Integer>() {{
+            put("one", 1);
+            put("two", 2);
+        }};
+        assertEquals(1, runtimeObjectModel.resolveProperty(map, "one"));
+        assertNull(runtimeObjectModel.resolveProperty(map, null));
+        assertNull(runtimeObjectModel.resolveProperty(map, ""));
+        Map<Integer, String> stringMap = new HashMap<Integer, String>(){{
+            put(1, "one");
+            put(2, "two");
+        }};
+        assertEquals("one", runtimeObjectModel.resolveProperty(stringMap, 1));
+        assertEquals("two", runtimeObjectModel.resolveProperty(stringMap, 2));
     }
+
 }

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to