com.fasterxml.jackson.databind.deser.impl

## Class PropertyBasedCreator

- java.lang.Object
- - com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator

    public final class PropertyBasedCreator
    extends Object

Object that is used to collect arguments for non-default creator (non-default-constructor, or argument-taking factory method) before creator can be called. Since ordering of JSON properties is not guaranteed, this may require buffering of values other than ones being passed to creator.

### Field Summary

Fields
`protected Object[]` `_defaultValues` If some property values must always have a non-null value (like primitive types do), this array contains such default values.
`protected HashMap<String,SettableBeanProperty>` `_properties` Map that contains property objects for either constructor or factory method (whichever one is null: one property for each parameter for that one), keyed by logical property name
`protected SettableBeanProperty[]` `_propertiesWithInjectables` Array that contains properties that expect value to inject, if any; null if no injectable values are expected.
`protected int` `_propertyCount` Number of properties: usually same as size of `_properties`, but not necessarily, when we have unnamed injectable properties.
`protected ValueInstantiator` `_valueInstantiator`

### Constructor Summary

Constructors
`protected` `PropertyBasedCreator(ValueInstantiator valueInstantiator, SettableBeanProperty[] creatorProps, Object[] defaultValues)`

### Method Summary

Methods
`void` `assignDeserializer(SettableBeanProperty prop, JsonDeserializer<Object> deser)`
`Object` `build(DeserializationContext ctxt, PropertyValueBuffer buffer)`
`static PropertyBasedCreator` `construct(DeserializationContext ctxt, ValueInstantiator valueInstantiator, SettableBeanProperty[] srcProps)` Factory method used for building actual instances: resolves deserializers and checks for "null values".
`SettableBeanProperty` `findCreatorProperty(String name)`
`Collection<SettableBeanProperty>` `properties()`
`PropertyValueBuffer` `startBuilding(JsonParser jp, DeserializationContext ctxt, ObjectIdReader oir)` Method called when starting to build a bean instance.

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

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

### Field Detail

#### _valueInstantiator

    protected final ValueInstantiator _valueInstantiator

#### _properties

    protected final HashMap<String,SettableBeanProperty> _properties

Map that contains property objects for either constructor or factory method (whichever one is null: one property for each parameter for that one), keyed by logical property name

#### _propertyCount

    protected final int _propertyCount

Number of properties: usually same as size of `_properties`, but not necessarily, when we have unnamed injectable properties.

#### _defaultValues

    protected final Object[] _defaultValues

If some property values must always have a non-null value (like primitive types do), this array contains such default values.

#### _propertiesWithInjectables

    protected final SettableBeanProperty[] _propertiesWithInjectables

Array that contains properties that expect value to inject, if any; null if no injectable values are expected.

### Constructor Detail

#### PropertyBasedCreator

    protected PropertyBasedCreator(ValueInstantiator valueInstantiator,
                        SettableBeanProperty[] creatorProps,
                        Object[] defaultValues)

### Method Detail

#### construct

    public static PropertyBasedCreator construct(DeserializationContext ctxt,
                                 ValueInstantiator valueInstantiator,
                                 SettableBeanProperty[] srcProps)
                                          throws JsonMappingException

Factory method used for building actual instances: resolves deserializers and checks for "null values".

Throws:
  `JsonMappingException`

#### assignDeserializer

    public void assignDeserializer(SettableBeanProperty prop,
                          JsonDeserializer<Object> deser)

#### properties

    public Collection<SettableBeanProperty> properties()

#### findCreatorProperty

    public SettableBeanProperty findCreatorProperty(String name)

#### startBuilding

    public PropertyValueBuffer startBuilding(JsonParser jp,
                                    DeserializationContext ctxt,
                                    ObjectIdReader oir)

Method called when starting to build a bean instance.

Since:
  2.1 (added ObjectIdReader parameter -- existed in previous versions without)

#### build

    public Object build(DeserializationContext ctxt,
               PropertyValueBuffer buffer)
                 throws IOException

Throws:
  `IOException`