Class BeanPropertyWriter

  • All Implemented Interfaces:
    BeanProperty, Named, java.io.Serializable
    Direct Known Subclasses:
    UnwrappingBeanPropertyWriter, VirtualBeanPropertyWriter

    public class BeanPropertyWriter
    extends PropertyWriter
    implements java.io.Serializable
    Base bean property handler class, which implements common parts of reflection-based functionality for accessing a property value and serializing it.

    Note that current design tries to keep instances immutable (semi-functional style); mostly because these instances are exposed to application code and this is to reduce likelihood of data corruption and synchronization issues.

    See Also:
    Serialized Form
    • Field Detail

      • MARKER_FOR_EMPTY

        public static final java.lang.Object MARKER_FOR_EMPTY
        Marker object used to indicate "do not serialize if empty"
    • Method Detail

      • assignTypeSerializer

        public void assignTypeSerializer​(TypeSerializer typeSer)
        Method called to set, reset or clear the configured type serializer for property.
        Since:
        2.6
      • assignSerializer

        public void assignSerializer​(JsonSerializer<java.lang.Object> ser)
        Method called to assign value serializer for property
      • assignNullSerializer

        public void assignNullSerializer​(JsonSerializer<java.lang.Object> nullSer)
        Method called to assign null value serializer for property
      • unwrappingWriter

        public BeanPropertyWriter unwrappingWriter​(NameTransformer unwrapper)
        Method called create an instance that handles details of unwrapping contained value.
      • setNonTrivialBaseType

        public void setNonTrivialBaseType​(JavaType t)
        Method called to define type to consider as "non-trivial" basetype, needed for dynamic serialization resolution for complex (usually container) types
      • fixAccess

        public void fixAccess​(SerializationConfig config)
        Method called to ensure that the mutator has proper access rights to be called, as per configuration. Overridden by implementations that have mutators that require access, fields and setters.
        Since:
        2.8.3
      • getAnnotation

        public <A extends java.lang.annotation.Annotation> A getAnnotation​(java.lang.Class<A> acls)
        Description copied from class: PropertyWriter
        Method for accessing annotations directly declared for property that this writer is associated with.
        Specified by:
        getAnnotation in interface BeanProperty
        Specified by:
        getAnnotation in class PropertyWriter
      • getContextAnnotation

        public <A extends java.lang.annotation.Annotation> A getContextAnnotation​(java.lang.Class<A> acls)
        Description copied from class: PropertyWriter
        Method for accessing annotations declared in context of the property that this writer is associated with; usually this means annotations on enclosing class for property.
        Specified by:
        getContextAnnotation in interface BeanProperty
        Specified by:
        getContextAnnotation in class PropertyWriter
      • getMember

        public AnnotatedMember getMember()
        Description copied from interface: BeanProperty
        Method for accessing primary physical entity that represents the property; annotated field, method or constructor property.
        Specified by:
        getMember in interface BeanProperty
      • getInternalSetting

        public java.lang.Object getInternalSetting​(java.lang.Object key)
        Method for accessing value of specified internal setting.
        Returns:
        Value of the setting, if any; null if none.
      • setInternalSetting

        public java.lang.Object setInternalSetting​(java.lang.Object key,
                                                   java.lang.Object value)
        Method for setting specific internal setting to given value
        Returns:
        Old value of the setting, if any (null if none)
      • removeInternalSetting

        public java.lang.Object removeInternalSetting​(java.lang.Object key)
        Method for removing entry for specified internal setting.
        Returns:
        Existing value of the setting, if any (null if none)
      • hasSerializer

        public boolean hasSerializer()
      • hasNullSerializer

        public boolean hasNullSerializer()
      • getTypeSerializer

        public TypeSerializer getTypeSerializer()
        Since:
        2.6
      • isUnwrapping

        public boolean isUnwrapping()
        Accessor that will return true if this bean property has to support "unwrapping"; ability to replace POJO structural wrapping with optional name prefix and/or suffix (or in some cases, just removal of wrapper name).

        Default implementation simply returns false.

        Since:
        2.3
      • willSuppressNulls

        public boolean willSuppressNulls()
      • wouldConflictWithName

        public boolean wouldConflictWithName​(PropertyName name)
        Method called to check to see if this property has a name that would conflict with a given name.
        Since:
        2.6
      • getSerializer

        public JsonSerializer<java.lang.Object> getSerializer()
      • getSerializationType

        public JavaType getSerializationType()
      • getRawSerializationType

        @Deprecated
        public java.lang.Class<?> getRawSerializationType()
        Deprecated.
      • getPropertyType

        @Deprecated
        public java.lang.Class<?> getPropertyType()
        Deprecated.
        Since 2.7, to be removed from 2.9, use getType() instead.
      • getGenericPropertyType

        @Deprecated
        public java.lang.reflect.Type getGenericPropertyType()
        Deprecated.
        Since 2.7, to be removed from 2.9, use getType() instead.
        Get the generic property type of this property writer.
        Returns:
        The property type, or null if not found.
      • getViews

        public java.lang.Class<?>[] getViews()
      • serializeAsField

        public void serializeAsField​(java.lang.Object bean,
                                     JsonGenerator gen,
                                     SerializerProvider prov)
                              throws java.lang.Exception
        Method called to access property that this bean stands for, from within given bean, and to serialize it as a JSON Object field using appropriate serializer.
        Specified by:
        serializeAsField in class PropertyWriter
        Throws:
        java.lang.Exception
      • serializeAsOmittedField

        public void serializeAsOmittedField​(java.lang.Object bean,
                                            JsonGenerator gen,
                                            SerializerProvider prov)
                                     throws java.lang.Exception
        Method called to indicate that serialization of a field was omitted due to filtering, in cases where backend data format does not allow basic omission.
        Specified by:
        serializeAsOmittedField in class PropertyWriter
        Throws:
        java.lang.Exception
        Since:
        2.3
      • serializeAsPlaceholder

        public void serializeAsPlaceholder​(java.lang.Object bean,
                                           JsonGenerator gen,
                                           SerializerProvider prov)
                                    throws java.lang.Exception
        Method called to serialize a placeholder used in tabular output when real value is not to be included (is filtered out), but when we need an entry so that field indexes will not be off. Typically this should output null or empty String, depending on datatype.
        Specified by:
        serializeAsPlaceholder in class PropertyWriter
        Throws:
        java.lang.Exception
        Since:
        2.1
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object