com.fasterxml.jackson.databind.deser

## Class BeanDeserializerBuilder

- java.lang.Object
- - com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder

    public class BeanDeserializerBuilder
    extends Object

Builder class used for aggregating deserialization information about a POJO, in order to build a `JsonDeserializer` for deserializing instances.

### Field Summary

Fields
`protected SettableAnyProperty` `_anySetter` Fallback setter used for handling any properties that are not mapped to regular setters.
`protected HashMap<String,SettableBeanProperty>` `_backRefProperties` Back-reference properties this bean contains (if any)
`protected BeanDescription` `_beanDesc` Introspected information about POJO for deserializer to handle
`protected JsonPOJOBuilder.Value` `_builderConfig` In addition, Builder may have additional configuration
`protected AnnotatedMethod` `_buildMethod` When creating Builder-based deserializers, this indicates method to call on builder to finalize value.
`protected DeserializationConfig` `_config`
`protected DeserializationContext` `_context`
`protected HashSet<String>` `_ignorableProps` Set of names of properties that are recognized but are to be ignored for deserialization purposes (meaning no exception is thrown, value is just skipped).
`protected boolean` `_ignoreAllUnknown` Flag that can be set to ignore and skip unknown properties.
`protected HashSet<String>` `_includableProps` Set of names of properties that are recognized and are set to be included for deserialization purposes (null deactivate this, empty includes nothing).
`protected List<ValueInjector>` `_injectables` Value injectors for deserialization
`protected ObjectIdReader` `_objectIdReader` Handler for Object Id values, if Object Ids are enabled for the bean type.
`protected Map<String,SettableBeanProperty>` `_properties` Properties to deserialize collected so far.
`protected ValueInstantiator` `_valueInstantiator` Object that will handle value instantiation for the bean type.

### Constructor Summary

Constructors
`` `BeanDeserializerBuilder(BeanDescription beanDesc, DeserializationContext ctxt)`
`protected` `BeanDeserializerBuilder(BeanDeserializerBuilder src)` Copy constructor for sub-classes to use, when constructing custom builder instances

### Method Summary

All Methods Instance Methods Concrete Methods
`protected Map<String,List<PropertyName>>` `_collectAliases(Collection<SettableBeanProperty> props)`
`protected boolean` `_findCaseInsensitivity()`
`protected void` `_fixAccess(Collection<SettableBeanProperty> mainProps)`
`protected void` `_handleBadAccess(IllegalArgumentException e0)` Helper method for linking root cause to "invalid type definition" exception; needed for troubleshooting issues with forcing access on later JDKs (as module definition boundaries are more strictly enforced).
`void` `addBackReferenceProperty(String referenceName, SettableBeanProperty prop)` Method called to add a property that represents so-called back reference; reference that "points back" to object that has forward reference to currently built bean.
`void` `addCreatorProperty(SettableBeanProperty prop)` Method called by deserializer factory, when a "creator property" (something that is passed via constructor- or factory method argument; instead of setter or field).
`void` `addIgnorable(String propName)` Method that will add property name as one of properties that can be ignored if not recognized.
`void` `addIncludable(String propName)` Method that will add property name as one of the properties that will be included.
`void` `addInjectable(PropertyName propName, JavaType propType, Annotations contextAnnotations, AnnotatedMember member, Object valueId)`
`void` `addOrReplaceProperty(SettableBeanProperty prop, boolean allowOverride)` Method for adding a new property or replacing a property.
`void` `addProperty(SettableBeanProperty prop)` Method to add a property setter.
`JsonDeserializer<?>` `build()` Method for constructing a `BeanDeserializer`, given all information collected.
`AbstractDeserializer` `buildAbstract()` Alternate build method used when we must be using some form of abstract resolution, usually by using addition Type Id ("polymorphic deserialization")
`JsonDeserializer<?>` `buildBuilderBased(JavaType valueType, String expBuildMethodName)` Method for constructing a specialized deserializer that uses additional external Builder object during data binding.
`protected JsonDeserializer<?>` `createBuilderBasedDeserializer(JavaType valueType, BeanPropertyMap propertyMap, boolean anyViews)` Extension point for overriding the actual creation of the builder deserializer.
`SettableBeanProperty` `findProperty(PropertyName propertyName)`
`SettableAnyProperty` `getAnySetter()`
`JsonPOJOBuilder.Value` `getBuilderConfig()`
`AnnotatedMethod` `getBuildMethod()`
`List<ValueInjector>` `getInjectables()`
`ObjectIdReader` `getObjectIdReader()`
`Iterator<SettableBeanProperty>` `getProperties()` Method that allows accessing all properties that this builder currently contains.
`ValueInstantiator` `getValueInstantiator()`
`boolean` `hasIgnorable(String name)`
`boolean` `hasProperty(PropertyName propertyName)`
`SettableBeanProperty` `removeProperty(PropertyName name)`
`void` `setAnySetter(SettableAnyProperty s)`
`void` `setIgnoreUnknownProperties(boolean ignore)`
`void` `setObjectIdReader(ObjectIdReader r)`
`void` `setPOJOBuilder(AnnotatedMethod buildMethod, JsonPOJOBuilder.Value config)`
`void` `setValueInstantiator(ValueInstantiator inst)`

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

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

### Field Detail

#### _config

    protected final DeserializationConfig _config

#### _context

    protected final DeserializationContext _context

Since:
  2.9

#### _beanDesc

    protected final BeanDescription _beanDesc

Introspected information about POJO for deserializer to handle

#### _properties

    protected final Map<String,SettableBeanProperty> _properties

Properties to deserialize collected so far.

#### _injectables

    protected List<ValueInjector> _injectables

Value injectors for deserialization

#### _backRefProperties

    protected HashMap<String,SettableBeanProperty> _backRefProperties

Back-reference properties this bean contains (if any)

#### _ignorableProps

    protected HashSet<String> _ignorableProps

Set of names of properties that are recognized but are to be ignored for deserialization purposes (meaning no exception is thrown, value is just skipped).

#### _includableProps

    protected HashSet<String> _includableProps

Set of names of properties that are recognized and are set to be included for deserialization purposes (null deactivate this, empty includes nothing).

#### _valueInstantiator

    protected ValueInstantiator _valueInstantiator

Object that will handle value instantiation for the bean type.

#### _objectIdReader

    protected ObjectIdReader _objectIdReader

Handler for Object Id values, if Object Ids are enabled for the bean type.

#### _anySetter

    protected SettableAnyProperty _anySetter

Fallback setter used for handling any properties that are not mapped to regular setters. If setter is not null, it will be called once for each such property.

#### _ignoreAllUnknown

    protected boolean _ignoreAllUnknown

Flag that can be set to ignore and skip unknown properties. If set, will not throw an exception for unknown properties.

#### _buildMethod

    protected AnnotatedMethod _buildMethod

When creating Builder-based deserializers, this indicates method to call on builder to finalize value.

#### _builderConfig

    protected JsonPOJOBuilder.Value _builderConfig

In addition, Builder may have additional configuration

### Constructor Detail

#### BeanDeserializerBuilder

    public BeanDeserializerBuilder(BeanDescription beanDesc,
                                   DeserializationContext ctxt)

#### BeanDeserializerBuilder

    protected BeanDeserializerBuilder(BeanDeserializerBuilder src)

Copy constructor for sub-classes to use, when constructing custom builder instances

### Method Detail

#### addOrReplaceProperty

    public void addOrReplaceProperty(SettableBeanProperty prop,
                                     boolean allowOverride)

Method for adding a new property or replacing a property.

#### addProperty

    public void addProperty(SettableBeanProperty prop)

Method to add a property setter. Will ensure that there is no unexpected override; if one is found will throw a `IllegalArgumentException`.

#### addBackReferenceProperty

    public void addBackReferenceProperty(String referenceName,
                                         SettableBeanProperty prop)
                                  throws JsonMappingException

Method called to add a property that represents so-called back reference; reference that "points back" to object that has forward reference to currently built bean.

Throws:
  `JsonMappingException`

#### addInjectable

    public void addInjectable(PropertyName propName,
                              JavaType propType,
                              Annotations contextAnnotations,
                              AnnotatedMember member,
                              Object valueId)
                       throws JsonMappingException

Throws:
  `JsonMappingException`

#### addIgnorable

    public void addIgnorable(String propName)

Method that will add property name as one of properties that can be ignored if not recognized.

#### addIncludable

    public void addIncludable(String propName)

Method that will add property name as one of the properties that will be included.

Since:
  2.12

#### addCreatorProperty

    public void addCreatorProperty(SettableBeanProperty prop)

Method called by deserializer factory, when a "creator property" (something that is passed via constructor- or factory method argument; instead of setter or field).

Default implementation does not do anything; we may need to revisit this decision if these properties need to be available through accessors. For now, however, we just have to ensure that we don't try to resolve types that masked setter/field has (see [JACKSON-700] for details).

#### setAnySetter

    public void setAnySetter(SettableAnyProperty s)

#### setIgnoreUnknownProperties

    public void setIgnoreUnknownProperties(boolean ignore)

#### setValueInstantiator

    public void setValueInstantiator(ValueInstantiator inst)

#### setObjectIdReader

    public void setObjectIdReader(ObjectIdReader r)

#### setPOJOBuilder

    public void setPOJOBuilder(AnnotatedMethod buildMethod,
                               JsonPOJOBuilder.Value config)

#### getProperties

    public Iterator<SettableBeanProperty> getProperties()

Method that allows accessing all properties that this builder currently contains.

Note that properties are returned in order that properties are ordered (explictly, or by rule), which is the serialization order.

#### findProperty

    public SettableBeanProperty findProperty(PropertyName propertyName)

#### hasProperty

    public boolean hasProperty(PropertyName propertyName)

#### removeProperty

    public SettableBeanProperty removeProperty(PropertyName name)

#### getAnySetter

    public SettableAnyProperty getAnySetter()

#### getValueInstantiator

    public ValueInstantiator getValueInstantiator()

#### getInjectables

    public List<ValueInjector> getInjectables()

#### getObjectIdReader

    public ObjectIdReader getObjectIdReader()

#### getBuildMethod

    public AnnotatedMethod getBuildMethod()

#### getBuilderConfig

    public JsonPOJOBuilder.Value getBuilderConfig()

#### hasIgnorable

    public boolean hasIgnorable(String name)

Since:
  2.9.4

#### build

    public JsonDeserializer<?> build()
                              throws JsonMappingException

Method for constructing a `BeanDeserializer`, given all information collected.

Throws:
  `JsonMappingException`

#### buildAbstract

    public AbstractDeserializer buildAbstract()

Alternate build method used when we must be using some form of abstract resolution, usually by using addition Type Id ("polymorphic deserialization")

Since:
  2.0

#### buildBuilderBased

    public JsonDeserializer<?> buildBuilderBased(JavaType valueType,
                                                 String expBuildMethodName)
                                          throws JsonMappingException

Method for constructing a specialized deserializer that uses additional external Builder object during data binding.

Throws:
  `JsonMappingException`

#### createBuilderBasedDeserializer

    protected JsonDeserializer<?> createBuilderBasedDeserializer(JavaType valueType,
                                                                 BeanPropertyMap propertyMap,
                                                                 boolean anyViews)

Extension point for overriding the actual creation of the builder deserializer.

Since:
  2.11

#### _fixAccess

    protected void _fixAccess(Collection<SettableBeanProperty> mainProps)
                       throws JsonMappingException

Throws:
  `JsonMappingException`

#### _collectAliases

    protected Map<String,List<PropertyName>> _collectAliases(Collection<SettableBeanProperty> props)

#### _findCaseInsensitivity

    protected boolean _findCaseInsensitivity()

#### _handleBadAccess

    protected void _handleBadAccess(IllegalArgumentException e0)
                             throws JsonMappingException

Helper method for linking root cause to "invalid type definition" exception; needed for troubleshooting issues with forcing access on later JDKs (as module definition boundaries are more strictly enforced).

Throws:
  `JsonMappingException`
Since:
  2.13.2