org.codehaus.jackson.map.ser
Class BeanPropertyWriter

java.lang.Object
  extended by org.codehaus.jackson.map.ser.BeanPropertyWriter
All Implemented Interfaces:
BeanProperty, Named
Direct Known Subclasses:
UnwrappingBeanPropertyWriter

public class BeanPropertyWriter
extends Object
implements BeanProperty

Base bean property handler class, which implements common parts of reflection-based functionality for accessing a property value and serializing it.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.codehaus.jackson.map.BeanProperty
BeanProperty.Std
 
Field Summary
protected  Method _accessorMethod
          Accessor method used to get property value, for method-accessible properties.
protected  JavaType _cfgSerializationType
          Type to use for locating serializer; normally same as return type of the accessor method, but may be overridden by annotations.
protected  Annotations _contextAnnotations
          Annotations from context (most often, class that declares property, or in case of sub-class serializer, from that sub-class)
protected  JavaType _declaredType
          Type property is declared to have, either in class definition or associated annotations.
protected  PropertySerializerMap _dynamicSerializers
          In case serializer is not known statically (i.e.
protected  Field _field
          Field that contains the property value for field-accessible properties.
protected  Class<?>[] _includeInViews
          Alternate set of property writers used when view-based filtering is available for the Bean.
protected  HashMap<Object,Object> _internalSettings
           
protected  AnnotatedMember _member
          Member (field, method) that represents property and allows access to associated annotations.
protected  SerializedString _name
          Logical name of the property; will be used as the field name under which value for the property is written.
protected  JavaType _nonTrivialBaseType
          Base type of the property, if the declared type is "non-trivial"; meaning it is either a structured type (collection, map, array), or parametrized.
protected  JsonSerializer<Object> _serializer
          Serializer to use for writing out the value: null if it can not be known statically; non-null if it can.
protected  Object _suppressableValue
          Value that is considered default value of the property; used for default-value-suppression if enabled.
protected  boolean _suppressNulls
          Flag to indicate that null values for this property are not to be written out.
protected  TypeSerializer _typeSerializer
          If property being serialized needs type information to be included this is the type serializer to use.
 
Constructor Summary
  BeanPropertyWriter(AnnotatedMember member, Annotations contextAnnotations, SerializedString name, JavaType declaredType, JsonSerializer<Object> ser, TypeSerializer typeSer, JavaType serType, Method m, Field f, boolean suppressNulls, Object suppressableValue)
           
  BeanPropertyWriter(AnnotatedMember member, Annotations contextAnnotations, String name, JavaType declaredType, JsonSerializer<Object> ser, TypeSerializer typeSer, JavaType serType, Method m, Field f, boolean suppressNulls, Object suppressableValue)
           
protected BeanPropertyWriter(BeanPropertyWriter base)
          "Copy constructor" to be used by filtering sub-classes
protected BeanPropertyWriter(BeanPropertyWriter base, JsonSerializer<Object> ser)
          "Copy constructor" to be used by filtering sub-classes
 
Method Summary
protected  JsonSerializer<Object> _findAndAddDynamic(PropertySerializerMap map, Class<?> type, SerializerProvider provider)
           
protected  void _reportSelfReference(Object bean)
           
 Object get(Object bean)
          Method that can be used to access value of the property this Object describes, from given bean instance.
<A extends Annotation>
A
getAnnotation(Class<A> acls)
          Method for finding annotation associated with this property; meaning annotation associated with one of entities used to access property.
<A extends Annotation>
A
getContextAnnotation(Class<A> acls)
          Method for finding annotation associated with context of this property; usually class in which member is declared (or its subtype if processing subtype).
 Type getGenericPropertyType()
          Get the generic property type of this property writer.
 Object getInternalSetting(Object key)
          Method for accessing value of specified internal setting.
 AnnotatedMember getMember()
          Method for accessing primary physical entity that represents the property; annotated field, method or constructor property.
 String getName()
          Method to get logical name of the property
 Class<?> getPropertyType()
           
 Class<?> getRawSerializationType()
           
 JavaType getSerializationType()
           
 SerializedString getSerializedName()
           
 JsonSerializer<Object> getSerializer()
           
 JavaType getType()
          Method to get declared type of the property.
 Class<?>[] getViews()
           
 boolean hasSerializer()
           
 Object removeInternalSetting(Object key)
          Method for removing entry for specified internal setting.
 void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider prov)
          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.
 Object setInternalSetting(Object key, Object value)
          Method for setting specific internal setting to given value
 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
 void setViews(Class<?>[] views)
          Method for defining which views to included value of this property in.
 String toString()
           
 BeanPropertyWriter unwrappingWriter()
          Method called create an instance that handles details of unwrapping contained value.
 BeanPropertyWriter withSerializer(JsonSerializer<Object> ser)
          Method that will construct and return a new writer that has same properties as this writer, but uses specified serializer instead of currently configured one (if any).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_member

protected final AnnotatedMember _member
Member (field, method) that represents property and allows access to associated annotations.

Since:
1.7

_contextAnnotations

protected final Annotations _contextAnnotations
Annotations from context (most often, class that declares property, or in case of sub-class serializer, from that sub-class)


_declaredType

protected final JavaType _declaredType
Type property is declared to have, either in class definition or associated annotations.


_accessorMethod

protected final Method _accessorMethod
Accessor method used to get property value, for method-accessible properties. Null if and only if _field is null.


_field

protected final Field _field
Field that contains the property value for field-accessible properties. Null if and only if _accessorMethod is null.


_internalSettings

protected HashMap<Object,Object> _internalSettings

_name

protected final SerializedString _name
Logical name of the property; will be used as the field name under which value for the property is written.


_cfgSerializationType

protected final JavaType _cfgSerializationType
Type to use for locating serializer; normally same as return type of the accessor method, but may be overridden by annotations.


_serializer

protected final JsonSerializer<Object> _serializer
Serializer to use for writing out the value: null if it can not be known statically; non-null if it can.


_dynamicSerializers

protected PropertySerializerMap _dynamicSerializers
In case serializer is not known statically (i.e. _serializer is null), we will use a lookup structure for storing dynamically resolved mapping from type(s) to serializer(s).

Since:
1.7

_suppressNulls

protected final boolean _suppressNulls
Flag to indicate that null values for this property are not to be written out. That is, if property has value null, no entry will be written


_suppressableValue

protected final Object _suppressableValue
Value that is considered default value of the property; used for default-value-suppression if enabled.


_includeInViews

protected Class<?>[] _includeInViews
Alternate set of property writers used when view-based filtering is available for the Bean.

Since:
1.4

_typeSerializer

protected TypeSerializer _typeSerializer
If property being serialized needs type information to be included this is the type serializer to use. Declared type (possibly augmented with annotations) of property is used for determining exact mechanism to use (compared to actual runtime type used for serializing actual state).


_nonTrivialBaseType

protected JavaType _nonTrivialBaseType
Base type of the property, if the declared type is "non-trivial"; meaning it is either a structured type (collection, map, array), or parametrized. Used to retain type information about contained type, which is mostly necessary if type metadata is to be included.

Since:
1.5
Constructor Detail

BeanPropertyWriter

public BeanPropertyWriter(AnnotatedMember member,
                          Annotations contextAnnotations,
                          String name,
                          JavaType declaredType,
                          JsonSerializer<Object> ser,
                          TypeSerializer typeSer,
                          JavaType serType,
                          Method m,
                          Field f,
                          boolean suppressNulls,
                          Object suppressableValue)

BeanPropertyWriter

public BeanPropertyWriter(AnnotatedMember member,
                          Annotations contextAnnotations,
                          SerializedString name,
                          JavaType declaredType,
                          JsonSerializer<Object> ser,
                          TypeSerializer typeSer,
                          JavaType serType,
                          Method m,
                          Field f,
                          boolean suppressNulls,
                          Object suppressableValue)

BeanPropertyWriter

protected BeanPropertyWriter(BeanPropertyWriter base)
"Copy constructor" to be used by filtering sub-classes


BeanPropertyWriter

protected BeanPropertyWriter(BeanPropertyWriter base,
                             JsonSerializer<Object> ser)
"Copy constructor" to be used by filtering sub-classes

Method Detail

withSerializer

public BeanPropertyWriter withSerializer(JsonSerializer<Object> ser)
Method that will construct and return a new writer that has same properties as this writer, but uses specified serializer instead of currently configured one (if any).


unwrappingWriter

public BeanPropertyWriter unwrappingWriter()
Method called create an instance that handles details of unwrapping contained value.

Since:
1.9

setViews

public void setViews(Class<?>[] views)
Method for defining which views to included value of this property in. If left undefined, will always be included; otherwise active view definition will be checked against definition list and value is only included if active view is one of defined views, or its sub-view (as defined by class/sub-class relationship).


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

Since:
1.5

getName

public String getName()
Description copied from interface: BeanProperty
Method to get logical name of the property

Specified by:
getName in interface BeanProperty
Specified by:
getName in interface Named

getType

public JavaType getType()
Description copied from interface: BeanProperty
Method to get declared type of the property.

Specified by:
getType in interface BeanProperty

getAnnotation

public <A extends Annotation> A getAnnotation(Class<A> acls)
Description copied from interface: BeanProperty
Method for finding annotation associated with this property; meaning annotation associated with one of entities used to access property.

Specified by:
getAnnotation in interface BeanProperty

getContextAnnotation

public <A extends Annotation> A getContextAnnotation(Class<A> acls)
Description copied from interface: BeanProperty
Method for finding annotation associated with context of this property; usually class in which member is declared (or its subtype if processing subtype).

Specified by:
getContextAnnotation in interface BeanProperty

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 Object getInternalSetting(Object key)
Method for accessing value of specified internal setting.

Returns:
Value of the setting, if any; null if none.
Since:
1.7

setInternalSetting

public Object setInternalSetting(Object key,
                                 Object value)
Method for setting specific internal setting to given value

Returns:
Old value of the setting, if any (null if none)
Since:
1.7

removeInternalSetting

public Object removeInternalSetting(Object key)
Method for removing entry for specified internal setting.

Returns:
Existing value of the setting, if any (null if none)
Since:
1.7

getSerializedName

public SerializedString getSerializedName()

hasSerializer

public boolean hasSerializer()

getSerializer

public JsonSerializer<Object> getSerializer()

getSerializationType

public JavaType getSerializationType()

getRawSerializationType

public Class<?> getRawSerializationType()

getPropertyType

public Class<?> getPropertyType()

getGenericPropertyType

public Type getGenericPropertyType()
Get the generic property type of this property writer.

Returns:
The property type, or null if not found.

getViews

public Class<?>[] getViews()

serializeAsField

public void serializeAsField(Object bean,
                             JsonGenerator jgen,
                             SerializerProvider prov)
                      throws 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.

Throws:
Exception

_findAndAddDynamic

protected JsonSerializer<Object> _findAndAddDynamic(PropertySerializerMap map,
                                                    Class<?> type,
                                                    SerializerProvider provider)
                                             throws JsonMappingException
Throws:
JsonMappingException
Since:
1.7

get

public final Object get(Object bean)
                 throws Exception
Method that can be used to access value of the property this Object describes, from given bean instance.

Note: method is final as it should not need to be overridden -- rather, calling method(s) (serializeAsField(java.lang.Object, org.codehaus.jackson.JsonGenerator, org.codehaus.jackson.map.SerializerProvider)) should be overridden to change the behavior

Throws:
Exception

_reportSelfReference

protected void _reportSelfReference(Object bean)
                             throws JsonMappingException
Throws:
JsonMappingException

toString

public String toString()
Overrides:
toString in class Object