Top Description Fields Constructors Methods
tools.jackson.databind.ser.std

public Class StdDelegatingSerializer

extends StdSerializer<Object>
Class Inheritance
Imports
tools.jackson.core.JacksonException, .JsonGenerator, tools.jackson.databind.*, tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitorWrapper, tools.jackson.databind.jsontype.TypeSerializer, tools.jackson.databind.ser.impl.PropertySerializerMap, tools.jackson.databind.util.ClassUtil, .Converter

Serializer implementation where given Java type is first converted to an intermediate "delegate type" (using a configured Converter, and then this delegate value is serialized by Jackson.

Note that although types may be related, they must not be same; trying to do this will result in an exception.

Field Summary

Modifier and TypeField and Description
protected final Converter<Object, ?>
protected final ValueSerializer<Object>
_delegateSerializer

Underlying serializer for type T.

protected final JavaType
_delegateType

Fully resolved delegate type, with generic information if any available.

protected PropertySerializerMap
_dynamicValueSerializers

If delegate serializer needs to be accessed dynamically (non-final type, static type not forced), this data structure helps with efficient lookups.

protected final BeanProperty
Inherited from tools.jackson.databind.ser.std.StdSerializer:
_handledType

Constructor Summary

AccessConstructor and Description
public
public <T>
StdDelegatingSerializer(Class<T> cls, Converter<T, ?> converter)

public
StdDelegatingSerializer(Converter<Object, ?> converter, JavaType delegateType, ValueSerializer<?> delegateSerializer, BeanProperty prop)

Method Summary

Modifier and TypeMethod and Description
protected ValueSerializer<Object>
_findSerializer(Object value, SerializationContext ctxt)

Helper method used for locating serializer to use in dynamic use case, where actual type value gets converted to is not specified beyond basic java.lang.Object, and where serializer needs to be located dynamically based on actual value type.

public void
protected Object

Returns:

Result of conversion
convertValue
(SerializationContext ctxt, Object
Value to convert
value
)

Method called to convert from source Java value into delegate value (which will be serialized using standard Jackson serializer for delegate type)

The default implementation uses configured Converter to do conversion.

public ValueSerializer<?>
createContextual(SerializationContext ctxt, BeanProperty property)

Overrides tools.jackson.databind.ValueSerializer.createContextual.

Method called to see if a different (or differently configured) serializer is needed to serialize values of specified property (or, for root values, in which case `null` is passed).

public Converter<Object, ?>
public ValueSerializer<?>
getDelegatee()

Overrides tools.jackson.databind.ValueSerializer.getDelegatee.

Accessor that can be used to determine if this serializer uses another serializer for actual serialization, by delegating calls.

public boolean
isEmpty(SerializationContext ctxt, Object value)

Overrides tools.jackson.databind.ValueSerializer.isEmpty.

Method called to check whether given serializable value is considered "empty" value (for purposes of suppressing serialization of empty values).

public void
resolve(SerializationContext ctxt)

Overrides tools.jackson.databind.ValueSerializer.resolve.

Method called after SerializationContext has registered the serializer, but before it has returned it to the caller.

public void
serialize(Object value, JsonGenerator gen, SerializationContext ctxt)

Implements abstract tools.jackson.databind.ser.std.StdSerializer.serialize.

Method that can be called to ask implementation to serialize values of type this serializer handles.

public void
serializeWithType(Object value, JsonGenerator gen, SerializationContext ctxt, TypeSerializer typeSer)

Overrides tools.jackson.databind.ValueSerializer.serializeWithType.

Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.

protected StdDelegatingSerializer
withDelegate(Converter<Object, ?> converter, JavaType delegateType, ValueSerializer<?> delegateSerializer, BeanProperty prop)

Method used for creating resolved contextual instances.

Inherited from tools.jackson.databind.ser.std.StdSerializer:
_neitherNull_nonEmpty_wrapIOFailureacceptJsonFormatVisitorForBinarycreateSchemaNodecreateSchemaNodefindAnnotatedContentSerializerfindContextualConvertingSerializerfindFormatFeaturefindFormatOverridesfindIncludeOverridesfindPropertyFilterhandledTypeisDefaultSerializervisitArrayFormatvisitArrayFormatvisitFloatFormatvisitIntFormatvisitIntFormatvisitStringFormatvisitStringFormatwrapAndThrowwrapAndThrow

Field Detail

_converterback to summary
protected final Converter<Object, ?> _converter
_delegateSerializerback to summary
protected final ValueSerializer<Object> _delegateSerializer

Underlying serializer for type T.

_delegateTypeback to summary
protected final JavaType _delegateType

Fully resolved delegate type, with generic information if any available.

_dynamicValueSerializersback to summary
protected PropertySerializerMap _dynamicValueSerializers

If delegate serializer needs to be accessed dynamically (non-final type, static type not forced), this data structure helps with efficient lookups.

Since
3.0
_propertyback to summary
protected final BeanProperty _property

Constructor Detail

StdDelegatingSerializerback to summary
public StdDelegatingSerializer(Converter<?, ?> converter)
Annotations
@SuppressWarnings:unchecked
StdDelegatingSerializerback to summary
public <T> StdDelegatingSerializer(Class<T> cls, Converter<T, ?> converter)
Annotations
@SuppressWarnings:unchecked
StdDelegatingSerializerback to summary
public StdDelegatingSerializer(Converter<Object, ?> converter, JavaType delegateType, ValueSerializer<?> delegateSerializer, BeanProperty prop)
Annotations
@SuppressWarnings:unchecked
Since
3.0

Method Detail

_findSerializerback to summary
protected ValueSerializer<Object> _findSerializer(Object value, SerializationContext ctxt)

Helper method used for locating serializer to use in dynamic use case, where actual type value gets converted to is not specified beyond basic java.lang.Object, and where serializer needs to be located dynamically based on actual value type.

acceptJsonFormatVisitorback to summary
public void acceptJsonFormatVisitor(JsonFormatVisitorWrapper visitor, JavaType typeHint)

Overrides tools.jackson.databind.ser.std.StdSerializer.acceptJsonFormatVisitor.

Implements tools.jackson.databind.jsonFormatVisitors.JsonFormatVisitable.acceptJsonFormatVisitor.

Doc from tools.jackson.databind.ser.std.StdSerializer.acceptJsonFormatVisitor.

Default implementation specifies no format. This behavior is usually overriden by custom serializers.

Annotations
@Override
convertValueback to summary
protected Object convertValue(SerializationContext ctxt, Object value)

Method called to convert from source Java value into delegate value (which will be serialized using standard Jackson serializer for delegate type)

The default implementation uses configured Converter to do conversion.

Parameters
value:Object

Value to convert

Returns:Object

Result of conversion

createContextualback to summary
public ValueSerializer<?> createContextual(SerializationContext ctxt, BeanProperty property)

Overrides tools.jackson.databind.ValueSerializer.createContextual.

Doc from tools.jackson.databind.ValueSerializer.createContextual.

Method called to see if a different (or differently configured) serializer is needed to serialize values of specified property (or, for root values, in which case `null` is passed). Note that instance that this method is called on is typically shared one and as a result method should NOT modify this instance but rather construct and return a new instance. This instance should only be returned as-is, in case it is already suitable for use.

Note that method is only called once per POJO property, and for the first usage as root value serializer; it is not called for every serialization, as doing that would have significant performance impact; most serializers cache contextual instances for future use.

Annotations
@Override
getConverterback to summary
public Converter<Object, ?> getConverter()
getDelegateeback to summary
public ValueSerializer<?> getDelegatee()

Overrides tools.jackson.databind.ValueSerializer.getDelegatee.

Doc from tools.jackson.databind.ValueSerializer.getDelegatee.

Accessor that can be used to determine if this serializer uses another serializer for actual serialization, by delegating calls. If so, will return immediate delegate (which itself may delegate to further serializers); otherwise will return null.

Annotations
@Override
isEmptyback to summary
public boolean isEmpty(SerializationContext ctxt, Object value)

Overrides tools.jackson.databind.ValueSerializer.isEmpty.

Doc from tools.jackson.databind.ValueSerializer.isEmpty.

Method called to check whether given serializable value is considered "empty" value (for purposes of suppressing serialization of empty values).

Default implementation will consider only null values to be empty.

Annotations
@Override
resolveback to summary
public void resolve(SerializationContext ctxt)

Overrides tools.jackson.databind.ValueSerializer.resolve.

Doc from tools.jackson.databind.ValueSerializer.resolve.

Method called after SerializationContext has registered the serializer, but before it has returned it to the caller. Called object can then resolve its dependencies to other types, including self-references (direct or indirect).

Note that this method does NOT return serializer, since resolution is not allowed to change actual serializer to use.

Annotations
@Override
serializeback to summary
public void serialize(Object value, JsonGenerator gen, SerializationContext ctxt) throws JacksonException

Implements abstract tools.jackson.databind.ser.std.StdSerializer.serialize.

Doc from tools.jackson.databind.ValueSerializer.serialize.

Method that can be called to ask implementation to serialize values of type this serializer handles.

Annotations
@Override
serializeWithTypeback to summary
public void serializeWithType(Object value, JsonGenerator gen, SerializationContext ctxt, TypeSerializer typeSer) throws JacksonException

Overrides tools.jackson.databind.ValueSerializer.serializeWithType.

Doc from tools.jackson.databind.ValueSerializer.serializeWithType.

Method that can be called to ask implementation to serialize values of type this serializer handles, using specified type serializer for embedding necessary type information.

Default implementation will throw UnsupportedOperationException to indicate that proper type handling needs to be implemented.

For simple datatypes written as a single scalar value (JSON String, Number, Boolean), implementation would look like:

  // note: method to call depends on whether this type is serialized as JSON scalar, object or Array!
  typeSer.writeTypePrefixForScalar(value, gen);
  serialize(value, gen, provider);
  typeSer.writeTypeSuffixForScalar(value, gen);
and implementations for type serialized as JSON Arrays or Objects would differ slightly, as START-ARRAY/END-ARRAY and START-OBJECT/END-OBJECT pairs need to be properly handled with respect to serializing of contents.
Annotations
@Override
withDelegateback to summary
protected StdDelegatingSerializer withDelegate(Converter<Object, ?> converter, JavaType delegateType, ValueSerializer<?> delegateSerializer, BeanProperty prop)

Method used for creating resolved contextual instances. Must be overridden when sub-classing.