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

org.codehaus.jackson.map.deser.impl

## Class ExternalTypeHandler

- java.lang.Object
- - org.codehaus.jackson.map.deser.impl.ExternalTypeHandler

-     public class ExternalTypeHandler
      extends Object

  Helper class that is used to flatten JSON structure when using "external type id" (see `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.
  Since:
    1.9

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `ExternalTypeHandler.Builder`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `ExternalTypeHandler(org.codehaus.jackson.map.deser.impl.ExternalTypeHandler.ExtTypedProperty[] properties, HashMap<String,Integer> nameToPropertyIndex, String[] typeIds, TokenBuffer[] tokens)`
    `protected` | `ExternalTypeHandler(ExternalTypeHandler h)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_deserialize(JsonParser jp, DeserializationContext ctxt, Object bean, int index)`
    `Object` | `complete(JsonParser jp, DeserializationContext ctxt, Object bean)`
    `boolean` | `handleToken(JsonParser jp, DeserializationContext ctxt, String propName, Object bean)` Method called to ask handler to handle
    `boolean` | `handleTypePropertyValue(JsonParser jp, DeserializationContext ctxt, String propName, Object bean)` Method called to see if given property/value pair is an external type id; and if so handle it.
    `ExternalTypeHandler` | `start()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ExternalTypeHandler

          protected ExternalTypeHandler(org.codehaus.jackson.map.deser.impl.ExternalTypeHandler.ExtTypedProperty[] properties,
                             HashMap<String,Integer> nameToPropertyIndex,
                             String[] typeIds,
                             TokenBuffer[] tokens)

    - #### ExternalTypeHandler

          protected ExternalTypeHandler(ExternalTypeHandler h)

  - ### Method Detail

    - #### start

          public ExternalTypeHandler start()

    - #### handleTypePropertyValue

          public boolean handleTypePropertyValue(JsonParser jp,
                                        DeserializationContext ctxt,
                                        String propName,
                                        Object bean)
                                          throws IOException,
                                                 JsonProcessingException

      Method called to see if given property/value pair is an external type id; and if so handle it. This is only to be called in case containing POJO has similarly named property as the external type id; otherwise `handleToken(org.codehaus.jackson.JsonParser, org.codehaus.jackson.map.DeserializationContext, java.lang.String, java.lang.Object)` should be called instead.
      Throws:
        `IOException`
        `JsonProcessingException`

    - #### handleToken

          public boolean handleToken(JsonParser jp,
                            DeserializationContext ctxt,
                            String propName,
                            Object bean)
                              throws IOException,
                                     JsonProcessingException

      Method called to ask handler to handle
      Throws:
        `IOException`
        `JsonProcessingException`

    - #### complete

          public Object complete(JsonParser jp,
                        DeserializationContext ctxt,
                        Object bean)
                          throws IOException,
                                 JsonProcessingException

      Throws:
        `IOException`
        `JsonProcessingException`

    - #### _deserialize

          protected final void _deserialize(JsonParser jp,
                          DeserializationContext ctxt,
                          Object bean,
                          int index)
                                     throws IOException,
                                            JsonProcessingException

      Throws:
        `IOException`
        `JsonProcessingException`