AsPropertyTypeDeserializer (Jackson JSON Processor)
Date: 2013-07-14

org.codehaus.jackson.map.jsontype.impl

## Class AsPropertyTypeDeserializer

- java.lang.Object
- - org.codehaus.jackson.map.TypeDeserializer
  - - org.codehaus.jackson.map.jsontype.impl.TypeDeserializerBase
    - - org.codehaus.jackson.map.jsontype.impl.AsArrayTypeDeserializer
      - - 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

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `_typePropertyName`

    - ### Fields inherited from class org.codehaus.jackson.map.jsontype.impl.TypeDeserializerBase

      `_baseType, _defaultImpl, _defaultImplDeserializer, _deserializers, _idResolver, _property`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AsPropertyTypeDeserializer(JavaType bt, TypeIdResolver idRes, BeanProperty property, Class<?> defaultImpl, String typePropName)`
    `AsPropertyTypeDeserializer(JavaType bt, TypeIdResolver idRes, BeanProperty property, String typePropName)` Deprecated.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Object` | `_deserializeIfNatural(JsonParser jp, DeserializationContext ctxt)` Helper method used to check if given parser might be pointing to a "natural" value, and one that would be acceptable as the result value (compatible with declared base type)
    `protected Object` | `_deserializeTypedUsingDefaultImpl(JsonParser jp, DeserializationContext ctxt, TokenBuffer tb)`
    `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

      `_findDefaultImplDeserializer, _findDeserializer, baseTypeName, getDefaultImpl, 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

          @Deprecated
          public AsPropertyTypeDeserializer(JavaType bt,
                                               TypeIdResolver idRes,
                                               BeanProperty property,
                                               String typePropName)

      Deprecated.

    - #### AsPropertyTypeDeserializer

          public AsPropertyTypeDeserializer(JavaType bt,
                                    TypeIdResolver idRes,
                                    BeanProperty property,
                                    Class<?> defaultImpl,
                                    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`

    - #### _deserializeTypedUsingDefaultImpl

          protected Object _deserializeTypedUsingDefaultImpl(JsonParser jp,
                                                 DeserializationContext ctxt,
                                                 TokenBuffer tb)
                                                      throws IOException,
                                                             JsonProcessingException

      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`

    - #### _deserializeIfNatural

          protected Object _deserializeIfNatural(JsonParser jp,
                                     DeserializationContext ctxt)
                                          throws IOException,
                                                 JsonProcessingException

      Helper method used to check if given parser might be pointing to a "natural" value, and one that would be acceptable as the result value (compatible with declared base type)
      Throws:
        `IOException`
        `JsonProcessingException`