Class MapperBuilder<M extends ObjectMapper,B extends MapperBuilder<M,B>>

java.lang.Object
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.cfg.MapperBuilder<M,B>
Direct Known Subclasses:
JsonMapper.Builder

public abstract class MapperBuilder<M extends ObjectMapper,B extends MapperBuilder<M,B>> extends Object
Jackson 3 will introduce fully immutable, builder-based system for constructing ObjectMappers. Same can not be done with 2.10 for backwards-compatibility reasons; but we can offer sort of "fake" builder, which simply encapsulates configuration calls. The main (and only) point is to allow gradual upgrade.
Since:
2.10
  • Field Details

  • Constructor Details

    • MapperBuilder

      protected MapperBuilder(M mapper)
  • Method Details

    • build

      public M build()
      Method to call to create actual mapper instance.

      Implementation detail: in 2.10 (but not 3.x) underlying mapper is eagerly constructed when builder is constructed, and method simply returns that instance.

    • isEnabled

      public boolean isEnabled(MapperFeature f)
    • isEnabled

      public boolean isEnabled(DeserializationFeature f)
    • isEnabled

      public boolean isEnabled(SerializationFeature f)
    • isEnabled

      public boolean isEnabled(JsonParser.Feature f)
    • isEnabled

      public boolean isEnabled(JsonGenerator.Feature f)
    • streamFactory

      public TokenStreamFactory streamFactory()
    • enable

      public B enable(MapperFeature... features)
    • disable

      public B disable(MapperFeature... features)
    • configure

      public B configure(MapperFeature feature, boolean state)
    • enable

      public B enable(SerializationFeature... features)
    • disable

      public B disable(SerializationFeature... features)
    • configure

      public B configure(SerializationFeature feature, boolean state)
    • enable

      public B enable(DeserializationFeature... features)
    • disable

      public B disable(DeserializationFeature... features)
    • configure

      public B configure(DeserializationFeature feature, boolean state)
    • enable

      public B enable(DatatypeFeature... features)
    • disable

      public B disable(DatatypeFeature... features)
    • configure

      public B configure(DatatypeFeature feature, boolean state)
    • enable

      public B enable(JsonParser.Feature... features)
    • disable

      public B disable(JsonParser.Feature... features)
    • configure

      public B configure(JsonParser.Feature feature, boolean state)
    • enable

      public B enable(JsonGenerator.Feature... features)
    • disable

      public B disable(JsonGenerator.Feature... features)
    • configure

      public B configure(JsonGenerator.Feature feature, boolean state)
    • enable

      public B enable(StreamReadFeature... features)
    • disable

      public B disable(StreamReadFeature... features)
    • configure

      public B configure(StreamReadFeature feature, boolean state)
    • enable

      public B enable(StreamWriteFeature... features)
    • disable

      public B disable(StreamWriteFeature... features)
    • configure

      public B configure(StreamWriteFeature feature, boolean state)
    • withConfigOverride

      public B withConfigOverride(Class<?> forType, Consumer<MutableConfigOverride> handler)
      Method for changing config overrides for specific type, through callback to specific handler.
      Parameters:
      forType - Type to change config overrides for
      handler - Function to call with MutableConfigOverride
      Since:
      2.13
    • withCoercionConfig

      public B withCoercionConfig(LogicalType forType, Consumer<MutableCoercionConfig> handler)
      Method for changing coercion config for specific logical types, through callback to specific handler.
      Since:
      2.13
    • withCoercionConfig

      public B withCoercionConfig(Class<?> forType, Consumer<MutableCoercionConfig> handler)
      Method for changing coercion config for specific physical type, through callback to specific handler.
      Since:
      2.13
    • withCoercionConfigDefaults

      public B withCoercionConfigDefaults(Consumer<MutableCoercionConfig> handler)
      Method for changing target-type-independent coercion configuration defaults.
      Since:
      2.13
    • addModule

      public B addModule(Module module)
    • addModules

      public B addModules(Module... modules)
    • addModules

      public B addModules(Iterable<? extends Module> modules)
    • findModules

      public static List<Module> findModules()
      Method for locating available methods, using JDK ServiceLoader facility, along with module-provided SPI.

      Note that method does not do any caching, so calls should be considered potentially expensive.

    • findModules

      public static List<Module> findModules(ClassLoader classLoader)
      Method for locating available methods, using JDK ServiceLoader facility, along with module-provided SPI.

      Note that method does not do any caching, so calls should be considered potentially expensive.

    • findAndAddModules

      public B findAndAddModules()
      Convenience method that is functionally equivalent to: addModules(builder.findModules());

      As with findModules(), no caching is done for modules, so care needs to be taken to either create and share a single mapper instance; or to cache introspected set of modules.

    • annotationIntrospector

      public B annotationIntrospector(AnnotationIntrospector intr)
      Method for replacing AnnotationIntrospector used by the mapper instance to be built. Note that doing this will replace the current introspector, which may lead to unavailability of core Jackson annotations. If you want to combine handling of multiple introspectors, have a look at AnnotationIntrospectorPair.
      See Also:
    • defaultAttributes

      public B defaultAttributes(ContextAttributes attrs)
      Method for replacing default ContextAttributes that the mapper uses: usually one initialized with a set of default shared attributes, but potentially also with a custom implementation.

      NOTE: instance specified will need to be thread-safe for usage, similar to the default (ContextAttributes.Impl).

      Parameters:
      attrs - Default instance to use: may not be null.
      Returns:
      This Builder instance to allow call chaining
    • typeFactory

      public B typeFactory(TypeFactory f)
    • subtypeResolver

      public B subtypeResolver(SubtypeResolver r)
    • visibility

      public B visibility(VisibilityChecker<?> vc)
    • visibility

      public B visibility(PropertyAccessor forMethod, JsonAutoDetect.Visibility visibility)
    • handlerInstantiator

      public B handlerInstantiator(HandlerInstantiator hi)
      Method for configuring HandlerInstantiator to use for creating instances of handlers (such as serializers, deserializers, type and type id resolvers), given a class.
      Parameters:
      hi - Instantiator to use; if null, use the default implementation
      Returns:
      Builder instance itself to allow chaining
    • propertyNamingStrategy

      public B propertyNamingStrategy(PropertyNamingStrategy s)
      Method for configuring PropertyNamingStrategy to use for adapting POJO property names (internal) into content property names (external)
      Parameters:
      s - Strategy instance to use; if null, use the default implementation
      Returns:
      Builder instance itself to allow chaining
    • accessorNaming

      public B accessorNaming(AccessorNamingStrategy.Provider s)
      Method for configuring AccessorNamingStrategy to use for auto-detecting accessor ("getter") and mutator ("setter") methods based on naming of methods.
      Parameters:
      s - Strategy instance to use; if null, use the default implementation
      Returns:
      Builder instance itself to allow chaining
      Since:
      2.12
    • serializerFactory

      public B serializerFactory(SerializerFactory f)
    • filterProvider

      public B filterProvider(FilterProvider prov)
      Method for configuring this mapper to use specified FilterProvider for mapping Filter Ids to actual filter instances.

      Note that usually it is better to use method in ObjectWriter, but sometimes this method is more convenient. For example, some frameworks only allow configuring of ObjectMapper instances and not ObjectWriters.

    • defaultPrettyPrinter

      public B defaultPrettyPrinter(PrettyPrinter pp)
    • injectableValues

      public B injectableValues(InjectableValues v)
    • nodeFactory

      public B nodeFactory(JsonNodeFactory f)
    • constructorDetector

      public B constructorDetector(ConstructorDetector cd)
      Method for specifying ConstructorDetector to use for determining some aspects of creator auto-detection (specifically auto-detection of constructor, and in particular behavior with single-argument constructors).
      Since:
      2.12
    • addHandler

      public B addHandler(DeserializationProblemHandler h)
      Method used for adding a DeserializationProblemHandler for this builder, at the head of the list (meaning it has priority over handler registered earlier).
    • clearProblemHandlers

      public B clearProblemHandlers()
      Method that may be used to remove all DeserializationProblemHandlers added to this builder (if any).
    • defaultSetterInfo

      public B defaultSetterInfo(JsonSetter.Value v)
    • defaultMergeable

      public B defaultMergeable(Boolean b)
      Method for setting default Setter configuration, regarding things like merging, null-handling; used for properties for which there are no per-type or per-property overrides (via annotations or config overrides).
    • defaultLeniency

      public B defaultLeniency(Boolean b)
      Method for setting default Setter configuration, regarding things like merging, null-handling; used for properties for which there are no per-type or per-property overrides (via annotations or config overrides).
    • defaultDateFormat

      public B defaultDateFormat(DateFormat df)
      Method for configuring the default DateFormat to use when serializing time values as Strings, and deserializing from JSON Strings. If you need per-request configuration, factory methods in ObjectReader and ObjectWriter instead.
    • defaultTimeZone

      public B defaultTimeZone(TimeZone tz)
      Method for overriding default TimeZone to use for formatting. Default value used is UTC (NOT default TimeZone of JVM).
    • defaultLocale

      public B defaultLocale(Locale locale)
      Method for overriding default locale to use for formatting. Default value used is Locale.getDefault().
    • defaultBase64Variant

      public B defaultBase64Variant(Base64Variant v)
      Method that will configure default Base64Variant that byte[] serializers and deserializers will use.
      Parameters:
      v - Base64 variant to use
      Returns:
      This builder instance to allow call chaining
    • serializationInclusion

      public B serializationInclusion(JsonInclude.Include incl)
      Method for configured default property inclusion to use for serialization.
      Parameters:
      incl - Default property inclusion to set
      Returns:
      This builder instance to allow call chaining
    • defaultPropertyInclusion

      public B defaultPropertyInclusion(JsonInclude.Value incl)
      Method for configured default property inclusion to use for serialization.
      Parameters:
      incl - Default property inclusion to set
      Returns:
      This builder instance to allow call chaining
      Since:
      2.11
    • addMixIn

      public B addMixIn(Class<?> target, Class<?> mixinSource)
      Method to use for defining mix-in annotations to use for augmenting annotations that classes have, for purpose of configuration serialization and/or deserialization processing. Mixing in is done when introspecting class annotations and properties. Annotations from "mixin" class (and its supertypes) will override annotations that target classes (and their super-types) have.

      Note that standard mixin handler implementations will only allow a single mix-in source class per target, so if there was a previous mix-in defined target it will be cleared. This also means that you can remove mix-in definition by specifying mixinSource of null (although preferred mechanism is removeMixIn(java.lang.Class<?>))

      Parameters:
      target - Target class on which to add annotations
      mixinSource - Class that has annotations to add
      Returns:
      This builder instance to allow call chaining
    • removeMixIn

      public B removeMixIn(Class<?> target)
      Method that allows making sure that specified target class does not have associated mix-in annotations: basically can be used to undo an earlier call to addMixIn(java.lang.Class<?>, java.lang.Class<?>).

      NOTE: removing mix-ins for given class does not try to remove possible mix-ins for any of its super classes and super interfaces; only direct mix-in addition, if any, is removed.

      Parameters:
      target - Target class for which no mix-ins should remain after call
      Returns:
      This builder instance to allow call chaining
      Since:
      2.13
    • registerSubtypes

      public B registerSubtypes(Class<?>... subtypes)
    • registerSubtypes

      public B registerSubtypes(NamedType... subtypes)
    • registerSubtypes

      public B registerSubtypes(Collection<Class<?>> subtypes)
    • polymorphicTypeValidator

      public B polymorphicTypeValidator(PolymorphicTypeValidator ptv)
      Method for assigning PolymorphicTypeValidator to use for validating subtypes when using Class name - based polymorphic deserialization using annotations (validator used with "Default Typing" is specified by passing in activateDefaultTyping(PolymorphicTypeValidator) instead).

      Validator will be called on validating types for which no default databind deserializer, or module-provided deserializer is found: typically this includes "POJO" (aka Bean) types, but not (for example) most container types.

      Since:
      2.10
    • activateDefaultTyping

      public B activateDefaultTyping(PolymorphicTypeValidator subtypeValidator)
      Convenience method that is equivalent to calling
        activateDefaultTyping(subtypeValidator, DefaultTyping.OBJECT_AND_NON_CONCRETE);
      

      NOTE: choice of PolymorphicTypeValidator to pass is critical for security as allowing all subtypes can be risky for untrusted content.

    • activateDefaultTyping

      public B activateDefaultTyping(PolymorphicTypeValidator subtypeValidator, ObjectMapper.DefaultTyping dti)
      Convenience method that is equivalent to calling
        activateDefaultTyping(subtypeValidator, dti, JsonTypeInfo.As.WRAPPER_ARRAY);
      

      NOTE: choice of PolymorphicTypeValidator to pass is critical for security as allowing all subtypes can be risky for untrusted content.

    • activateDefaultTyping

      public B activateDefaultTyping(PolymorphicTypeValidator subtypeValidator, ObjectMapper.DefaultTyping applicability, JsonTypeInfo.As includeAs)
      Method for enabling automatic inclusion of type information, needed for proper deserialization of polymorphic types (unless types have been annotated with JsonTypeInfo).

      NOTE: use of JsonTypeInfo.As#EXTERNAL_PROPERTY NOT SUPPORTED; and attempts of do so will throw an IllegalArgumentException to make this limitation explicit.

      NOTE: choice of PolymorphicTypeValidator to pass is critical for security as allowing all subtypes can be risky for untrusted content.

      Parameters:
      applicability - Defines kinds of types for which additional type information is added; see ObjectMapper.DefaultTyping for more information.
    • activateDefaultTypingAsProperty

      public B activateDefaultTypingAsProperty(PolymorphicTypeValidator subtypeValidator, ObjectMapper.DefaultTyping applicability, String propertyName)
      Method for enabling automatic inclusion of type information -- needed for proper deserialization of polymorphic types (unless types have been annotated with JsonTypeInfo) -- using "As.PROPERTY" inclusion mechanism and specified property name to use for inclusion (default being "@class" since default type information always uses class name as type identifier)

      NOTE: choice of PolymorphicTypeValidator to pass is critical for security as allowing all subtypes can be risky for untrusted content.

    • deactivateDefaultTyping

      public B deactivateDefaultTyping()
      Method for disabling automatic inclusion of type information; if so, only explicitly annotated types (ones with JsonTypeInfo) will have additional embedded type information.
    • setDefaultTyping

      public B setDefaultTyping(TypeResolverBuilder<?> typer)
      Method for enabling automatic inclusion of type information, using specified handler object for determining which types this affects, as well as details of how information is embedded.

      NOTE: use of Default Typing can be a potential security risk if incoming content comes from untrusted sources, so care should be taken to use a TypeResolverBuilder that can limit allowed classes to deserialize. Note in particular that StdTypeResolverBuilder DOES NOT limit applicability but creates type (de)serializers for all types.

      Parameters:
      typer - Type information inclusion handler
      Since:
      2.12
    • _this

      protected final B _this()