|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.fasterxml.jackson.databind.ser.BeanPropertyWriter
public class BeanPropertyWriter
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.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface com.fasterxml.jackson.databind.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 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" |
Constructor Summary | |
---|---|
|
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)
|
Method Summary | ||
---|---|---|
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. |
|
|
getAnnotation(Class<A> acls)
Method for finding annotation associated with this property; meaning annotation associated with one of entities used to access property. |
|
|
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()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
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 HashMap<Object,Object> _internalSettings
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
Constructor Detail |
---|
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)
Method Detail |
---|
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 property
JsonMappingException
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 output
propertiesNode
- 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
public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |