public class BeanPropertyWriter extends Object implements BeanProperty
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.
BeanProperty.Std
Modifier and Type | Field and Description |
---|---|
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 parameterized.
|
protected JsonSerializer<Object> |
_nullSerializer
Serializer used for writing out null values, if any: if null,
null values are to be suppressed.
|
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
Whether null values are to be suppressed (nothing written out if
value is null) or not.
|
protected TypeSerializer |
_typeSerializer
If property being serialized needs type information to be
included this is the type serializer to use.
|
static Object |
MARKER_FOR_EMPTY
Marker object used to indicate "do not serialize if empty"
|
Modifier | Constructor and Description |
---|---|
|
BeanPropertyWriter(BeanPropertyDefinition propDef,
AnnotatedMember member,
Annotations contextAnnotations,
JavaType declaredType,
JsonSerializer<?> ser,
TypeSerializer typeSer,
JavaType serType,
boolean suppressNulls,
Object suppressableValue) |
protected |
BeanPropertyWriter(BeanPropertyWriter base)
"Copy constructor" to be used by filtering sub-classes
|
protected |
BeanPropertyWriter(BeanPropertyWriter base,
SerializedString name) |
Modifier and Type | Method and Description |
---|---|
protected JsonSerializer<Object> |
_findAndAddDynamic(PropertySerializerMap map,
Class<?> type,
SerializerProvider provider) |
protected void |
_handleSelfReference(Object bean,
JsonSerializer<?> ser) |
void |
assignNullSerializer(JsonSerializer<Object> nullSer)
Method called to assign null value serializer for property
|
void |
assignSerializer(JsonSerializer<Object> ser)
Method called to assign value serializer for property
|
void |
depositSchemaProperty(JsonObjectFormatVisitor objectVisitor)
Method called to handle appropriate type-specific visiting
over logical property this writer handles.
|
void |
depositSchemaProperty(ObjectNode propertiesNode,
SerializerProvider provider)
Attempt to add the output of the given
BeanPropertyWriter in the given ObjectNode . |
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> |
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> |
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 |
hasNullSerializer() |
boolean |
hasSerializer() |
protected boolean |
isRequired(AnnotationIntrospector intr)
NOTE: due to introspection, this is a slow method to call
and should never be called during actual serialization or filtering
of the property.
|
Object |
removeInternalSetting(Object key)
Method for removing entry for specified internal setting.
|
BeanPropertyWriter |
rename(NameTransformer transformer) |
void |
serializeAsColumn(Object bean,
JsonGenerator jgen,
SerializerProvider prov)
Alternative to
serializeAsField(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider) that is used when a POJO
is serialized as JSON Array; the difference is that no field names
are written. |
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.
|
void |
serializeAsPlaceholder(Object bean,
JsonGenerator jgen,
SerializerProvider prov)
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.
|
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
|
String |
toString() |
BeanPropertyWriter |
unwrappingWriter(NameTransformer unwrapper)
Method called create an instance that handles details of unwrapping
contained value.
|
boolean |
willSuppressNulls() |
public static final Object MARKER_FOR_EMPTY
protected final AnnotatedMember _member
protected final Annotations _contextAnnotations
protected final JavaType _declaredType
protected final Method _accessorMethod
_field
is null.protected final Field _field
_accessorMethod
is null.protected final SerializedString _name
protected final JavaType _cfgSerializationType
protected JsonSerializer<Object> _serializer
protected JsonSerializer<Object> _nullSerializer
protected PropertySerializerMap _dynamicSerializers
_serializer
is null), we will use a lookup structure for storing dynamically
resolved mapping from type(s) to serializer(s).protected final boolean _suppressNulls
protected final Object _suppressableValue
protected final Class<?>[] _includeInViews
protected TypeSerializer _typeSerializer
protected JavaType _nonTrivialBaseType
public BeanPropertyWriter(BeanPropertyDefinition propDef, AnnotatedMember member, Annotations contextAnnotations, JavaType declaredType, JsonSerializer<?> ser, TypeSerializer typeSer, JavaType serType, boolean suppressNulls, Object suppressableValue)
protected BeanPropertyWriter(BeanPropertyWriter base)
protected BeanPropertyWriter(BeanPropertyWriter base, SerializedString name)
public BeanPropertyWriter rename(NameTransformer transformer)
public void assignSerializer(JsonSerializer<Object> ser)
public void assignNullSerializer(JsonSerializer<Object> nullSer)
public BeanPropertyWriter unwrappingWriter(NameTransformer unwrapper)
public void setNonTrivialBaseType(JavaType t)
public String getName()
BeanProperty
getName
in interface BeanProperty
getName
in interface Named
public JavaType getType()
BeanProperty
getType
in interface BeanProperty
public <A extends Annotation> A getAnnotation(Class<A> acls)
BeanProperty
getAnnotation
in interface BeanProperty
public <A extends Annotation> A getContextAnnotation(Class<A> acls)
BeanProperty
getContextAnnotation
in interface BeanProperty
public AnnotatedMember getMember()
BeanProperty
getMember
in interface BeanProperty
public Object getInternalSetting(Object key)
public Object setInternalSetting(Object key, Object value)
public Object removeInternalSetting(Object key)
public SerializedString getSerializedName()
public boolean hasSerializer()
public boolean hasNullSerializer()
public boolean willSuppressNulls()
public JsonSerializer<Object> getSerializer()
public JavaType getSerializationType()
public Class<?> getRawSerializationType()
public Class<?> getPropertyType()
public Type getGenericPropertyType()
public Class<?>[] getViews()
protected boolean isRequired(AnnotationIntrospector intr)
NOTE: due to introspection, this is a slow method to call and should never be called during actual serialization or filtering of the property. Rather it is needed for traversal needed for things like constructing JSON Schema instances.
public void depositSchemaProperty(JsonObjectFormatVisitor objectVisitor) throws JsonMappingException
objectVisitor
- ObjectVisitor which can receive the propertyJsonMappingException
public void depositSchemaProperty(ObjectNode propertiesNode, SerializerProvider provider) throws JsonMappingException
BeanPropertyWriter
in the given ObjectNode
.
Otherwise, add the default schema JsonNode
in place of the writer's outputpropertiesNode
- Node which the given property would exist withinprovider
- Provider that can be used for accessing dynamic aspects of serialization
processing
BeanPropertyFilter.depositSchemaProperty(BeanPropertyWriter, ObjectNode, SerializerProvider)
JsonMappingException
public void serializeAsField(Object bean, JsonGenerator jgen, SerializerProvider prov) throws Exception
Exception
public void serializeAsColumn(Object bean, JsonGenerator jgen, SerializerProvider prov) throws Exception
serializeAsField(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)
that is used when a POJO
is serialized as JSON Array; the difference is that no field names
are written.Exception
public void serializeAsPlaceholder(Object bean, JsonGenerator jgen, SerializerProvider prov) throws Exception
Exception
protected JsonSerializer<Object> _findAndAddDynamic(PropertySerializerMap map, Class<?> type, SerializerProvider provider) throws JsonMappingException
JsonMappingException
public final Object get(Object bean) throws Exception
Note: method is final as it should not need to be overridden -- rather,
calling method(s) (serializeAsField(java.lang.Object, com.fasterxml.jackson.core.JsonGenerator, com.fasterxml.jackson.databind.SerializerProvider)
) should be overridden
to change the behavior
Exception
protected void _handleSelfReference(Object bean, JsonSerializer<?> ser) throws JsonMappingException
JsonMappingException
Copyright © 2012-2013 FasterXML. All Rights Reserved.