com.fasterxml.jackson.databind.ser

## Class PropertyBuilder

- java.lang.Object
- - com.fasterxml.jackson.databind.ser.PropertyBuilder

    public class PropertyBuilder
    extends Object

Helper class for `BeanSerializerFactory` that is used to construct `BeanPropertyWriter` instances. Can be sub-classed to change behavior.

### Field Summary

Fields
`protected AnnotationIntrospector` `_annotationIntrospector`
`protected BeanDescription` `_beanDesc`
`protected SerializationConfig` `_config`
`protected Object` `_defaultBean` If a property has serialization inclusion value of `JsonInclude.Include.NON_DEFAULT`, we may need to know the default value of the bean, to know if property value equals default one.
`protected com.fasterxml.jackson.annotation.JsonInclude.Value` `_defaultInclusion` Default inclusion mode for properties of the POJO for which properties are collected; possibly overridden on per-property basis.
`protected boolean` `_useRealPropertyDefaults` Marker flag used to indicate that "real" default values are to be used for properties, as per per-type value inclusion of type `NON_DEFAULT`

### Constructor Summary

Constructors
Constructor and Description
`PropertyBuilder(SerializationConfig config, BeanDescription beanDesc)`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`protected Object` `_throwWrapped(Exception e, String propName, Object defaultBean)`
`protected BeanPropertyWriter` `buildWriter(SerializerProvider prov, BeanPropertyDefinition propDef, JavaType declaredType, JsonSerializer<?> ser, TypeSerializer typeSer, TypeSerializer contentTypeSer, AnnotatedMember am, boolean defaultUseStaticTyping)`
`protected JavaType` `findSerializationType(Annotated a, boolean useStaticTyping, JavaType declaredType)` Method that will try to determine statically defined type of property being serialized, based on annotations (for overrides), and alternatively declared type (if static typing for serialization is enabled).
`Annotations` `getClassAnnotations()`
`protected Object` `getDefaultBean()`
`protected Object` `getDefaultValue(JavaType type)` Deprecated. Since 2.9
`protected Object` `getPropertyDefaultValue(String name, AnnotatedMember member, JavaType type)` Deprecated. Since 2.9 since this will not allow determining difference between "no default instance" case and default being `null`.

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

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

### Field Detail

#### _config

    protected final SerializationConfig _config

#### _beanDesc

    protected final BeanDescription _beanDesc

#### _annotationIntrospector

    protected final AnnotationIntrospector _annotationIntrospector

#### _defaultBean

    protected Object _defaultBean

If a property has serialization inclusion value of `JsonInclude.Include.NON_DEFAULT`, we may need to know the default value of the bean, to know if property value equals default one.

NOTE: only used if enclosing class defines NON_DEFAULT, but NOT if it is the global default OR per-property override.

#### _defaultInclusion

    protected final com.fasterxml.jackson.annotation.JsonInclude.Value _defaultInclusion

Default inclusion mode for properties of the POJO for which properties are collected; possibly overridden on per-property basis. Combines global inclusion defaults and per-type (annotation and type-override) inclusion overrides.

#### _useRealPropertyDefaults

    protected final boolean _useRealPropertyDefaults

Marker flag used to indicate that "real" default values are to be used for properties, as per per-type value inclusion of type `NON_DEFAULT`

Since:
  2.8

### Constructor Detail

#### PropertyBuilder

    public PropertyBuilder(SerializationConfig config,
                           BeanDescription beanDesc)

### Method Detail

#### getClassAnnotations

    public Annotations getClassAnnotations()

#### buildWriter

    protected BeanPropertyWriter buildWriter(SerializerProvider prov,
                                             BeanPropertyDefinition propDef,
                                             JavaType declaredType,
                                             JsonSerializer<?> ser,
                                             TypeSerializer typeSer,
                                             TypeSerializer contentTypeSer,
                                             AnnotatedMember am,
                                             boolean defaultUseStaticTyping)
                                      throws JsonMappingException

Parameters:
  `contentTypeSer` - Optional explicit type information serializer to use for contained values (only used for properties that are of container type)
Throws:
  `JsonMappingException`

#### findSerializationType

    protected JavaType findSerializationType(Annotated a,
                                             boolean useStaticTyping,
                                             JavaType declaredType)
                                      throws JsonMappingException

Method that will try to determine statically defined type of property being serialized, based on annotations (for overrides), and alternatively declared type (if static typing for serialization is enabled). If neither can be used (no annotations, dynamic typing), returns null.

Throws:
  `JsonMappingException`

#### getDefaultBean

    protected Object getDefaultBean()

#### getPropertyDefaultValue

    @Deprecated
    protected Object getPropertyDefaultValue(String name,
                                                         AnnotatedMember member,
                                                         JavaType type)

Deprecated. Since 2.9 since this will not allow determining difference between "no default instance" case and default being `null`.
Accessor used to find out "default value" for given property, to use for comparing values to serialize, to determine whether to exclude value from serialization with inclusion type of `JsonInclude.Include.NON_DEFAULT`. This method is called when we specifically want to know default value within context of a POJO, when annotation is within containing class, and not for property or defined as global baseline.

Note that returning of pseudo-type `JsonInclude.Include.NON_EMPTY` requires special handling.

Since:
  2.7

#### getDefaultValue

    @Deprecated
    protected Object getDefaultValue(JavaType type)

Deprecated. Since 2.9

#### _throwWrapped

    protected Object _throwWrapped(Exception e,
                                   String propName,
                                   Object defaultBean)