package com.fasterxml.jackson.databind.ser;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
Abstract class that defines API used by SerializerProvider
to obtain actual JsonSerializer
instances from multiple distinct factories. /**
* Abstract class that defines API used by {@link SerializerProvider}
* to obtain actual
* {@link JsonSerializer} instances from multiple distinct factories.
*/
public abstract class SerializerFactory
{
/*
/**********************************************************
/* Additional configuration methods
/**********************************************************
*/
Convenience method for creating a new factory instance with additional serializer
provider; equivalent to calling
withConfig(getConfig().withAdditionalSerializers(additional));
/**
* Convenience method for creating a new factory instance with additional serializer
* provider; equivalent to calling
*<pre>
* withConfig(getConfig().withAdditionalSerializers(additional));
*</pre>
*/
public abstract SerializerFactory withAdditionalSerializers(Serializers additional);
public abstract SerializerFactory withAdditionalKeySerializers(Serializers additional);
Convenience method for creating a new factory instance with additional bean
serializer modifier; equivalent to calling
withConfig(getConfig().withSerializerModifier(modifier));
/**
* Convenience method for creating a new factory instance with additional bean
* serializer modifier; equivalent to calling
*<pre>
* withConfig(getConfig().withSerializerModifier(modifier));
*</pre>
*/
public abstract SerializerFactory withSerializerModifier(BeanSerializerModifier modifier);
/*
/**********************************************************
/* Basic SerializerFactory API:
/**********************************************************
*/
Method called to create (or, for immutable serializers, reuse) a serializer for given type.
Params: - prov – Provider that needs to be used to resolve annotation-provided
serializers (but NOT for others)
Since: 2.1 (earlier versions had method with different signature)
/**
* Method called to create (or, for immutable serializers, reuse) a serializer for given type.
*
* @param prov Provider that needs to be used to resolve annotation-provided
* serializers (but NOT for others)
*
* @since 2.1 (earlier versions had method with different signature)
*/
public abstract JsonSerializer<Object> createSerializer(SerializerProvider prov,
JavaType baseType)
throws JsonMappingException;
Method called to create a type information serializer for given base type,
if one is needed. If not needed (no polymorphic handling configured), should
return null.
Params: - baseType – Declared type to use as the base type for type information serializer
Returns: Type serializer to use for the base type, if one is needed; null if not.
/**
* Method called to create a type information serializer for given base type,
* if one is needed. If not needed (no polymorphic handling configured), should
* return null.
*
* @param baseType Declared type to use as the base type for type information serializer
*
* @return Type serializer to use for the base type, if one is needed; null if not.
*/
public abstract TypeSerializer createTypeSerializer(SerializationConfig config,
JavaType baseType)
throws JsonMappingException;
Method called to create serializer to use for serializing JSON property names (which must
be output as JsonToken.FIELD_NAME
) for Map that has specified declared
key type, and is for specified property (or, if property is null, as root value)
Params: - type – Declared type for Map keys
- defaultImpl – Default key serializer implementation to use, if no custom ones
are found (may be null)
Returns: Serializer to use, if factory knows it; null if not (in which case default
serializer is to be used) Since: 2.11
/**
* Method called to create serializer to use for serializing JSON property names (which must
* be output as <code>JsonToken.FIELD_NAME</code>) for Map that has specified declared
* key type, and is for specified property (or, if property is null, as root value)
*
* @param type Declared type for Map keys
* @param defaultImpl Default key serializer implementation to use, if no custom ones
* are found (may be null)
*
* @return Serializer to use, if factory knows it; null if not (in which case default
* serializer is to be used)
*
* @since 2.11
*/
public JsonSerializer<Object> createKeySerializer(SerializerProvider prov,
JavaType type, JsonSerializer<Object> defaultImpl)
throws JsonMappingException {
return createKeySerializer(prov.getConfig(), type, defaultImpl);
}
@Deprecated // since 2.11
public abstract JsonSerializer<Object> createKeySerializer(SerializationConfig config,
JavaType type, JsonSerializer<Object> defaultImpl)
throws JsonMappingException;
}