Class StdTypeResolverBuilder

java.lang.Object
tools.jackson.databind.jsontype.impl.StdTypeResolverBuilder
All Implemented Interfaces:
TypeResolverBuilder<StdTypeResolverBuilder>
Direct Known Subclasses:
DefaultTypeResolverBuilder

public class StdTypeResolverBuilder extends Object implements TypeResolverBuilder<StdTypeResolverBuilder>
Default TypeResolverBuilder implementation.
  • Field Details

    • _idType

      protected com.fasterxml.jackson.annotation.JsonTypeInfo.Id _idType
    • _includeAs

      protected com.fasterxml.jackson.annotation.JsonTypeInfo.As _includeAs
    • _typeProperty

      protected String _typeProperty
    • _typeIdVisible

      protected boolean _typeIdVisible
      Whether type id should be exposed to deserializers or not
    • _requireTypeIdForSubtypes

      protected Boolean _requireTypeIdForSubtypes
      Boolean value configured through JsonTypeInfo.requireTypeIdForSubtypes(). If this value is not null, this value should override the global configuration of MapperFeature.REQUIRE_TYPE_ID_FOR_SUBTYPES.
    • _defaultImpl

      protected Class<?> _defaultImpl
      Default class to use in case type information is not available or is broken.
    • _customIdResolver

      protected TypeIdResolver _customIdResolver
  • Constructor Details

    • StdTypeResolverBuilder

      public StdTypeResolverBuilder()
    • StdTypeResolverBuilder

      public StdTypeResolverBuilder(com.fasterxml.jackson.annotation.JsonTypeInfo.Value settings)
    • StdTypeResolverBuilder

      public StdTypeResolverBuilder(com.fasterxml.jackson.annotation.JsonTypeInfo.Id idType, com.fasterxml.jackson.annotation.JsonTypeInfo.As idAs, String propName)
    • StdTypeResolverBuilder

      protected StdTypeResolverBuilder(StdTypeResolverBuilder base, Class<?> defaultImpl)
  • Method Details

    • noTypeInfoBuilder

      public static StdTypeResolverBuilder noTypeInfoBuilder()
    • buildTypeSerializer

      public TypeSerializer buildTypeSerializer(SerializationContext ctxt, JavaType baseType, Collection<NamedType> subtypes)
      Description copied from interface: TypeResolverBuilder
      Method for building type serializer based on current configuration of this builder.
      Specified by:
      buildTypeSerializer in interface TypeResolverBuilder<StdTypeResolverBuilder>
      Parameters:
      baseType - Base type that constructed resolver will handle; super type of all types it will be used for.
    • buildTypeDeserializer

      public TypeDeserializer buildTypeDeserializer(DeserializationContext ctxt, JavaType baseType, Collection<NamedType> subtypes)
      Description copied from interface: TypeResolverBuilder
      Method for building type deserializer based on current configuration of this builder.
      Specified by:
      buildTypeDeserializer in interface TypeResolverBuilder<StdTypeResolverBuilder>
      Parameters:
      baseType - Base type that constructed resolver will handle; super type of all types it will be used for.
      subtypes - Known subtypes of the base type.
    • defineDefaultImpl

      protected JavaType defineDefaultImpl(DatabindContext ctxt, JavaType baseType)
    • init

      public StdTypeResolverBuilder init(com.fasterxml.jackson.annotation.JsonTypeInfo.Value settings, TypeIdResolver idRes)
      Description copied from interface: TypeResolverBuilder
      Initialization method that is called right after constructing the builder instance, in cases where information could not be passed directly (for example when instantiated for an annotation)
      Specified by:
      init in interface TypeResolverBuilder<StdTypeResolverBuilder>
      Parameters:
      settings - Configuration settings to apply.
      Returns:
      Resulting builder instance (usually this builder, but not necessarily)
    • withDefaultImpl

      public StdTypeResolverBuilder withDefaultImpl(Class<?> defaultImpl)
      Description copied from interface: TypeResolverBuilder
      "Mutant factory" method for creating a new instance with different default implementation to use if type id is either not available, or cannot be resolved.

      In Jackson 2.x there was instead method defaultImpl() which was a mutator: this method MUST NOT change the underlying state.

      Specified by:
      withDefaultImpl in interface TypeResolverBuilder<StdTypeResolverBuilder>
      Returns:
      Either this instance (if nothing changed) or a new instance with different default implementation
    • withSettings

      public StdTypeResolverBuilder withSettings(com.fasterxml.jackson.annotation.JsonTypeInfo.Value settings)
      Description copied from interface: TypeResolverBuilder
      Method for overriding type information.
      Specified by:
      withSettings in interface TypeResolverBuilder<StdTypeResolverBuilder>
    • _propName

      protected String _propName(String propName, com.fasterxml.jackson.annotation.JsonTypeInfo.Id idType)
    • getDefaultImpl

      public Class<?> getDefaultImpl()
      Description copied from interface: TypeResolverBuilder
      Accessor for currently configured default type; implementation class that may be used in case no valid type information is available during type resolution
      Specified by:
      getDefaultImpl in interface TypeResolverBuilder<StdTypeResolverBuilder>
    • getTypeProperty

      public String getTypeProperty()
    • isTypeIdVisible

      public boolean isTypeIdVisible()
    • idResolver

      protected TypeIdResolver idResolver(DatabindContext ctxt, JavaType baseType, PolymorphicTypeValidator subtypeValidator, Collection<NamedType> subtypes, boolean forSer, boolean forDeser)
      Helper method that will either return configured custom type id resolver, or construct a standard resolver given configuration.
    • subTypeValidator

      public PolymorphicTypeValidator subTypeValidator(DatabindContext ctxt)
      Overridable helper method for determining actual validator to use when constructing type serializers and type deserializers.

      Default implementation simply uses one configured and accessible using MapperConfig.getPolymorphicTypeValidator().

    • verifyBaseTypeValidity

      protected PolymorphicTypeValidator verifyBaseTypeValidity(DatabindContext ctxt, JavaType baseType)
      Helper method called to check that base type is valid regarding possible constraints on basetype/subtype combinations allowed for polymorphic type handling. Currently limits are verified for class name - based methods only.
    • reportInvalidBaseType

      protected PolymorphicTypeValidator reportInvalidBaseType(DatabindContext ctxt, JavaType baseType, PolymorphicTypeValidator ptv)
    • allowPrimitiveTypes

      protected boolean allowPrimitiveTypes(DatabindContext ctxt, JavaType baseType)
      Overridable helper method that is called to determine whether type serializers and type deserializers may be created even if base type is Java primitive type. Default implementation simply returns false (since primitive types cannot be sub-classed, are never polymorphic) but custom implementations may change the logic for some special cases.
      Parameters:
      ctxt - Currently active context
      baseType - Primitive base type for property being handled
      Returns:
      True if type (de)serializer may be created even if base type is Java primitive type; false if not
    • _strictTypeIdHandling

      protected boolean _strictTypeIdHandling(DatabindContext ctxt, JavaType baseType)
      Determines whether strict type ID handling should be used for this type or not. This will be enabld as configured by JsonTypeInfo.requireTypeIdForSubtypes() unless its value is OptBoolean.DEFAULT. In case the value of JsonTypeInfo.requireTypeIdForSubtypes() is OptBoolean.DEFAULT, this will be enabled when either the type has type resolver annotations or if MapperFeature.REQUIRE_TYPE_ID_FOR_SUBTYPES is enabled.
      Parameters:
      ctxt - Currently active context
      baseType - the base type to check for type resolver annotations
      Returns:
      true if the class has type resolver annotations, or the strict handling feature is enabled, false otherwise.
    • _hasTypeResolver

      protected boolean _hasTypeResolver(DatabindContext ctxt, JavaType baseType)
      Checks whether the given class has annotations indicating some type resolver is applied, for example JsonTypeInfo. Only initializes _hasTypeResolver(DatabindContext, JavaType) once if its value is null.
      Parameters:
      ctxt - Currently active context
      baseType - the base type to check for type resolver annotations
      Returns:
      true if the class has type resolver annotations, false otherwise