Class LazyBindings
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- java.util.HashMap<String,Object>
-
- org.apache.sling.api.scripting.LazyBindings
-
- Direct Known Subclasses:
SlingBindings
@ConsumerType public class LazyBindings extends HashMap<String,Object> implements Bindings
The
LazyBindings
wraps another map and dynamically provides entries for the wrapped map through a map ofLazyBindings.Supplier
s.When
get(Object)
is called with akey
that's not present in the wrapped map, then theLazyBindings.Supplier
s map will be queried and, if an entry exists for that key, theLazyBindings.Supplier
-generated value will be used to populate the wrapped map.While the
keySet()
andcontainsKey(Object)
will also check the keys present in theLazyBindings.Supplier
s map, all other methods (e.g.values()
,HashMap.containsValue(Object)
) will only deal with the contents of the wrapped map.entrySet()
will however return a merged view of both theLazyBindings.Supplier
s and the wrapped map, so that copies to otherLazyBindings
maps preserve the functionality of having lazily-evaluated bindings.This class does not provide any thread-safety guarantees. If
this
Bindings
map needs to be used in a concurrent setup it's the responsibility of the caller to synchronize access. The simplest way would be to wrap it throughCollections.synchronizedMap(Map)
.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
LazyBindings.Supplier
This marker interface should be used for suppliers which should be unwrapped when used as values stored in aLazyBindings
map.-
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
-
-
Constructor Summary
Constructors Constructor Description LazyBindings()
LazyBindings(Map<String,LazyBindings.Supplier> suppliers)
LazyBindings(Map<String,LazyBindings.Supplier> suppliers, Map<String,Object> wrapped)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
boolean
containsKey(Object key)
@NotNull Set<Map.Entry<String,Object>>
entrySet()
boolean
equals(Object o)
Object
get(Object key)
Object
getOrDefault(Object key, Object defaultValue)
int
hashCode()
boolean
isEmpty()
@NotNull Set<String>
keySet()
Object
put(String key, Object value)
void
putAll(Map<? extends String,?> toMerge)
Object
remove(Object key)
int
size()
@NotNull Collection<Object>
values()
-
Methods inherited from class java.util.HashMap
clone, compute, computeIfAbsent, computeIfPresent, containsValue, forEach, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Methods inherited from class java.util.AbstractMap
toString
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, containsValue, forEach, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Constructor Detail
-
LazyBindings
public LazyBindings()
-
LazyBindings
public LazyBindings(Map<String,LazyBindings.Supplier> suppliers)
-
-
Method Detail
-
clear
public void clear()
-
values
@NotNull public @NotNull Collection<Object> values()
-
size
public int size()
-
isEmpty
public boolean isEmpty()
-
containsKey
public boolean containsKey(Object key)
- Specified by:
containsKey
in interfaceBindings
- Specified by:
containsKey
in interfaceMap<String,Object>
- Overrides:
containsKey
in classHashMap<String,Object>
-
equals
public boolean equals(Object o)
-
hashCode
public int hashCode()
-
-