public class TypeDetector extends Object
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 calling
perOperationInstance(int)
: reason for this is that instances
use simple caching to handle the common case of repeating types
within JSON Arrays.
Modifier and Type | Field and Description |
---|---|
protected int |
_features |
protected Map<ClassKey,ValueReader> |
_incompleteReaders
During resolution, some readers may be in-progress, but need to be
linked: for example, with cyclic type references.
|
protected ClassKey |
_key
Reusable lookup key; only used by per-thread instances.
|
protected ConcurrentHashMap<ClassKey,ValueReader> |
_knownReaders
Set of
ValueReader s that we have resolved |
protected ConcurrentHashMap<ClassKey,Integer> |
_knownSerTypes
Mapping from classes to resolved type constants or indexes, to use
for serialization.
|
protected CopyOnWriteArrayList<BeanPropertyWriter[]> |
_knownWriters |
protected Class<?> |
_prevClass |
protected int |
_prevType |
protected Object |
_readerLock |
protected TypeResolver |
_typeResolver
For generic containers (Collections, Maps, arrays), we may need
this guy.
|
protected static int |
CACHE_FLAGS |
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
generally just one big `TypeDetector` instances per JVM (or at least
ClassLoader).
|
protected BeanPropertyWriter[] |
NO_PROPS_FOR_WRITE |
static int |
SER_BOOLEAN |
static int |
SER_BOOLEAN_ARRAY |
static int |
SER_BYTE_ARRAY |
static int |
SER_CALENDAR |
static int |
SER_CHAR |
static int |
SER_CHAR_ARRAY |
static int |
SER_CHARACTER_SEQUENCE |
static int |
SER_CLASS |
static int |
SER_COLLECTION
All kinds of
Collection s other than List s |
static int |
SER_DATE |
static int |
SER_ENUM |
static int |
SER_FILE |
static int |
SER_INT_ARRAY |
static int |
SER_ITERABLE
Anything that implements
Iterable , but not
Collection . |
static int |
SER_LIST
All kinds of
List s. |
static int |
SER_LONG_ARRAY |
static int |
SER_MAP
All kinds of
Map s. |
static int |
SER_NUMBER_BIG_DECIMAL |
static int |
SER_NUMBER_BIG_INTEGER |
static int |
SER_NUMBER_BYTE |
static int |
SER_NUMBER_DOUBLE |
static int |
SER_NUMBER_FLOAT |
static int |
SER_NUMBER_INTEGER |
static int |
SER_NUMBER_LONG |
static int |
SER_NUMBER_SHORT |
static int |
SER_OBJECT_ARRAY
Arrays of non-primitive types
|
static int |
SER_STRING |
static int |
SER_TREE_NODE
An implementation of
TreeNode |
static int |
SER_UNKNOWN
Type not yet resolved
|
static int |
SER_URI |
static int |
SER_URL |
static int |
SER_UUID |
Modifier | Constructor and Description |
---|---|
protected |
TypeDetector(int features)
Constructor for the blueprint instance
|
protected |
TypeDetector(TypeDetector base,
int features) |
Modifier and Type | Method and Description |
---|---|
protected int |
_findPOJOSerializationType(Class<?> raw) |
protected int |
_findSimple(Class<?> raw,
boolean forSer) |
protected BeanReader |
_resolveBeanForDeser(Class<?> raw) |
static TypeDetector |
blueprint(int features) |
protected ValueReader |
collectionReader(Class<?> collectionType,
ResolvedType valueType) |
protected ValueReader |
collectionReader(Class<?> contextType,
Type collectionType) |
protected ValueReader |
createReader(Class<?> contextType,
Class<?> type,
Type genericType) |
ValueReader |
enumReader(Class<?> enumType) |
ValueReader |
findReader(Class<?> raw)
Method used during deserialization to find handler for given
non-generic type.
|
int |
findSerializationType(Class<?> raw)
The main lookup method used to find type identifier for
given raw class; including Bean types (if allowed).
|
BeanPropertyWriter[] |
getPropertyWriters(int index) |
protected ValueReader |
mapReader(Class<?> mapType,
ResolvedType valueType) |
protected ValueReader |
mapReader(Class<?> contextType,
Type mapType) |
TypeDetector |
perOperationInstance(int features) |
protected BeanPropertyWriter[] |
resolveBeanForSer(Class<?> raw,
POJODefinition classDef) |
protected POJODefinition |
resolvePOJODefinition(Class<?> raw) |
protected final BeanPropertyWriter[] NO_PROPS_FOR_WRITE
protected static final int MAX_CACHED_READERS
public static final int SER_UNKNOWN
public static final int SER_MAP
Map
s.public static final int SER_LIST
List
s.public static final int SER_COLLECTION
Collection
s other than List
spublic static final int SER_OBJECT_ARRAY
public static final int SER_INT_ARRAY
public static final int SER_LONG_ARRAY
public static final int SER_BOOLEAN_ARRAY
public static final int SER_TREE_NODE
TreeNode
public static final int SER_STRING
public static final int SER_CHARACTER_SEQUENCE
public static final int SER_CHAR_ARRAY
public static final int SER_BYTE_ARRAY
public static final int SER_NUMBER_BYTE
public static final int SER_NUMBER_SHORT
public static final int SER_NUMBER_INTEGER
public static final int SER_NUMBER_LONG
public static final int SER_NUMBER_FLOAT
public static final int SER_NUMBER_DOUBLE
public static final int SER_NUMBER_BIG_INTEGER
public static final int SER_NUMBER_BIG_DECIMAL
public static final int SER_BOOLEAN
public static final int SER_CHAR
public static final int SER_ENUM
public static final int SER_DATE
public static final int SER_CALENDAR
public static final int SER_CLASS
public static final int SER_FILE
public static final int SER_UUID
public static final int SER_URL
public static final int SER_URI
public static final int SER_ITERABLE
Iterable
, but not
Collection
.protected static final int CACHE_FLAGS
protected final ConcurrentHashMap<ClassKey,Integer> _knownSerTypes
protected final CopyOnWriteArrayList<BeanPropertyWriter[]> _knownWriters
protected final TypeResolver _typeResolver
protected final ConcurrentHashMap<ClassKey,ValueReader> _knownReaders
ValueReader
s that we have resolvedprotected Map<ClassKey,ValueReader> _incompleteReaders
protected final Object _readerLock
protected ClassKey _key
protected Class<?> _prevClass
protected int _prevType
protected int _features
protected TypeDetector(int features)
protected TypeDetector(TypeDetector base, int features)
public static final TypeDetector blueprint(int features)
public TypeDetector perOperationInstance(int features)
protected POJODefinition resolvePOJODefinition(Class<?> raw)
protected int _findSimple(Class<?> raw, boolean forSer)
public BeanPropertyWriter[] getPropertyWriters(int index)
public final int findSerializationType(Class<?> raw)
protected int _findPOJOSerializationType(Class<?> raw)
protected BeanPropertyWriter[] resolveBeanForSer(Class<?> raw, POJODefinition classDef)
public ValueReader enumReader(Class<?> enumType)
protected ValueReader collectionReader(Class<?> contextType, Type collectionType)
protected ValueReader collectionReader(Class<?> collectionType, ResolvedType valueType)
protected ValueReader mapReader(Class<?> contextType, Type mapType)
protected ValueReader mapReader(Class<?> mapType, ResolvedType valueType)
public ValueReader findReader(Class<?> raw)
protected ValueReader createReader(Class<?> contextType, Class<?> type, Type genericType)
protected BeanReader _resolveBeanForDeser(Class<?> raw)
Copyright © 2017. All rights reserved.