org.codehaus.jackson.map.jsontype.impl
Class AsPropertyTypeDeserializer

java.lang.Object
  extended by org.codehaus.jackson.map.TypeDeserializer
      extended by org.codehaus.jackson.map.jsontype.impl.TypeDeserializerBase
          extended by org.codehaus.jackson.map.jsontype.impl.AsArrayTypeDeserializer
              extended by org.codehaus.jackson.map.jsontype.impl.AsPropertyTypeDeserializer

public class AsPropertyTypeDeserializer
extends AsArrayTypeDeserializer

Type deserializer used with JsonTypeInfo.As.PROPERTY inclusion mechanism. Uses regular form (additional key/value entry before actual data) when typed object is expressed as JSON Object; otherwise behaves similar to how JsonTypeInfo.As.WRAPPER_ARRAY works. Latter is used if JSON representation is polymorphic

Since:
1.5
Author:
tatu

Field Summary
protected  String _typePropertyName
           
 
Fields inherited from class org.codehaus.jackson.map.jsontype.impl.TypeDeserializerBase
_baseType, _deserializers, _idResolver, _property
 
Constructor Summary
AsPropertyTypeDeserializer(JavaType bt, TypeIdResolver idRes, BeanProperty property, String typePropName)
           
 
Method Summary
 Object deserializeTypedFromAny(JsonParser jp, DeserializationContext ctxt)
          Method called to let this type deserializer handle deserialization of "typed" object, when value itself may have been serialized using any kind of JSON value (Array, Object, scalar).
 Object deserializeTypedFromObject(JsonParser jp, DeserializationContext ctxt)
          This is the trickiest thing to handle, since property we are looking for may be anywhere...
 String getPropertyName()
          Name of property that contains type information, if property-based inclusion is used.
 JsonTypeInfo.As getTypeInclusion()
          Accessor for type information inclusion method that deserializer uses; indicates how type information is (expected to be) embedded in JSON input.
 
Methods inherited from class org.codehaus.jackson.map.jsontype.impl.AsArrayTypeDeserializer
_locateTypeId, deserializeTypedFromArray, deserializeTypedFromScalar
 
Methods inherited from class org.codehaus.jackson.map.jsontype.impl.TypeDeserializerBase
_findDeserializer, baseTypeName, getTypeIdResolver, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_typePropertyName

protected final String _typePropertyName
Constructor Detail

AsPropertyTypeDeserializer

public AsPropertyTypeDeserializer(JavaType bt,
                                  TypeIdResolver idRes,
                                  BeanProperty property,
                                  String typePropName)
Method Detail

getTypeInclusion

public JsonTypeInfo.As getTypeInclusion()
Description copied from class: TypeDeserializer
Accessor for type information inclusion method that deserializer uses; indicates how type information is (expected to be) embedded in JSON input.

Overrides:
getTypeInclusion in class AsArrayTypeDeserializer

getPropertyName

public String getPropertyName()
Description copied from class: TypeDeserializer
Name of property that contains type information, if property-based inclusion is used.

Overrides:
getPropertyName in class TypeDeserializerBase

deserializeTypedFromObject

public Object deserializeTypedFromObject(JsonParser jp,
                                         DeserializationContext ctxt)
                                  throws IOException,
                                         JsonProcessingException
This is the trickiest thing to handle, since property we are looking for may be anywhere...

Overrides:
deserializeTypedFromObject in class AsArrayTypeDeserializer
Throws:
IOException
JsonProcessingException

deserializeTypedFromAny

public Object deserializeTypedFromAny(JsonParser jp,
                                      DeserializationContext ctxt)
                               throws IOException,
                                      JsonProcessingException
Description copied from class: TypeDeserializer
Method called to let this type deserializer handle deserialization of "typed" object, when value itself may have been serialized using any kind of JSON value (Array, Object, scalar). Should only be called if JSON serialization is polymorphic (not Java type); for example when using JSON node representation, or "untyped" Java object (which may be Map, Collection, wrapper/primitive etc).

Overrides:
deserializeTypedFromAny in class AsArrayTypeDeserializer
Throws:
IOException
JsonProcessingException