Class ConstructorDetector

java.lang.Object
tools.jackson.databind.cfg.ConstructorDetector
All Implemented Interfaces:
Serializable

public final class ConstructorDetector extends Object implements Serializable
Configurable handler used to select aspects of selecting constructor(s) to use as "Creators" for POJOs. Defines the API for handlers, a pre-defined set of standard instances and methods for constructing alternative configurations.
Since:
2.12
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      See Also:
    • DEFAULT_ALLOW_IMPLICIT_WITH_DEFAULT_CONSTRUCTOR

      public static final boolean DEFAULT_ALLOW_IMPLICIT_WITH_DEFAULT_CONSTRUCTOR
      Since:
      3.0
      See Also:
    • DEFAULT

      public static final ConstructorDetector DEFAULT
      Instance used by default, which:
      • Uses ConstructorDetector.SingleArgConstructor.HEURISTIC for single-argument constructor case
      • Does not require explicit @JsonCreator annotations (so allows auto-detection of Visible constructors} (except for JDK types)
      • Does not allow auto-detection of Visible constructors for so-called JDK types; that is, classes in packages java.* and javax.*
    • USE_PROPERTIES_BASED

      public static final ConstructorDetector USE_PROPERTIES_BASED
      Instance similar to DEFAULT except that for single-argument case uses setting of ConstructorDetector.SingleArgConstructor.PROPERTIES.
    • USE_DELEGATING

      public static final ConstructorDetector USE_DELEGATING
      Instance similar to DEFAULT except that for single-argument case uses setting of ConstructorDetector.SingleArgConstructor.DELEGATING.
    • EXPLICIT_ONLY

      public static final ConstructorDetector EXPLICIT_ONLY
      Instance similar to DEFAULT except that for single-argument case uses setting of ConstructorDetector.SingleArgConstructor.REQUIRE_MODE.
    • _singleArgMode

      protected final ConstructorDetector.SingleArgConstructor _singleArgMode
    • _requireCtorAnnotation

      protected final boolean _requireCtorAnnotation
      Whether explicit JsonCreator is always required for detecting constructors (even if visible) other than the default (no argument) constructor.
    • _allowJDKTypeCtors

      protected final boolean _allowJDKTypeCtors
      Whether auto-detection of constructors of "JDK types" (those in packages java. and javax.) is allowed or not
    • _allowImplicitWithDefaultConstructor

      protected final boolean _allowImplicitWithDefaultConstructor
      Whether implicit detection of Properties-based Constructors is allowed when there is the default (no-parameter) constructor available.
      Since:
      3.0
  • Constructor Details

    • ConstructorDetector

      protected ConstructorDetector(ConstructorDetector.SingleArgConstructor singleArgMode, boolean requireCtorAnnotation, boolean allowJDKTypeCtors, boolean allowImplicitWithDefaultConstructor)
    • ConstructorDetector

      protected ConstructorDetector(ConstructorDetector.SingleArgConstructor singleArgMode)
      Constructors used for default configurations which only varies by _singleArgMode
  • Method Details

    • withSingleArgMode

      public ConstructorDetector withSingleArgMode(ConstructorDetector.SingleArgConstructor singleArgMode)
    • withRequireAnnotation

      public ConstructorDetector withRequireAnnotation(boolean state)
    • withAllowJDKTypeConstructors

      public ConstructorDetector withAllowJDKTypeConstructors(boolean state)
    • withAllowImplicitWithDefaultConstructor

      public ConstructorDetector withAllowImplicitWithDefaultConstructor(boolean state)
      Mutant factory method that can be used to change setting that allowImplicitWithDefaultConstructor() returns.
      Since:
      3.0
    • singleArgMode

    • requireCtorAnnotation

      public boolean requireCtorAnnotation()
    • allowJDKTypeConstructors

      public boolean allowJDKTypeConstructors()
    • allowImplicitWithDefaultConstructor

      public boolean allowImplicitWithDefaultConstructor()
      Method that can be used to determine whether implicit detection of Properties-based Constructors is allowed when there is a default (no-parameter) constructor available. Note that this only matters if shouldIntrospectImplicitConstructors(Class) returns true.
      Since:
      3.0
    • singleArgCreatorDefaultsToDelegating

      public boolean singleArgCreatorDefaultsToDelegating()
    • singleArgCreatorDefaultsToProperties

      public boolean singleArgCreatorDefaultsToProperties()
    • shouldIntrospectImplicitConstructors

      public boolean shouldIntrospectImplicitConstructors(Class<?> rawType)
      Accessor that combines checks for whether implicit creators are allowed and, if so, whether JDK type constructors are allowed (if type is JDK type) to determine whether implicit constructor detection should be enabled for given type or not.
      Parameters:
      rawType - Value type to consider
      Returns:
      True if implicit constructor detection should be enabled; false if not