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

org.codehaus.jackson.map.deser

## Class SettableAnyProperty

- java.lang.Object
- - org.codehaus.jackson.map.deser.SettableAnyProperty

-     public final class SettableAnyProperty
      extends Object

  Class that represents a "wildcard" set method which can be used to generically set values of otherwise unmapped (aka "unknown") properties read from Json content.

  !!! Note: might make sense to refactor to share some code with `SettableBeanProperty`?

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected BeanProperty` | `_property` Method used for setting "any" properties, along with annotation information.
    `protected Method` | `_setter` Physical JDK object used for assigning properties.
    `protected JavaType` | `_type`
    `protected JsonDeserializer<Object>` | `_valueDeserializer`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SettableAnyProperty(BeanProperty property, AnnotatedMethod setter, JavaType type)` Deprecated. Since 1.9 - use variant that takes deserializer
    `SettableAnyProperty(BeanProperty property, AnnotatedMethod setter, JavaType type, JsonDeserializer<Object> valueDeser)`
    `SettableAnyProperty(BeanProperty property, Method rawSetter, JavaType type, JsonDeserializer<Object> valueDeser)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_throwAsIOE(Exception e, String propName, Object value)`
    `Object` | `deserialize(JsonParser jp, DeserializationContext ctxt)`
    `void` | `deserializeAndSet(JsonParser jp, DeserializationContext ctxt, Object instance, String propName)` Method called to deserialize appropriate value, given parser (and context), and set it using appropriate method (a setter method).
    `BeanProperty` | `getProperty()`
    `JavaType` | `getType()`
    `boolean` | `hasValueDeserializer()`
    `void` | `set(Object instance, String propName, Object value)`
    `void` | `setValueDeserializer(JsonDeserializer<Object> deser)` Deprecated. Since 1.9 - construct with deserializer
    `String` | `toString()`
    `SettableAnyProperty` | `withValueDeserializer(JsonDeserializer<Object> deser)`

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

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

- - ### Field Detail

    - #### _property

          protected final BeanProperty _property

      Method used for setting "any" properties, along with annotation information. Retained to allow contextualization of any properties.
      Since:
        1.7

    - #### _setter

          protected final Method _setter

      Physical JDK object used for assigning properties.

    - #### _type

          protected final JavaType _type

    - #### _valueDeserializer

          protected JsonDeserializer<Object> _valueDeserializer

  - ### Constructor Detail

    - #### SettableAnyProperty

          @Deprecated
          public SettableAnyProperty(BeanProperty property,
                                        AnnotatedMethod setter,
                                        JavaType type)

      Deprecated. Since 1.9 - use variant that takes deserializer

    - #### SettableAnyProperty

          public SettableAnyProperty(BeanProperty property,
                             AnnotatedMethod setter,
                             JavaType type,
                             JsonDeserializer<Object> valueDeser)

    - #### SettableAnyProperty

          public SettableAnyProperty(BeanProperty property,
                             Method rawSetter,
                             JavaType type,
                             JsonDeserializer<Object> valueDeser)

  - ### Method Detail

    - #### withValueDeserializer

          public SettableAnyProperty withValueDeserializer(JsonDeserializer<Object> deser)

    - #### setValueDeserializer

          @Deprecated
          public void setValueDeserializer(JsonDeserializer<Object> deser)

      Deprecated. Since 1.9 - construct with deserializer

    - #### getProperty

          public BeanProperty getProperty()

    - #### hasValueDeserializer

          public boolean hasValueDeserializer()

    - #### getType

          public JavaType getType()

    - #### deserializeAndSet

          public final void deserializeAndSet(JsonParser jp,
                               DeserializationContext ctxt,
                               Object instance,
                               String propName)
                                       throws IOException,
                                              JsonProcessingException

      Method called to deserialize appropriate value, given parser (and context), and set it using appropriate method (a setter method).
      Throws:
        `IOException`
        `JsonProcessingException`

    - #### deserialize

          public final Object deserialize(JsonParser jp,
                           DeserializationContext ctxt)
                                   throws IOException,
                                          JsonProcessingException

      Throws:
        `IOException`
        `JsonProcessingException`

    - #### set

          public final void set(Object instance,
                 String propName,
                 Object value)
                         throws IOException

      Throws:
        `IOException`

    - #### _throwAsIOE

          protected void _throwAsIOE(Exception e,
                         String propName,
                         Object value)
                              throws IOException

      Parameters:
        `e` - Exception to re-throw or wrap
        `propName` - Name of property (from Json input) to set
        `value` - Value of the property
      Throws:
        `IOException`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`