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

org.codehaus.jackson.map.ser

## Class PropertyBuilder

- java.lang.Object
- - org.codehaus.jackson.map.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.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `PropertyBuilder.EmptyArrayChecker` Helper object used to check if given array object is null or empty
    `static class` | `PropertyBuilder.EmptyCollectionChecker` Helper object used to check if given Collection object is null or empty
    `static class` | `PropertyBuilder.EmptyMapChecker` Helper object used to check if given Map object is null or empty
    `static class` | `PropertyBuilder.EmptyStringChecker` Helper object used to check if given String object is null or empty

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected AnnotationIntrospector` | `_annotationIntrospector`
    `protected BasicBeanDescription` | `_beanDesc`
    `protected SerializationConfig` | `_config`
    `protected Object` | `_defaultBean` If a property has serialization inclusion value of `JsonSerialize.Inclusion.ALWAYS`, we need to know the default value of the bean, to know if property value equals default one.
    `protected JsonSerialize.Inclusion` | `_outputProps`

  - ### Constructor Summary

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

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Object` | `_throwWrapped(Exception e, String propName, Object defaultBean)`
    `protected BeanPropertyWriter` | `buildWriter(String name, JavaType declaredType, JsonSerializer<Object> 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` | `getContainerValueChecker(String propertyName, JavaType propertyType)` Helper method called to see if we need a comparator Object to check if values of a container (Collection, array) property should be suppressed.
    `protected Object` | `getDefaultBean()`
    `protected Object` | `getDefaultValue(String name, Method m, Field f)`
    `protected Object` | `getEmptyValueChecker(String propertyName, JavaType propertyType)` Helper method called to see if we need a comparator Object to check if values of specified type are consider empty.

    - ### 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 BasicBeanDescription _beanDesc

    - #### _outputProps

          protected final JsonSerialize.Inclusion _outputProps

    - #### _annotationIntrospector

          protected final AnnotationIntrospector _annotationIntrospector

    - #### _defaultBean

          protected Object _defaultBean

      If a property has serialization inclusion value of `JsonSerialize.Inclusion.ALWAYS`, we need to know the default value of the bean, to know if property value equals default one.

  - ### Constructor Detail

    - #### PropertyBuilder

          public PropertyBuilder(SerializationConfig config,
                         BasicBeanDescription beanDesc)

  - ### Method Detail

    - #### getClassAnnotations

          public Annotations getClassAnnotations()

    - #### buildWriter

          protected BeanPropertyWriter buildWriter(String name,
                                       JavaType declaredType,
                                       JsonSerializer<Object> ser,
                                       TypeSerializer typeSer,
                                       TypeSerializer contentTypeSer,
                                       AnnotatedMember am,
                                       boolean defaultUseStaticTyping)

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

    - #### findSerializationType

          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). If neither can be used (no annotations, dynamic typing), returns null.

    - #### getDefaultBean

          protected Object getDefaultBean()

    - #### getDefaultValue

          protected Object getDefaultValue(String name,
                               Method m,
                               Field f)

    - #### getContainerValueChecker

          protected Object getContainerValueChecker(String propertyName,
                                        JavaType propertyType)

      Helper method called to see if we need a comparator Object to check if values of a container (Collection, array) property should be suppressed. This is usually
      Parameters:
        `propertyName` - Name of property to handle
        `propertyType` - Declared type of values of the property to handle
      Returns:
        Object whose `equals()` method is called to check if given value is "empty Collection" value to suppress; or null if no such check should be done (declared type not Collection or array)
      Since:
        1.9

    - #### getEmptyValueChecker

          protected Object getEmptyValueChecker(String propertyName,
                                    JavaType propertyType)

      Helper method called to see if we need a comparator Object to check if values of specified type are consider empty. If type has such concept, will build a comparator; otherwise return null, and in latter case, only null values are considered 'empty'.
      Parameters:
        `propertyName` - Name of property to handle
        `propertyType` - Declared type of values of the property to handle
      Returns:
        Object whose `equals()` method is called to check if given value is "empty Collection" value to suppress; or null if no such check should be done (declared type not Collection or array)
      Since:
        1.9

    - #### _throwWrapped

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