package org.codehaus.jackson.map; import org.codehaus.jackson.map.type.TypeFactory; import org.codehaus.jackson.type.JavaType; /** * Abstract class that defines API used by {@link SerializerProvider} * to obtain actual * {@link JsonSerializer} instances from multiple distinct factories. */ public abstract class SerializerFactory { /* /******************************************************** /* Basic SerializerFactory API: /******************************************************** */ /** * Method called to create (or, for immutable serializers, reuse) * a serializer for given type. * * @param type Type to be serialized * @param config Generic serialization configuration * * @deprecated Use {@link #createSerializer(JavaType,SerializationConfig)} instead */ @SuppressWarnings("unchecked") public <T> JsonSerializer<T> createSerializer(Class<T> type, SerializationConfig config) { return (JsonSerializer<T>) createSerializer(TypeFactory.type(type), config); } /** * Method called to create (or, for immutable serializers, reuse) * a serializer for given type. *<p> * Default implementation just calls {@link #createSerializer(Class, SerializationConfig)}; * sub-classes need to override method * * @param type Type to be serialized * @param config Generic serialization configuration */ @SuppressWarnings("unchecked") public JsonSerializer<Object> createSerializer(JavaType type, SerializationConfig config) { return (JsonSerializer<Object>) createSerializer(type.getRawClass(), config); } /** * 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. * * @since 1.5 */ public TypeSerializer createTypeSerializer(JavaType baseType, SerializationConfig config) { // Default implementation returns null for backwards compatibility reasons. return null; } }