Class LazyBindings
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- java.util.HashMap<java.lang.String,java.lang.Object>
-
- org.apache.sling.api.scripting.LazyBindings
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,java.util.Map<java.lang.String,java.lang.Object>,javax.script.Bindings
- Direct Known Subclasses:
SlingBindings
@ConsumerType public class LazyBindings extends java.util.HashMap<java.lang.String,java.lang.Object> implements javax.script.Bindings
The
LazyBindingswraps another map and dynamically provides entries for the wrapped map through a map ofLazyBindings.Suppliers.When
get(Object)is called with akeythat's not present in the wrapped map, then theLazyBindings.Suppliers 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.Suppliers 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.Suppliers and the wrapped map, so that copies to otherLazyBindingsmaps preserve the functionality of having lazily-evaluated bindings.This class does not provide any thread-safety guarantees. If
thisBindingsmap 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 interfaceLazyBindings.SupplierThis marker interface should be used for suppliers which should be unwrapped when used as values stored in aLazyBindingsmap.
-
Constructor Summary
Constructors Constructor Description LazyBindings()LazyBindings(java.util.Map<java.lang.String,LazyBindings.Supplier> suppliers)LazyBindings(java.util.Map<java.lang.String,LazyBindings.Supplier> suppliers, java.util.Map<java.lang.String,java.lang.Object> wrapped)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()booleancontainsKey(java.lang.Object key)@NotNull java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>>entrySet()booleanequals(java.lang.Object o)java.lang.Objectget(java.lang.Object key)java.lang.ObjectgetOrDefault(java.lang.Object key, java.lang.Object defaultValue)inthashCode()booleanisEmpty()@NotNull java.util.Set<java.lang.String>keySet()java.lang.Objectput(java.lang.String key, java.lang.Object value)voidputAll(java.util.Map<? extends java.lang.String,?> toMerge)java.lang.Objectremove(java.lang.Object key)intsize()@NotNull java.util.Collection<java.lang.Object>values()
-
-
-
Constructor Detail
-
LazyBindings
public LazyBindings()
-
LazyBindings
public LazyBindings(java.util.Map<java.lang.String,LazyBindings.Supplier> suppliers)
-
LazyBindings
public LazyBindings(java.util.Map<java.lang.String,LazyBindings.Supplier> suppliers, java.util.Map<java.lang.String,java.lang.Object> wrapped)
-
-
Method Detail
-
put
public java.lang.Object put(java.lang.String key, java.lang.Object value)- Specified by:
putin interfacejavax.script.Bindings- Specified by:
putin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
putin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
putAll
public void putAll(java.util.Map<? extends java.lang.String,?> toMerge)
- Specified by:
putAllin interfacejavax.script.Bindings- Specified by:
putAllin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
putAllin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
clear
public void clear()
- Specified by:
clearin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
clearin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
keySet
@NotNull public @NotNull java.util.Set<java.lang.String> keySet()
- Specified by:
keySetin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
keySetin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
values
@NotNull public @NotNull java.util.Collection<java.lang.Object> values()
- Specified by:
valuesin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
valuesin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
entrySet
@NotNull public @NotNull java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>> entrySet()
- Specified by:
entrySetin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
entrySetin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
size
public int size()
- Specified by:
sizein interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
sizein classjava.util.HashMap<java.lang.String,java.lang.Object>
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmptyin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
isEmptyin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
containsKey
public boolean containsKey(java.lang.Object key)
- Specified by:
containsKeyin interfacejavax.script.Bindings- Specified by:
containsKeyin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
containsKeyin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
get
public java.lang.Object get(java.lang.Object key)
- Specified by:
getin interfacejavax.script.Bindings- Specified by:
getin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
getin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
remove
public java.lang.Object remove(java.lang.Object key)
- Specified by:
removein interfacejavax.script.Bindings- Specified by:
removein interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
removein classjava.util.HashMap<java.lang.String,java.lang.Object>
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equalsin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
equalsin classjava.util.AbstractMap<java.lang.String,java.lang.Object>
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
hashCodein classjava.util.AbstractMap<java.lang.String,java.lang.Object>
-
getOrDefault
public java.lang.Object getOrDefault(java.lang.Object key, java.lang.Object defaultValue)- Specified by:
getOrDefaultin interfacejava.util.Map<java.lang.String,java.lang.Object>- Overrides:
getOrDefaultin classjava.util.HashMap<java.lang.String,java.lang.Object>
-
-