Object#getClass does not count);
as well as for "standard" JDK types. Latter is achieved
by delegating calls to BasicSerializerFactory
to find serializers both for "standard" JDK types (and in some cases,
sub-classes as is the case for collection classes like
java.util.List s and java.util.Map s) and bean (value)
classes.
Note about delegating calls to BasicSerializerFactory:
although it would be nicer to use linear delegation
for construction (to essentially dispatch all calls first to the
underlying BasicSerializerFactory; or alternatively after
failing to provide bean-based serializer}, there is a problem:
priority levels for detecting standard types are mixed. That is,
we want to check if a type is a bean after some of "standard" JDK
types, but before the rest.
As a result, "mixed" delegation used, and calls are NOT done using
regular SerializerFactory interface but rather via
direct calls to BasicSerializerFactory.
Finally, since all caching is handled by the serializer provider (not factory) and there is no configurability, this factory is stateless. This means that a global singleton instance can be used.
| Modifier and Type | Field and Description |
|---|---|
| public static final BeanSerializerFactory | instance
Like |
| private static final long |
| Access | Constructor and Description |
|---|---|
| protected | BeanSerializerFactory(SerializerFactoryConfig config)
Constructor for creating instances with specified configuration. |
| Modifier and Type | Method and Description |
|---|---|
| protected BeanPropertyWriter | _constructWriter(SerializationContext ctxt, BeanPropertyDefinition propDef, PropertyBuilder pb, boolean staticTyping, AnnotatedMember accessor)
Secondary helper method for constructing |
| protected ValueSerializer | _createSerializer2(SerializationContext ctxt, BeanDescription.
|
| protected ValueSerializer | _findUnsupportedTypeSerializer(SerializationContext ctxt, JavaType type, BeanDescription.
|
| protected boolean | |
| protected ValueSerializer | constructBeanOrAddOnSerializer(SerializationContext ctxt, JavaType type, BeanDescription.
Method called to construct serializer based on checking which condition is matched:
|
| protected BeanSerializerBuilder | |
| protected BeanPropertyWriter | constructFilteredBeanWriter(BeanPropertyWriter writer, Class<?>[] inViews)
Method called to construct a filtered writer, for given view definitions. |
| protected ObjectIdWriter | constructObjectIdHandler(SerializationContext ctxt, BeanDescription.
|
| protected PropertyBuilder | |
| public ValueSerializer | createSerializer(SerializationContext ctxt, JavaType origType, BeanDescription.
Implements abstract tools. Main serializer constructor method. |
| protected List | filterBeanProperties(SerializationConfig config, BeanDescription.
Overridable method that can filter out properties. |
| protected List | filterUnwantedJDKProperties(SerializationConfig config, BeanDescription.
Overridable method used to filter out specifically problematic JDK provided properties. |
| protected List | findBeanProperties(SerializationContext ctxt, BeanDescription.
Method used to collect all actual serializable properties. |
| protected boolean | isPotentialBeanType(Class<?> type)
Helper method used to skip processing for types that we know cannot be (i.e. are never consider to be) beans: things like primitives, Arrays, Enums, and proxy types. |
| protected void | processViews(SerializationConfig config, BeanSerializerBuilder builder)
Method called to handle view information for constructed serializer, based on bean property writers. |
| protected void | removeIgnorableTypes(SerializationContext ctxt, BeanDescription.
Method that will apply by-type limitations (as per [JACKSON-429]);
by default this is based on |
| protected List | removeOverlappingTypeIds(SerializationContext ctxt, BeanDescription.
Helper method called to ensure that we do not have "duplicate" type ids. |
| protected void | removeSetterlessGetters(SerializationConfig config, BeanDescription.
Helper method that will remove all properties that do not have a mutator. |
| public SerializerFactory | withConfig(SerializerFactoryConfig config)
Implements abstract tools. Method used by module registration functionality, to attach additional serializer providers into this serializer factory. |
| instance | back to summary |
|---|---|
| public static final BeanSerializerFactory instance Like | |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID | |
| BeanSerializerFactory | back to summary |
|---|---|
| protected BeanSerializerFactory(SerializerFactoryConfig config) Constructor for creating instances with specified configuration. | |
| _constructWriter | back to summary |
|---|---|
| protected BeanPropertyWriter _constructWriter(SerializationContext ctxt, BeanPropertyDefinition propDef, PropertyBuilder pb, boolean staticTyping, AnnotatedMember accessor) Secondary helper method for constructing | |
| _createSerializer2 | back to summary |
|---|---|
| protected ValueSerializer | |
| _findUnsupportedTypeSerializer | back to summary |
|---|---|
| protected ValueSerializer | |
| _isUnserializableJacksonType | back to summary |
|---|---|
| protected boolean _isUnserializableJacksonType(SerializationContext ctxt, JavaType type) | |
| constructBeanOrAddOnSerializer | back to summary |
|---|---|
| protected ValueSerializer Method called to construct serializer based on checking which condition is matched:
null.
| |
| constructBeanSerializerBuilder | back to summary |
|---|---|
| protected BeanSerializerBuilder constructBeanSerializerBuilder(SerializationConfig config, BeanDescription. | |
| constructFilteredBeanWriter | back to summary |
|---|---|
| protected BeanPropertyWriter constructFilteredBeanWriter(BeanPropertyWriter writer, Class<?>[] inViews) Method called to construct a filtered writer, for given view definitions. Default implementation constructs filter that checks active view type to views property is to be included in. | |
| constructObjectIdHandler | back to summary |
|---|---|
| protected ObjectIdWriter constructObjectIdHandler(SerializationContext ctxt, BeanDescription. | |
| constructPropertyBuilder | back to summary |
|---|---|
| protected PropertyBuilder constructPropertyBuilder(SerializationConfig config, BeanDescription. | |
| createSerializer | back to summary |
|---|---|
| public ValueSerializer Implements abstract tools. Main serializer constructor method. We will have to be careful
with respect to ordering of various method calls: essentially
we want to reliably figure out which classes are standard types,
and which are beans. The problem is that some bean Classes may
implement standard interfaces (say, Note sub-classes may choose to complete replace implementation, if they want to alter priority of serializer lookups.
| |
| filterBeanProperties | back to summary |
|---|---|
| protected List Overridable method that can filter out properties. Default implementation checks annotations class may have. | |
| filterUnwantedJDKProperties | back to summary |
|---|---|
| protected List Overridable method used to filter out specifically problematic JDK provided properties. See issue databind-3305 for details. | |
| findBeanProperties | back to summary |
|---|---|
| protected List Method used to collect all actual serializable properties. Can be overridden to implement custom detection schemes. | |
| isPotentialBeanType | back to summary |
|---|---|
| protected boolean isPotentialBeanType(Class<?> type) Helper method used to skip processing for types that we know cannot be (i.e. are never consider to be) beans: things like primitives, Arrays, Enums, and proxy types. Note that usually we shouldn't really be getting these sort of types anyway; but better safe than sorry. | |
| processViews | back to summary |
|---|---|
| protected void processViews(SerializationConfig config, BeanSerializerBuilder builder) Method called to handle view information for constructed serializer, based on bean property writers. Note that this method is designed to be overridden by sub-classes if they want to provide custom view handling. As such it is not considered an internal implementation detail, and will be supported as part of API going forward. | |
| removeIgnorableTypes | back to summary |
|---|---|
| protected void removeIgnorableTypes(SerializationContext ctxt, BeanDescription. Method that will apply by-type limitations (as per [JACKSON-429]);
by default this is based on | |
| removeOverlappingTypeIds | back to summary |
|---|---|
| protected List Helper method called to ensure that we do not have "duplicate" type ids. Added to resolve [databind#222] | |
| removeSetterlessGetters | back to summary |
|---|---|
| protected void removeSetterlessGetters(SerializationConfig config, BeanDescription. Helper method that will remove all properties that do not have a mutator. | |
| withConfig | back to summary |
|---|---|
| public SerializerFactory withConfig(SerializerFactoryConfig config) Implements abstract tools. Method used by module registration functionality, to attach additional serializer providers into this serializer factory. This is typically handled by constructing a new instance with additional serializers, to ensure thread-safe access.
| |