com.fasterxml.jackson.databind.deser.impl

## Class MergingSettableBeanProperty

- java.lang.Object
- - com.fasterxml.jackson.databind.introspect.ConcreteBeanPropertyBase
  - - com.fasterxml.jackson.databind.deser.SettableBeanProperty
    - - com.fasterxml.jackson.databind.deser.SettableBeanProperty.Delegating
      - - com.fasterxml.jackson.databind.deser.impl.MergingSettableBeanProperty

All Implemented Interfaces:
  BeanProperty, Named, Serializable

    public class MergingSettableBeanProperty
    extends SettableBeanProperty.Delegating

`SettableBeanProperty` implementation that will try to access value of the property first, and if non-null value found, pass that for update (using `JsonDeserializer.deserialize(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, Object)`) instead of constructing a new value. This is necessary to support "merging" properties.

Note that there are many similarities to `SetterlessProperty`, which predates this variant; and that one is even used in cases where there is no mutator available.

Since:
  2.9
See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from class com.fasterxml.jackson.databind.deser.SettableBeanProperty

`SettableBeanProperty.Delegating`

### Nested classes/interfaces inherited from interface com.fasterxml.jackson.databind.BeanProperty

`BeanProperty.Bogus, BeanProperty.Std`

### Field Summary

Fields
`protected AnnotatedMember` `_accessor` Member (field, method) used for accessing existing value.

### Fields inherited from class com.fasterxml.jackson.databind.deser.SettableBeanProperty.Delegating

`delegate`

### Fields inherited from class com.fasterxml.jackson.databind.deser.SettableBeanProperty

`_contextAnnotations, _managedReferenceName, _nullProvider, _objectIdInfo, _propertyIndex, _propName, _type, _valueDeserializer, _valueTypeDeserializer, _viewMatcher, _wrapperName, MISSING_VALUE_DESERIALIZER`

### Fields inherited from class com.fasterxml.jackson.databind.introspect.ConcreteBeanPropertyBase

`_aliases, _metadata, _propertyFormat`

### Fields inherited from interface com.fasterxml.jackson.databind.BeanProperty

`EMPTY_FORMAT, EMPTY_INCLUDE`

### Constructor Summary

Constructors
`protected` `MergingSettableBeanProperty(MergingSettableBeanProperty src, SettableBeanProperty delegate)`
`protected` `MergingSettableBeanProperty(SettableBeanProperty delegate, AnnotatedMember accessor)`

### Method Summary

Methods
`static MergingSettableBeanProperty` `construct(SettableBeanProperty delegate, AnnotatedMember accessor)`
`void` `deserializeAndSet(JsonParser p, DeserializationContext ctxt, Object instance)` Method called to deserialize appropriate value, given parser (and context), and set it using appropriate mechanism.
`Object` `deserializeSetAndReturn(JsonParser p, DeserializationContext ctxt, Object instance)` Alternative to `SettableBeanProperty.deserializeAndSet(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, java.lang.Object)` that returns either return value of setter method called (if one is), or null to indicate that no return value is available.
`void` `set(Object instance, Object value)` Method called to assign given value to this property, on specified Object.
`Object` `setAndReturn(Object instance, Object value)` Method called to assign given value to this property, on specified Object, and return whatever delegating accessor returned (if anything)
`protected SettableBeanProperty` `withDelegate(SettableBeanProperty d)` Method sub-classes must implement, to construct a new instance with given delegate.

### Methods inherited from class com.fasterxml.jackson.databind.deser.SettableBeanProperty.Delegating

`_with, assignIndex, fixAccess, getAnnotation, getCreatorIndex, getDeclaringClass, getDelegate, getInjectableValueId, getManagedReferenceName, getMember, getObjectIdInfo, getPropertyIndex, getValueDeserializer, getValueTypeDeserializer, hasValueDeserializer, hasValueTypeDeserializer, hasViews, visibleInView, withName, withNullProvider, withValueDeserializer`

### Methods inherited from class com.fasterxml.jackson.databind.deser.SettableBeanProperty

`_throwAsIOE, _throwAsIOE, _throwAsIOE, _throwAsIOE, depositSchemaProperty, deserialize, deserializeWith, getContextAnnotation, getFullName, getName, getNullValueProvider, getType, getWrapperName, isIgnorable, markAsIgnorable, setManagedReferenceName, setObjectIdInfo, setViews, toString, withSimpleName`

### Methods inherited from class com.fasterxml.jackson.databind.introspect.ConcreteBeanPropertyBase

`findAliases, findFormatOverrides, findPropertyFormat, findPropertyInclusion, getMetadata, isRequired, isVirtual`

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

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

### Field Detail

#### _accessor

    protected final AnnotatedMember _accessor

Member (field, method) used for accessing existing value.

### Constructor Detail

#### MergingSettableBeanProperty

    protected MergingSettableBeanProperty(SettableBeanProperty delegate,
                               AnnotatedMember accessor)

#### MergingSettableBeanProperty

    protected MergingSettableBeanProperty(MergingSettableBeanProperty src,
                               SettableBeanProperty delegate)

### Method Detail

#### construct

    public static MergingSettableBeanProperty construct(SettableBeanProperty delegate,
                                        AnnotatedMember accessor)

#### withDelegate

    protected SettableBeanProperty withDelegate(SettableBeanProperty d)

Description copied from class: `SettableBeanProperty.Delegating`
Method sub-classes must implement, to construct a new instance with given delegate.

Specified by:
  `withDelegate` in class `SettableBeanProperty.Delegating`

#### deserializeAndSet

    public void deserializeAndSet(JsonParser p,
                         DeserializationContext ctxt,
                         Object instance)
                           throws IOException

Description copied from class: `SettableBeanProperty`
Method called to deserialize appropriate value, given parser (and context), and set it using appropriate mechanism. Pre-condition is that passed parser must point to the first token that should be consumed to produce the value (the only value for scalars, multiple for Objects and Arrays).

Overrides:
  `deserializeAndSet` in class `SettableBeanProperty.Delegating`
Throws:
  `IOException`

#### deserializeSetAndReturn

    public Object deserializeSetAndReturn(JsonParser p,
                                 DeserializationContext ctxt,
                                 Object instance)
                                   throws IOException

Description copied from class: `SettableBeanProperty`
Alternative to `SettableBeanProperty.deserializeAndSet(com.fasterxml.jackson.core.JsonParser, com.fasterxml.jackson.databind.DeserializationContext, java.lang.Object)` that returns either return value of setter method called (if one is), or null to indicate that no return value is available. Mostly used to support Builder style deserialization.

Overrides:
  `deserializeSetAndReturn` in class `SettableBeanProperty.Delegating`
Throws:
  `IOException`

#### set

    public void set(Object instance,
           Object value)
             throws IOException

Description copied from class: `SettableBeanProperty`
Method called to assign given value to this property, on specified Object.

Note: this is an optional operation, not supported by all implementations, creator-backed properties for example do not support this method.

Overrides:
  `set` in class `SettableBeanProperty.Delegating`
Throws:
  `IOException`

#### setAndReturn

    public Object setAndReturn(Object instance,
                      Object value)
                        throws IOException

Description copied from class: `SettableBeanProperty`
Method called to assign given value to this property, on specified Object, and return whatever delegating accessor returned (if anything)

Note: this is an optional operation, not supported by all implementations, creator-backed properties for example do not support this method.

Overrides:
  `setAndReturn` in class `SettableBeanProperty.Delegating`
Throws:
  `IOException`