com.fasterxml.jackson.databind.cfg

## Class MapperConfig<T extends MapperConfig<T>>

- java.lang.Object
- - com.fasterxml.jackson.databind.cfg.MapperConfig<T>

- All Implemented Interfaces:
    ClassIntrospector.MixInResolver, java.io.Serializable
  Direct Known Subclasses:
    MapperConfigBase

      public abstract class MapperConfig<T extends MapperConfig<T>>
      extends java.lang.Object
      implements ClassIntrospector.MixInResolver, java.io.Serializable

  Interface that defines functionality accessible through both serialization and deserialization configuration objects; accessors to mode-independent configuration settings and such. In addition, shared features are defined in `MapperFeature`.

  Small part of implementation is included here by aggregating `BaseSettings` instance that contains configuration that is shared between different types of instances.

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected BaseSettings` | `_base` Immutable container object for simple configuration settings.
    `protected int` | `_mapperFeatures` Set of shared mapper features enabled.
    `protected static com.fasterxml.jackson.annotation.JsonFormat.Value` | `EMPTY_FORMAT`
    `protected static com.fasterxml.jackson.annotation.JsonInclude.Value` | `EMPTY_INCLUDE`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `MapperConfig(BaseSettings base, int mapperFeatures)`
    `protected` | `MapperConfig(MapperConfig<T> src)`
    `protected` | `MapperConfig(MapperConfig<T> src, BaseSettings base)`
    `protected` | `MapperConfig(MapperConfig<T> src, int mapperFeatures)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `canOverrideAccessModifiers()` Accessor for determining whether it is ok to try to force override of access modifiers to be able to get or set values of non-public Methods, Fields; to invoke non-public Constructors, Methods; or to instantiate non-public Classes.
    `static <F extends java.lang.Enum<F> & ConfigFeature> int` | `collectFeatureDefaults(java.lang.Class<F> enumClass)` Method that calculates bit set (flags) of all features that are enabled by default.
    `com.fasterxml.jackson.core.SerializableString` | `compileString(java.lang.String src)` Method for constructing a specialized textual object that can typically be serialized faster than basic `String` (depending on escaping needed if any, char-to-byte encoding if needed).
    `JavaType` | `constructSpecializedType(JavaType baseType, java.lang.Class<?> subclass)`
    `JavaType` | `constructType(java.lang.Class<?> cls)` Helper method that will construct `JavaType` for given raw class.
    `JavaType` | `constructType(com.fasterxml.jackson.core.type.TypeReference<?> valueTypeRef)` Helper method that will construct `JavaType` for given type reference This is a simple short-cut for:
    `abstract ConfigOverride` | `findConfigOverride(java.lang.Class<?> type)` Accessor for finding possible `ConfigOverride` to use for properties of given type.
    `abstract PropertyName` | `findRootName(java.lang.Class<?> rawRootType)`
    `abstract PropertyName` | `findRootName(JavaType rootType)`
    `abstract java.lang.Class<?>` | `getActiveView()` Accessor for finding currently active view, if any (null if none)
    `AnnotationIntrospector` | `getAnnotationIntrospector()` Method for getting `AnnotationIntrospector` configured to introspect annotation values used for configuration.
    `abstract ContextAttributes` | `getAttributes()` Method for accessing per-instance shared (baseline/default) attribute values; these are used as the basis for per-call attributes.
    `com.fasterxml.jackson.core.Base64Variant` | `getBase64Variant()` Method called during deserialization if Base64 encoded content needs to be decoded.
    `ClassIntrospector` | `getClassIntrospector()`
    `java.text.DateFormat` | `getDateFormat()` Method for accessing currently configured (textual) date format that will be used for reading or writing date values (in case of writing, only if textual output is configured; not if dates are to be serialized as time stamps).
    `abstract com.fasterxml.jackson.annotation.JsonFormat.Value` | `getDefaultPropertyFormat(java.lang.Class<?> baseType)` Accessor for default format settings to use for serialization (and, to a degree deserialization), considering baseline settings and per-type defaults for given base type (if any).
    `abstract com.fasterxml.jackson.annotation.JsonIgnoreProperties.Value` | `getDefaultPropertyIgnorals(java.lang.Class<?> baseType)` Accessor for default property ignorals to use, if any, for given base type, based on config overrides settings (see `findConfigOverride(Class)`).
    `abstract com.fasterxml.jackson.annotation.JsonIgnoreProperties.Value` | `getDefaultPropertyIgnorals(java.lang.Class<?> baseType, AnnotatedClass actualClass)` Helper method that may be called to see if there are property ignoral definitions from annotations (via `AnnotatedClass`) or through "config overrides".
    `abstract com.fasterxml.jackson.annotation.JsonInclude.Value` | `getDefaultPropertyInclusion()` Accessor for default property inclusion to use for serialization, used unless overridden by per-type or per-property overrides.
    `abstract com.fasterxml.jackson.annotation.JsonInclude.Value` | `getDefaultPropertyInclusion(java.lang.Class<?> baseType)` Accessor for default property inclusion to use for serialization, considering possible per-type override for given base type. NOTE: if no override found, defaults to value returned by `getDefaultPropertyInclusion()`.
    `abstract com.fasterxml.jackson.annotation.JsonInclude.Value` | `getDefaultPropertyInclusion(java.lang.Class<?> baseType, com.fasterxml.jackson.annotation.JsonInclude.Value defaultIncl)` Accessor for default property inclusion to use for serialization, considering possible per-type override for given base type; but if none found, returning given `defaultIncl`
    `TypeResolverBuilder<?>` | `getDefaultTyper(JavaType baseType)` Method called to locate a type info handler for types that do not have one explicitly declared via annotations (or other configuration).
    `VisibilityChecker<?>` | `getDefaultVisibilityChecker()` Accessor for object used for determining whether specific property elements (method, constructors, fields) can be auto-detected based on their visibility (access modifiers).
    `HandlerInstantiator` | `getHandlerInstantiator()`
    `java.util.Locale` | `getLocale()` Method for accessing the default `Locale` to use for formatting, unless overridden by local annotations.
    `PropertyNamingStrategy` | `getPropertyNamingStrategy()`
    `abstract SubtypeResolver` | `getSubtypeResolver()`
    `java.util.TimeZone` | `getTimeZone()` Method for accessing the default `TimeZone` to use for formatting, unless overridden by local annotations.
    `TypeFactory` | `getTypeFactory()`
    `boolean` | `hasMapperFeatures(int featureMask)` "Bulk" access method for checking that all features specified by mask are enabled.
    `BeanDescription` | `introspectClassAnnotations(java.lang.Class<?> cls)` Accessor for getting bean description that only contains class annotations: useful if no getter/setter/creator information is needed.
    `abstract BeanDescription` | `introspectClassAnnotations(JavaType type)` Accessor for getting bean description that only contains class annotations: useful if no getter/setter/creator information is needed.
    `BeanDescription` | `introspectDirectClassAnnotations(java.lang.Class<?> cls)` Accessor for getting bean description that only contains immediate class annotations: ones from the class, and its direct mix-in, if any, but not from super types.
    `abstract BeanDescription` | `introspectDirectClassAnnotations(JavaType type)` Accessor for getting bean description that only contains immediate class annotations: ones from the class, and its direct mix-in, if any, but not from super types.
    `boolean` | `isAnnotationProcessingEnabled()` Method for determining whether annotation processing is enabled or not (default settings are typically that it is enabled; must explicitly disable).
    `boolean` | `isEnabled(MapperFeature f)` Accessor for simple mapper features (which are shared for serialization, deserialization)
    `boolean` | `shouldSortPropertiesAlphabetically()` Accessor for checking whether default settings for property handling indicate that properties should be alphabetically ordered or not.
    `TypeIdResolver` | `typeIdResolverInstance(Annotated annotated, java.lang.Class<? extends TypeIdResolver> resolverClass)` Method that can be called to obtain an instance of `TypeIdResolver` of specified type.
    `TypeResolverBuilder<?>` | `typeResolverBuilderInstance(Annotated annotated, java.lang.Class<? extends TypeResolverBuilder<?>> builderClass)` Method that can be called to obtain an instance of `TypeIdResolver` of specified type.
    `abstract boolean` | `useRootWrapping()` Accessor for checking whether configuration indicates that "root wrapping" (use of an extra property/name pair at root level) is expected or not.
    `abstract T` | `with(MapperFeature... features)` Method for constructing and returning a new instance with specified mapper features enabled.
    `abstract T` | `with(MapperFeature feature, boolean state)`
    `abstract T` | `without(MapperFeature... features)` Method for constructing and returning a new instance with specified mapper features disabled.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.fasterxml.jackson.databind.introspect.ClassIntrospector.MixInResolver

      `copy, findMixInClassFor`

- - ### Field Detail

    - #### EMPTY_INCLUDE

          protected static final com.fasterxml.jackson.annotation.JsonInclude.Value EMPTY_INCLUDE

      Since:
        2.7

    - #### EMPTY_FORMAT

          protected static final com.fasterxml.jackson.annotation.JsonFormat.Value EMPTY_FORMAT

      Since:
        2.7

    - #### _mapperFeatures

          protected final int _mapperFeatures

      Set of shared mapper features enabled.

    - #### _base

          protected final BaseSettings _base

      Immutable container object for simple configuration settings.

  - ### Constructor Detail

    - #### MapperConfig

          protected MapperConfig(BaseSettings base,
                      int mapperFeatures)

    - #### MapperConfig

          protected MapperConfig(MapperConfig<T> src,
                      int mapperFeatures)

    - #### MapperConfig

          protected MapperConfig(MapperConfig<T> src,
                      BaseSettings base)

    - #### MapperConfig

          protected MapperConfig(MapperConfig<T> src)

  - ### Method Detail

    - #### collectFeatureDefaults

          public static <F extends java.lang.Enum<F> & ConfigFeature> int collectFeatureDefaults(java.lang.Class<F> enumClass)

      Method that calculates bit set (flags) of all features that are enabled by default.

    - #### with

          public abstract T with(MapperFeature... features)

      Method for constructing and returning a new instance with specified mapper features enabled.

    - #### without

          public abstract T without(MapperFeature... features)

      Method for constructing and returning a new instance with specified mapper features disabled.

    - #### with

          public abstract T with(MapperFeature feature,
               boolean state)

      Since:
        2.3

    - #### isEnabled

          public final boolean isEnabled(MapperFeature f)

      Accessor for simple mapper features (which are shared for serialization, deserialization)

    - #### hasMapperFeatures

          public final boolean hasMapperFeatures(int featureMask)

      "Bulk" access method for checking that all features specified by mask are enabled.
      Since:
        2.3

    - #### isAnnotationProcessingEnabled

          public final boolean isAnnotationProcessingEnabled()

      Method for determining whether annotation processing is enabled or not (default settings are typically that it is enabled; must explicitly disable).
      Returns:
        True if annotation processing is enabled; false if not

    - #### canOverrideAccessModifiers

          public final boolean canOverrideAccessModifiers()

      Accessor for determining whether it is ok to try to force override of access modifiers to be able to get or set values of non-public Methods, Fields; to invoke non-public Constructors, Methods; or to instantiate non-public Classes. By default this is enabled, but on some platforms it needs to be prevented since if this would violate security constraints and cause failures.
      Returns:
        True if access modifier overriding is allowed (and may be done for any Field, Method, Constructor or Class); false to prevent any attempts to override.

    - #### shouldSortPropertiesAlphabetically

          public final boolean shouldSortPropertiesAlphabetically()

      Accessor for checking whether default settings for property handling indicate that properties should be alphabetically ordered or not.

    - #### useRootWrapping

          public abstract boolean useRootWrapping()

      Accessor for checking whether configuration indicates that "root wrapping" (use of an extra property/name pair at root level) is expected or not.

    - #### compileString

          public com.fasterxml.jackson.core.SerializableString compileString(java.lang.String src)

      Method for constructing a specialized textual object that can typically be serialized faster than basic `String` (depending on escaping needed if any, char-to-byte encoding if needed).
      Parameters:
        `src` - Text to represent
      Returns:
        Optimized text object constructed
      Since:
        2.4

    - #### getClassIntrospector

          public ClassIntrospector getClassIntrospector()

    - #### getAnnotationIntrospector

          public AnnotationIntrospector getAnnotationIntrospector()

      Method for getting `AnnotationIntrospector` configured to introspect annotation values used for configuration.

      Non-final since it is actually overridden by sub-classes (for now?)

    - #### getDefaultVisibilityChecker

          public VisibilityChecker<?> getDefaultVisibilityChecker()

      Accessor for object used for determining whether specific property elements (method, constructors, fields) can be auto-detected based on their visibility (access modifiers). Can be changed to allow different minimum visibility levels for auto-detection. Note that this is the global handler; individual types (classes) can further override active checker used (using `JsonAutoDetect` annotation)

    - #### getPropertyNamingStrategy

          public final PropertyNamingStrategy getPropertyNamingStrategy()

    - #### getHandlerInstantiator

          public final HandlerInstantiator getHandlerInstantiator()

    - #### getDefaultTyper

          public final TypeResolverBuilder<?> getDefaultTyper(JavaType baseType)

      Method called to locate a type info handler for types that do not have one explicitly declared via annotations (or other configuration). If such default handler is configured, it is returned; otherwise null is returned.

    - #### getSubtypeResolver

          public abstract SubtypeResolver getSubtypeResolver()

    - #### getTypeFactory

          public final TypeFactory getTypeFactory()

    - #### constructType

          public final JavaType constructType(java.lang.Class<?> cls)

      Helper method that will construct `JavaType` for given raw class. This is a simple short-cut for:

              getTypeFactory().constructType(cls);

    - #### constructType

          public final JavaType constructType(com.fasterxml.jackson.core.type.TypeReference<?> valueTypeRef)

      Helper method that will construct `JavaType` for given type reference This is a simple short-cut for:

              getTypeFactory().constructType(valueTypeRef);

    - #### constructSpecializedType

          public JavaType constructSpecializedType(JavaType baseType,
                                          java.lang.Class<?> subclass)

    - #### introspectClassAnnotations

          public BeanDescription introspectClassAnnotations(java.lang.Class<?> cls)

      Accessor for getting bean description that only contains class annotations: useful if no getter/setter/creator information is needed.

    - #### introspectClassAnnotations

          public abstract BeanDescription introspectClassAnnotations(JavaType type)

      Accessor for getting bean description that only contains class annotations: useful if no getter/setter/creator information is needed.

    - #### introspectDirectClassAnnotations

          public BeanDescription introspectDirectClassAnnotations(java.lang.Class<?> cls)

      Accessor for getting bean description that only contains immediate class annotations: ones from the class, and its direct mix-in, if any, but not from super types.

    - #### introspectDirectClassAnnotations

          public abstract BeanDescription introspectDirectClassAnnotations(JavaType type)

      Accessor for getting bean description that only contains immediate class annotations: ones from the class, and its direct mix-in, if any, but not from super types.

    - #### getDefaultPropertyInclusion

          public abstract com.fasterxml.jackson.annotation.JsonInclude.Value getDefaultPropertyInclusion()

      Accessor for default property inclusion to use for serialization, used unless overridden by per-type or per-property overrides.
      Since:
        2.7

    - #### getDefaultPropertyInclusion

          public abstract com.fasterxml.jackson.annotation.JsonInclude.Value getDefaultPropertyInclusion(java.lang.Class<?> baseType)

      Accessor for default property inclusion to use for serialization, considering possible per-type override for given base type.
      NOTE: if no override found, defaults to value returned by `getDefaultPropertyInclusion()`.
      Since:
        2.7

    - #### getDefaultPropertyInclusion

          public abstract com.fasterxml.jackson.annotation.JsonInclude.Value getDefaultPropertyInclusion(java.lang.Class<?> baseType,
                                                                                       com.fasterxml.jackson.annotation.JsonInclude.Value defaultIncl)

      Accessor for default property inclusion to use for serialization, considering possible per-type override for given base type; but if none found, returning given `defaultIncl`
      Parameters:
        `defaultIncl` - Inclusion setting to return if no overrides found.
      Since:
        2.8.2

    - #### getDefaultPropertyFormat

          public abstract com.fasterxml.jackson.annotation.JsonFormat.Value getDefaultPropertyFormat(java.lang.Class<?> baseType)

      Accessor for default format settings to use for serialization (and, to a degree deserialization), considering baseline settings and per-type defaults for given base type (if any).
      Since:
        2.7

    - #### getDefaultPropertyIgnorals

          public abstract com.fasterxml.jackson.annotation.JsonIgnoreProperties.Value getDefaultPropertyIgnorals(java.lang.Class<?> baseType)

      Accessor for default property ignorals to use, if any, for given base type, based on config overrides settings (see `findConfigOverride(Class)`).
      Since:
        2.8

    - #### getDefaultPropertyIgnorals

          public abstract com.fasterxml.jackson.annotation.JsonIgnoreProperties.Value getDefaultPropertyIgnorals(java.lang.Class<?> baseType,
                                                                                               AnnotatedClass actualClass)

      Helper method that may be called to see if there are property ignoral definitions from annotations (via `AnnotatedClass`) or through "config overrides". If both exist, config overrides have precedence over class annotations.
      Since:
        2.8

    - #### findConfigOverride

          public abstract ConfigOverride findConfigOverride(java.lang.Class<?> type)

      Accessor for finding possible `ConfigOverride` to use for properties of given type. Note that only directly associate override is found; no type hierarchy traversal is performed.
      Returns:
        Override object if there is an override for specified type; `null` if not
      Since:
        2.8

    - #### getDateFormat

          public final java.text.DateFormat getDateFormat()

      Method for accessing currently configured (textual) date format that will be used for reading or writing date values (in case of writing, only if textual output is configured; not if dates are to be serialized as time stamps).

      Note that typically `DateFormat` instances are not thread-safe (at least ones provided by JDK): this means that calling code should clone format instance before using it.

      This method is usually only called by framework itself, since there are convenience methods available via `DeserializationContext` and `SerializerProvider` that take care of cloning and thread-safe reuse.

    - #### getLocale

          public final java.util.Locale getLocale()

      Method for accessing the default `Locale` to use for formatting, unless overridden by local annotations. Initially set to `Locale.getDefault()`.

    - #### getTimeZone

          public final java.util.TimeZone getTimeZone()

      Method for accessing the default `TimeZone` to use for formatting, unless overridden by local annotations. Initially set to `TimeZone.getDefault()`.

    - #### getActiveView

          public abstract java.lang.Class<?> getActiveView()

      Accessor for finding currently active view, if any (null if none)

    - #### getBase64Variant

          public com.fasterxml.jackson.core.Base64Variant getBase64Variant()

      Method called during deserialization if Base64 encoded content needs to be decoded. Default version just returns default Jackson uses, which is modified-mime which does not add linefeeds (because those would have to be escaped in JSON strings); but this can be configured on `ObjectWriter`.

    - #### getAttributes

          public abstract ContextAttributes getAttributes()

      Method for accessing per-instance shared (baseline/default) attribute values; these are used as the basis for per-call attributes.
      Since:
        2.3

    - #### findRootName

          public abstract PropertyName findRootName(JavaType rootType)

      Since:
        2.6

    - #### findRootName

          public abstract PropertyName findRootName(java.lang.Class<?> rawRootType)

      Since:
        2.6

    - #### typeResolverBuilderInstance

          public TypeResolverBuilder<?> typeResolverBuilderInstance(Annotated annotated,
                                                           java.lang.Class<? extends TypeResolverBuilder<?>> builderClass)

      Method that can be called to obtain an instance of `TypeIdResolver` of specified type.

    - #### typeIdResolverInstance

          public TypeIdResolver typeIdResolverInstance(Annotated annotated,
                                              java.lang.Class<? extends TypeIdResolver> resolverClass)

      Method that can be called to obtain an instance of `TypeIdResolver` of specified type.