Package org.apache.groovy.json.internal
Class LazyValueMap
java.lang.Object
java.util.AbstractMap<java.lang.String,java.lang.Object>
org.apache.groovy.json.internal.LazyValueMap
- All Implemented Interfaces:
java.util.Map<java.lang.String,java.lang.Object>
,ValueMap<java.lang.String,java.lang.Object>
public class LazyValueMap extends java.util.AbstractMap<java.lang.String,java.lang.Object> implements ValueMap<java.lang.String,java.lang.Object>
This class is important to the performance of the parser.
It stores Value objects in a map where they are evaluated lazily.
This is great for JSONPath types of application, and Object Serialization but not for maps that are going to be stored in a cache.
This is because the Value construct is a type of index overlay that merely tracks where the token is located in the buffer,
and what if any thing we noted about it (like can be converted to a decimal number, etc.).
To mitigate memory leaks this class along with CharSequenceValue implement two constructs, namely,
chop, and lazyChop.
A chop is when we convert backing buffer of a Value object into a smaller buffer.
A lazyChop is when we do a chop but only when a get operation is called.
The lazyChop is performed on the tree that is touched by the JSONPath expression or its ilk.
The chop operation can be done during parsing or lazily by storing the values in this construct.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.util.AbstractMap
java.util.AbstractMap.SimpleEntry<K extends java.lang.Object,V extends java.lang.Object>, java.util.AbstractMap.SimpleImmutableEntry<K extends java.lang.Object,V extends java.lang.Object>
Nested classes/interfaces inherited from interface java.util.Map
java.util.Map.Entry<K extends java.lang.Object,V extends java.lang.Object>
-
Constructor Summary
Constructors Constructor Description LazyValueMap(boolean lazyChop)
LazyValueMap(boolean lazyChop, int initialSize)
-
Method Summary
Modifier and Type Method Description void
add(MapItemValue miv)
Adds a new MapItemValue to the mapping.void
chopMap()
Chop this map.java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>>
entrySet()
java.lang.Object
get(java.lang.Object key)
Gets the item by key from the mapping.boolean
hydrated()
Has the map been hydrated.java.util.Map.Entry<java.lang.String,Value>[]
items()
Give me the items in the map without hydrating the map.int
len()
Return size w/o hydrating the map.Value
put(java.lang.String key, java.lang.Object value)
int
size()
java.lang.String
toString()
java.util.Collection<java.lang.Object>
values()
Methods inherited from class java.util.AbstractMap
clear, clone, containsKey, containsValue, equals, hashCode, isEmpty, keySet, putAll, remove
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, getOrDefault, hashCode, isEmpty, keySet, merge, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll
-
Constructor Details
-
LazyValueMap
public LazyValueMap(boolean lazyChop) -
LazyValueMap
public LazyValueMap(boolean lazyChop, int initialSize)
-
-
Method Details
-
add
Adds a new MapItemValue to the mapping. -
get
public final java.lang.Object get(java.lang.Object key)Gets the item by key from the mapping.- Specified by:
get
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Overrides:
get
in classjava.util.AbstractMap<java.lang.String,java.lang.Object>
- Parameters:
key
- to lookup- Returns:
- the item for the given key
-
chopMap
public final void chopMap()Chop this map. -
put
- Specified by:
put
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Overrides:
put
in classjava.util.AbstractMap<java.lang.String,java.lang.Object>
-
entrySet
public java.util.Set<java.util.Map.Entry<java.lang.String,java.lang.Object>> entrySet()- Specified by:
entrySet
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Specified by:
entrySet
in classjava.util.AbstractMap<java.lang.String,java.lang.Object>
-
values
public java.util.Collection<java.lang.Object> values()- Specified by:
values
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Overrides:
values
in classjava.util.AbstractMap<java.lang.String,java.lang.Object>
-
size
public int size()- Specified by:
size
in interfacejava.util.Map<java.lang.String,java.lang.Object>
- Overrides:
size
in classjava.util.AbstractMap<java.lang.String,java.lang.Object>
-
toString
public java.lang.String toString()- Overrides:
toString
in classjava.util.AbstractMap<java.lang.String,java.lang.Object>
-
len
public int len()Description copied from interface:ValueMap
Return size w/o hydrating the map. -
hydrated
public boolean hydrated()Description copied from interface:ValueMap
Has the map been hydrated. -
items
Description copied from interface:ValueMap
Give me the items in the map without hydrating the map. Realize that the array is likely larger than the length so array items can be null.
-