You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2022/02/04 14:45:14 UTC
[sling-org-apache-sling-api] branch master updated: SLING-11123 : Multiple puts with same key are not handled correctly
This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-api.git
The following commit(s) were added to refs/heads/master by this push:
new 9232ef9 SLING-11123 : Multiple puts with same key are not handled correctly
9232ef9 is described below
commit 9232ef9b6a4f025f58622d2d2c3b41fa5c29fb18
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Feb 4 15:45:04 2022 +0100
SLING-11123 : Multiple puts with same key are not handled correctly
---
.../org/apache/sling/api/scripting/LazyBindings.java | 4 +++-
.../org/apache/sling/api/scripting/LazyBindingsTest.java | 16 +++++++++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/src/main/java/org/apache/sling/api/scripting/LazyBindings.java b/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
index 4acb4e5..d44acd2 100644
--- a/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
+++ b/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
@@ -74,11 +74,13 @@ public class LazyBindings extends HashMap<String, Object> implements Bindings {
@Override
public Object put(String key, Object value) {
- Object previous = super.get(key);
+ Object previous = this.get(key);
if (value instanceof LazyBindings.Supplier) {
suppliers.put(key, (LazyBindings.Supplier) value);
+ super.remove(key);
} else {
super.put(key, value);
+ suppliers.remove(key);
}
return previous;
}
diff --git a/src/test/java/org/apache/sling/api/scripting/LazyBindingsTest.java b/src/test/java/org/apache/sling/api/scripting/LazyBindingsTest.java
index 65a65bf..a50b45c 100644
--- a/src/test/java/org/apache/sling/api/scripting/LazyBindingsTest.java
+++ b/src/test/java/org/apache/sling/api/scripting/LazyBindingsTest.java
@@ -84,7 +84,7 @@ public class LazyBindingsTest {
public void testPut() {
assertFalse(usedSuppliers.contains(THE_QUESTION));
Object supplierProvidedValueReplacement = lazyBindings.put(THE_QUESTION, 43);
- assertNull(supplierProvidedValueReplacement);
+ assertEquals(42, supplierProvidedValueReplacement);
assertEquals(43, lazyBindings.get(THE_QUESTION));
lazyBindings.put("putSupplier", (LazyBindings.Supplier) () -> {
@@ -206,6 +206,20 @@ public class LazyBindingsTest {
assertFalse(usedSuppliers.contains(supplierName));
}
+ @Test
+ public void testMultiplePuts() {
+ final LazyBindings bindings = new LazyBindings();
+ bindings.put("foo", "bar");
+ bindings.put("foo", new LazyBindings.Supplier() {
+
+ @Override
+ public Object get() {
+ return "lazybar";
+ }
+ });
+ assertEquals("lazybar", bindings.get("foo"));
+ }
+
private class TestSupplier implements LazyBindings.Supplier {
private final String name;