public class BeanPropertyWriter extends PropertyWriter implements Serializable
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.Bogus, 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 cannot 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.
|
protected PropertyName |
_wrapperName
Wrapper name to use for this element, if any
|
static Object |
MARKER_FOR_EMPTY
Marker object used to indicate "do not serialize if empty"
|
_aliases, _metadata, _propertyFormatEMPTY_FORMAT, EMPTY_INCLUDE| Modifier | Constructor and Description |
|---|---|
protected |
BeanPropertyWriter()
Constructor that may be of use to virtual properties, when there is need
for the zero-arg ("default") constructor, and actual initialization is
done after constructor call.
|
|
BeanPropertyWriter(BeanPropertyDefinition propDef,
AnnotatedMember member,
Annotations contextAnnotations,
JavaType declaredType,
JsonSerializer<?> ser,
TypeSerializer typeSer,
JavaType serType,
boolean suppressNulls,
Object suppressableValue)
Deprecated.
|
|
BeanPropertyWriter(BeanPropertyDefinition propDef,
AnnotatedMember member,
Annotations contextAnnotations,
JavaType declaredType,
JsonSerializer<?> ser,
TypeSerializer typeSer,
JavaType serType,
boolean suppressNulls,
Object suppressableValue,
Class<?>[] includeInViews) |
protected |
BeanPropertyWriter(BeanPropertyWriter base)
"Copy constructor" to be used by filtering sub-classes
|
protected |
BeanPropertyWriter(BeanPropertyWriter base,
PropertyName name) |
protected |
BeanPropertyWriter(BeanPropertyWriter base,
SerializedString name) |
| Modifier and Type | Method and Description |
|---|---|
protected void |
_depositSchemaProperty(ObjectNode propertiesNode,
JsonNode schemaNode) |
protected JsonSerializer<Object> |
_findAndAddDynamic(PropertySerializerMap map,
Class<?> type,
SerializerProvider provider) |
protected boolean |
_handleSelfReference(Object bean,
JsonGenerator gen,
SerializerProvider prov,
JsonSerializer<?> ser)
Method called to handle a direct self-reference through this property.
|
protected BeanPropertyWriter |
_new(PropertyName newName)
Overridable factory method used by sub-classes
|
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 |
assignTypeSerializer(TypeSerializer typeSer)
Method called to set, reset or clear the configured type serializer for
property.
|
void |
depositSchemaProperty(JsonObjectFormatVisitor v,
SerializerProvider provider)
Traversal method used for things like JSON Schema generation, or
POJO introspection.
|
void |
depositSchemaProperty(ObjectNode propertiesNode,
SerializerProvider provider)
Deprecated.
|
void |
fixAccess(SerializationConfig config)
Method called to ensure that the mutator has proper access rights to
be called, as per configuration.
|
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 accessing annotations directly declared for property that this
writer is associated with.
|
<A extends Annotation> |
getContextAnnotation(Class<A> acls)
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.
|
PropertyName |
getFullName()
Method for getting full name definition, including possible
format-specific additional properties (such as namespace when
using XML backend).
|
Type |
getGenericPropertyType()
Deprecated.
Since 2.7, to be removed from 2.9, use
getType() instead. |
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()
Deprecated.
Since 2.7, to be removed from 2.9, use
getType() instead. |
Class<?> |
getRawSerializationType()
Deprecated.
|
JavaType |
getSerializationType() |
SerializableString |
getSerializedName() |
JsonSerializer<Object> |
getSerializer() |
JavaType |
getType()
Method to get declared type of the property.
|
TypeSerializer |
getTypeSerializer() |
Class<?>[] |
getViews() |
PropertyName |
getWrapperName()
If property is indicated to be wrapped, name of
wrapper element to use.
|
boolean |
hasNullSerializer() |
boolean |
hasSerializer() |
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).
|
Object |
removeInternalSetting(Object key)
Method for removing entry for specified internal setting.
|
BeanPropertyWriter |
rename(NameTransformer transformer) |
void |
serializeAsElement(Object bean,
JsonGenerator gen,
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 gen,
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 |
serializeAsOmittedField(Object bean,
JsonGenerator gen,
SerializerProvider prov)
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.
|
void |
serializeAsPlaceholder(Object bean,
JsonGenerator gen,
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() |
boolean |
wouldConflictWithName(PropertyName name)
Method called to check to see if this property has a name that would
conflict with a given name.
|
findAnnotationfindAliases, findFormatOverrides, findPropertyFormat, findPropertyInclusion, getMetadata, isRequired, isVirtualpublic static final Object MARKER_FOR_EMPTY
protected final SerializedString _name
NOTE: do NOT change name of this field; it is accessed by Afterburner module (until 2.4; not directly from 2.5) ALSO NOTE: ... and while it really ought to be `SerializableString`, changing that is also binary-incompatible change. So nope.
protected final PropertyName _wrapperName
protected final JavaType _declaredType
protected final JavaType _cfgSerializationType
protected JavaType _nonTrivialBaseType
protected final transient Annotations _contextAnnotations
NOTE: transient just to support JDK serializability; Annotations do not serialize. At all.
protected final AnnotatedMember _member
protected transient Method _accessorMethod
_field is null.
`transient` (and non-final) only to support JDK serializability.
protected transient Field _field
_accessorMethod is null.
`transient` (and non-final) only to support JDK serializability.
protected JsonSerializer<Object> _serializer
protected JsonSerializer<Object> _nullSerializer
protected TypeSerializer _typeSerializer
protected transient 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
_nullSerializer.protected final Object _suppressableValue
protected final Class<?>[] _includeInViews
public BeanPropertyWriter(BeanPropertyDefinition propDef, AnnotatedMember member, Annotations contextAnnotations, JavaType declaredType, JsonSerializer<?> ser, TypeSerializer typeSer, JavaType serType, boolean suppressNulls, Object suppressableValue, Class<?>[] includeInViews)
@Deprecated public BeanPropertyWriter(BeanPropertyDefinition propDef, AnnotatedMember member, Annotations contextAnnotations, JavaType declaredType, JsonSerializer<?> ser, TypeSerializer typeSer, JavaType serType, boolean suppressNulls, Object suppressableValue)
protected BeanPropertyWriter()
protected BeanPropertyWriter(BeanPropertyWriter base)
protected BeanPropertyWriter(BeanPropertyWriter base, PropertyName name)
protected BeanPropertyWriter(BeanPropertyWriter base, SerializedString name)
public BeanPropertyWriter rename(NameTransformer transformer)
protected BeanPropertyWriter _new(PropertyName newName)
public void assignTypeSerializer(TypeSerializer typeSer)
public void assignSerializer(JsonSerializer<Object> ser)
public void assignNullSerializer(JsonSerializer<Object> nullSer)
public BeanPropertyWriter unwrappingWriter(NameTransformer unwrapper)
public void setNonTrivialBaseType(JavaType t)
public void fixAccess(SerializationConfig config)
public String getName()
BeanPropertygetName in interface BeanPropertygetName in interface NamedgetName in class PropertyWriterpublic PropertyName getFullName()
BeanPropertygetFullName in interface BeanPropertygetFullName in class PropertyWriterpublic JavaType getType()
BeanPropertygetType in interface BeanPropertypublic PropertyName getWrapperName()
BeanPropertygetWrapperName in interface BeanPropertypublic <A extends Annotation> A getAnnotation(Class<A> acls)
PropertyWritergetAnnotation in interface BeanPropertygetAnnotation in class PropertyWriterpublic <A extends Annotation> A getContextAnnotation(Class<A> acls)
PropertyWritergetContextAnnotation in interface BeanPropertygetContextAnnotation in class PropertyWriterpublic AnnotatedMember getMember()
BeanPropertygetMember in interface BeanPropertyprotected void _depositSchemaProperty(ObjectNode propertiesNode, JsonNode schemaNode)
public Object getInternalSetting(Object key)
public Object setInternalSetting(Object key, Object value)
public Object removeInternalSetting(Object key)
public SerializableString getSerializedName()
public boolean hasSerializer()
public boolean hasNullSerializer()
public TypeSerializer getTypeSerializer()
public boolean isUnwrapping()
Default implementation simply returns false.
public boolean willSuppressNulls()
public boolean wouldConflictWithName(PropertyName name)
public JsonSerializer<Object> getSerializer()
public JavaType getSerializationType()
@Deprecated public Class<?> getRawSerializationType()
@Deprecated public Class<?> getPropertyType()
getType() instead.@Deprecated public Type getGenericPropertyType()
getType() instead.public Class<?>[] getViews()
public void serializeAsField(Object bean, JsonGenerator gen, SerializerProvider prov) throws Exception
serializeAsField in class PropertyWriterExceptionpublic void serializeAsOmittedField(Object bean, JsonGenerator gen, SerializerProvider prov) throws Exception
serializeAsOmittedField in class PropertyWriterExceptionpublic void serializeAsElement(Object bean, JsonGenerator gen, 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.serializeAsElement in class PropertyWriterExceptionpublic void serializeAsPlaceholder(Object bean, JsonGenerator gen, SerializerProvider prov) throws Exception
serializeAsPlaceholder in class PropertyWriterExceptionpublic void depositSchemaProperty(JsonObjectFormatVisitor v, SerializerProvider provider) throws JsonMappingException
PropertyWriterdepositSchemaProperty in interface BeanPropertydepositSchemaProperty in class PropertyWriterv - Visitor to used as the callback handlerJsonMappingException@Deprecated 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 outputdepositSchemaProperty in class PropertyWriterpropertiesNode - Node which the given property would exist withinprovider - Provider that can be used for accessing dynamic aspects of
serialization processingJsonMappingExceptionprotected JsonSerializer<Object> _findAndAddDynamic(PropertySerializerMap map, Class<?> type, SerializerProvider provider) throws JsonMappingException
JsonMappingExceptionpublic 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
Exceptionprotected boolean _handleSelfReference(Object bean, JsonGenerator gen, SerializerProvider prov, JsonSerializer<?> ser) throws JsonMappingException
JsonMappingException; fully handle serialization (and return
true); or indicate that it should be serialized normally (return false).
Default implementation will throw JsonMappingException if
SerializationFeature.FAIL_ON_SELF_REFERENCES is enabled; or
return false if it is disabled.
JsonMappingException if there
is no way handle itJsonMappingExceptionCopyright © 2018 JBoss by Red Hat. All rights reserved.