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]>'].