Package com.fasterxml.jackson.jr.ob.impl
Class ValueReaderLocator
- java.lang.Object
-
- com.fasterxml.jackson.jr.ob.impl.ValueLocatorBase
-
- com.fasterxml.jackson.jr.ob.impl.ValueReaderLocator
-
public class ValueReaderLocator extends ValueLocatorBase
Helper object used for efficient detection of type information relevant to our conversion needs when writing out Java Objects as JSON.Note that usage pattern is such that a single "root" instance is kept by each
JSON
instance; and an actual per-operation instance must be constructed by callingperOperationInstance(com.fasterxml.jackson.jr.ob.impl.JSONReader, int)
: reason for this is that instances use simple caching to handle the common case of repeating types within JSON Arrays.
-
-
Field Summary
Fields Modifier and Type Field Description protected int
_features
Feature flags that are enabledprotected java.util.Map<ClassKey,ValueReader>
_incompleteReaders
During resolution, some readers may be in-progress, but need to be linked: for example, with cyclic type references.protected java.util.concurrent.ConcurrentHashMap<ClassKey,ValueReader>
_knownReaders
Set ofValueReader
s that we have resolvedprotected JSONReader
_readContext
protected java.lang.Object
_readerLock
Object used for mutex during construction of a Bean deserializer: necessary to avoid race conditions during handling of cyclic dependencies.protected ReaderWriterModifier
_readerModifier
Provider for reader customizer, if any; may be null.protected ReaderWriterProvider
_readerProvider
Provider for custom readers, if any; may be null.protected TypeResolver
_typeResolver
For generic containers (Collections, Maps, arrays), we may need this guy.protected static int
MAX_CACHED_READERS
While we should be able to cache all types in the active working set, we should also avoid potential unbounded retention, since there is often just one big instance per JVM (or at least ClassLoader).-
Fields inherited from class com.fasterxml.jackson.jr.ob.impl.ValueLocatorBase
CACHE_FLAGS, SER_BOOLEAN, SER_BOOLEAN_ARRAY, SER_BYTE_ARRAY, SER_CALENDAR, SER_CHAR, SER_CHAR_ARRAY, SER_CHARACTER_SEQUENCE, SER_CLASS, SER_COLLECTION, SER_DATE, SER_ENUM, SER_FILE, SER_INT_ARRAY, SER_ITERABLE, SER_LIST, SER_LONG_ARRAY, SER_MAP, SER_NUMBER_BIG_DECIMAL, SER_NUMBER_BIG_INTEGER, SER_NUMBER_BYTE, SER_NUMBER_DOUBLE, SER_NUMBER_FLOAT, SER_NUMBER_INTEGER, SER_NUMBER_LONG, SER_NUMBER_SHORT, SER_OBJECT_ARRAY, SER_STRING, SER_TREE_NODE, SER_UNKNOWN, SER_URI, SER_URL, SER_UUID
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ValueReaderLocator(ReaderWriterProvider rwp, ReaderWriterModifier rwm)
Constructor for the blueprint instanceprotected
ValueReaderLocator(ValueReaderLocator base, int features, JSONReader r)
protected
ValueReaderLocator(ValueReaderLocator base, ReaderWriterProvider rwp, ReaderWriterModifier rwm)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ValueReader
_createReader(java.lang.Class<?> contextType, java.lang.Class<?> type, java.lang.reflect.Type genericType)
protected POJODefinition
_resolveBeanDef(java.lang.Class<?> raw)
protected BeanReader
_resolveBeanForDeser(java.lang.Class<?> raw, POJODefinition beanDef)
protected ValueReader
arrayReader(java.lang.Class<?> contextType, java.lang.Class<?> arrayType)
protected ValueReader
beanReader(java.lang.Class<?> type)
static ValueReaderLocator
blueprint(ReaderWriterProvider rwp, ReaderWriterModifier rwm)
protected ValueReader
collectionReader(java.lang.Class<?> collectionType, ResolvedType valueType)
protected ValueReader
collectionReader(java.lang.Class<?> contextType, java.lang.reflect.Type collectionType)
protected ValueReader
createReader(java.lang.Class<?> contextType, java.lang.Class<?> type, java.lang.reflect.Type genericType)
Factory method for creating standard readers of any declared type.protected ValueReader
enumReader(java.lang.Class<?> enumType)
ValueReader
findReader(java.lang.Class<?> raw)
Method used during deserialization to find handler for given non-generic type: will first check for already resolved (and cached) readers -- and return if one found -- and then if no cached reader found, create one, cache, return.protected ValueReader
mapReader(java.lang.Class<?> mapType, ResolvedType valueType)
protected ValueReader
mapReader(java.lang.Class<?> contextType, java.lang.reflect.Type mapType)
ValueReaderLocator
perOperationInstance(JSONReader r, int features)
ReaderWriterModifier
readerWriterModifier()
ReaderWriterProvider
readerWriterProvider()
ValueReaderLocator
with(ReaderWriterModifier rwm)
ValueReaderLocator
with(ReaderWriterProvider rwp)
-
Methods inherited from class com.fasterxml.jackson.jr.ob.impl.ValueLocatorBase
_findSimpleType
-
-
-
-
Field Detail
-
MAX_CACHED_READERS
protected static final int MAX_CACHED_READERS
While we should be able to cache all types in the active working set, we should also avoid potential unbounded retention, since there is often just one big instance per JVM (or at least ClassLoader).- See Also:
- Constant Field Values
-
_typeResolver
protected final TypeResolver _typeResolver
For generic containers (Collections, Maps, arrays), we may need this guy.
-
_readerProvider
protected final ReaderWriterProvider _readerProvider
Provider for custom readers, if any; may be null.- Since:
- 2.10
-
_readerModifier
protected final ReaderWriterModifier _readerModifier
Provider for reader customizer, if any; may be null.- Since:
- 2.11
-
_knownReaders
protected final java.util.concurrent.ConcurrentHashMap<ClassKey,ValueReader> _knownReaders
Set ofValueReader
s that we have resolved
-
_incompleteReaders
protected java.util.Map<ClassKey,ValueReader> _incompleteReaders
During resolution, some readers may be in-progress, but need to be linked: for example, with cyclic type references.
-
_readerLock
protected final java.lang.Object _readerLock
Object used for mutex during construction of a Bean deserializer: necessary to avoid race conditions during handling of cyclic dependencies.
-
_features
protected final int _features
Feature flags that are enabled
-
_readContext
protected final JSONReader _readContext
-
-
Constructor Detail
-
ValueReaderLocator
protected ValueReaderLocator(ReaderWriterProvider rwp, ReaderWriterModifier rwm)
Constructor for the blueprint instance
-
ValueReaderLocator
protected ValueReaderLocator(ValueReaderLocator base, int features, JSONReader r)
-
ValueReaderLocator
protected ValueReaderLocator(ValueReaderLocator base, ReaderWriterProvider rwp, ReaderWriterModifier rwm)
-
-
Method Detail
-
blueprint
public static final ValueReaderLocator blueprint(ReaderWriterProvider rwp, ReaderWriterModifier rwm)
-
with
public ValueReaderLocator with(ReaderWriterProvider rwp)
-
with
public ValueReaderLocator with(ReaderWriterModifier rwm)
-
perOperationInstance
public ValueReaderLocator perOperationInstance(JSONReader r, int features)
-
readerWriterProvider
public ReaderWriterProvider readerWriterProvider()
-
readerWriterModifier
public ReaderWriterModifier readerWriterModifier()
-
findReader
public ValueReader findReader(java.lang.Class<?> raw)
Method used during deserialization to find handler for given non-generic type: will first check for already resolved (and cached) readers -- and return if one found -- and then if no cached reader found, create one, cache, return.- Parameters:
raw
- Type-erased type of value to find reader for- Returns:
- ValueReader to use for given type
-
createReader
protected ValueReader createReader(java.lang.Class<?> contextType, java.lang.Class<?> type, java.lang.reflect.Type genericType)
Factory method for creating standard readers of any declared type.- Parameters:
contextType
- Context for resolving generic type parameterstype
- Type-erased type of value to construct reader forgenericType
- Full (possibly) generic type of value to construct reader for (important forMap
,Collection
).
-
_createReader
protected ValueReader _createReader(java.lang.Class<?> contextType, java.lang.Class<?> type, java.lang.reflect.Type genericType)
-
arrayReader
protected ValueReader arrayReader(java.lang.Class<?> contextType, java.lang.Class<?> arrayType)
-
enumReader
protected ValueReader enumReader(java.lang.Class<?> enumType)
-
collectionReader
protected ValueReader collectionReader(java.lang.Class<?> contextType, java.lang.reflect.Type collectionType)
-
collectionReader
protected ValueReader collectionReader(java.lang.Class<?> collectionType, ResolvedType valueType)
-
mapReader
protected ValueReader mapReader(java.lang.Class<?> contextType, java.lang.reflect.Type mapType)
-
mapReader
protected ValueReader mapReader(java.lang.Class<?> mapType, ResolvedType valueType)
-
beanReader
protected ValueReader beanReader(java.lang.Class<?> type)
-
_resolveBeanDef
protected POJODefinition _resolveBeanDef(java.lang.Class<?> raw)
-
_resolveBeanForDeser
protected BeanReader _resolveBeanForDeser(java.lang.Class<?> raw, POJODefinition beanDef)
-
-