SLING-8737 - Add support for lazily-evaluated bindings
* implemented equals and hashCode for LazyBindings, since the class
extends HashMap, but also has its own fields
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 8bbe55b..3dff1a6 100644
--- a/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
+++ b/src/main/java/org/apache/sling/api/scripting/LazyBindings.java
@@ -139,11 +139,6 @@
}
@Override
- public boolean containsValue(Object value) {
- return super.containsValue(value);
- }
-
- @Override
public Object get(Object key) {
String k = key.toString();
if (!super.containsKey(k) && suppliers.containsKey(k)) {
@@ -167,6 +162,23 @@
}
@Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o instanceof LazyBindings && super.equals(o)) {
+ LazyBindings other = (LazyBindings) o;
+ return suppliers.equals(other.suppliers);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode() + suppliers.hashCode();
+ }
+
+ @Override
public Object getOrDefault(Object key, Object defaultValue) {
Object result = get(key);
if (result == null) {