public class ExternalTypeHandler
extends java.lang.Object
JsonTypeInfo.As.EXTERNAL_PROPERTY
).
This is needed to store temporary state and buffer tokens, as the structure is
rearranged a bit so that actual type deserializer can resolve type and
finalize deserialization.Modifier and Type | Class and Description |
---|---|
static class |
ExternalTypeHandler.Builder |
private static class |
ExternalTypeHandler.ExtTypedProperty |
Modifier and Type | Field and Description |
---|---|
private JavaType |
_beanType |
private java.util.Map<java.lang.String,java.lang.Object> |
_nameToPropertyIndex
Mapping from external property ids to one or more indexes;
in most cases single index as
Integer , but
occasionally same name maps to multiple ones: if so,
List<Integer> . |
private ExternalTypeHandler.ExtTypedProperty[] |
_properties |
private TokenBuffer[] |
_tokens |
private java.lang.String[] |
_typeIds |
Modifier | Constructor and Description |
---|---|
protected |
ExternalTypeHandler(ExternalTypeHandler h) |
protected |
ExternalTypeHandler(JavaType beanType,
ExternalTypeHandler.ExtTypedProperty[] properties,
java.util.Map<java.lang.String,java.lang.Object> nameToPropertyIndex,
java.lang.String[] typeIds,
TokenBuffer[] tokens) |
Modifier and Type | Method and Description |
---|---|
protected java.lang.Object |
_deserialize(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
int index,
java.lang.String typeId) |
protected void |
_deserializeAndSet(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
java.lang.Object bean,
int index,
java.lang.String typeId) |
private boolean |
_handleTypePropertyValue(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
java.lang.String propName,
java.lang.Object bean,
java.lang.String typeId,
int index) |
static ExternalTypeHandler.Builder |
builder(JavaType beanType) |
java.lang.Object |
complete(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
java.lang.Object bean)
Method called after JSON Object closes, and has to ensure that all external
type ids have been handled.
|
java.lang.Object |
complete(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
PropertyValueBuffer buffer,
PropertyBasedCreator creator)
Variant called when creation of the POJO involves buffering of creator properties
as well as property-based creator.
|
boolean |
handlePropertyValue(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
java.lang.String propName,
java.lang.Object bean)
Method called to ask handler to handle value of given property,
at point where parser points to the first token of the value.
|
boolean |
handleTypePropertyValue(com.fasterxml.jackson.core.JsonParser p,
DeserializationContext ctxt,
java.lang.String propName,
java.lang.Object bean)
Method called to see if given property/value pair is an external type
id; and if so handle it.
|
ExternalTypeHandler |
start()
Method called to start collection process by creating non-blueprint
instances.
|
private final JavaType _beanType
private final ExternalTypeHandler.ExtTypedProperty[] _properties
private final java.util.Map<java.lang.String,java.lang.Object> _nameToPropertyIndex
Integer
, but
occasionally same name maps to multiple ones: if so,
List<Integer>
.private final java.lang.String[] _typeIds
private final TokenBuffer[] _tokens
protected ExternalTypeHandler(JavaType beanType, ExternalTypeHandler.ExtTypedProperty[] properties, java.util.Map<java.lang.String,java.lang.Object> nameToPropertyIndex, java.lang.String[] typeIds, TokenBuffer[] tokens)
protected ExternalTypeHandler(ExternalTypeHandler h)
public static ExternalTypeHandler.Builder builder(JavaType beanType)
public ExternalTypeHandler start()
public boolean handleTypePropertyValue(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, java.lang.String propName, java.lang.Object bean) throws java.io.IOException
handlePropertyValue(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, java.lang.String, java.lang.Object)
should be called instead.java.io.IOException
private final boolean _handleTypePropertyValue(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, java.lang.String propName, java.lang.Object bean, java.lang.String typeId, int index) throws java.io.IOException
java.io.IOException
public boolean handlePropertyValue(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, java.lang.String propName, java.lang.Object bean) throws java.io.IOException
java.io.IOException
public java.lang.Object complete(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, java.lang.Object bean) throws java.io.IOException
java.io.IOException
public java.lang.Object complete(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, PropertyValueBuffer buffer, PropertyBasedCreator creator) throws java.io.IOException
java.io.IOException
protected final java.lang.Object _deserialize(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, int index, java.lang.String typeId) throws java.io.IOException
java.io.IOException
protected final void _deserializeAndSet(com.fasterxml.jackson.core.JsonParser p, DeserializationContext ctxt, java.lang.Object bean, int index, java.lang.String typeId) throws java.io.IOException
java.io.IOException