Enum Class ObjectMapper.DefaultTyping

java.lang.Object
java.lang.Enum<ObjectMapper.DefaultTyping>
edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping
All Implemented Interfaces:
Serializable, Comparable<ObjectMapper.DefaultTyping>, java.lang.constant.Constable
Enclosing class:
ObjectMapper

public static enum ObjectMapper.DefaultTyping extends Enum<ObjectMapper.DefaultTyping>
Enumeration used with ObjectMapper.activateDefaultTyping(PolymorphicTypeValidator) to specify what kind of types (classes) default typing should be used for. It will only be used if no explicit type information is found, but this enumeration further limits subset of those types.

Since 2.4 there are special exceptions for JSON Tree model types (sub-types of TreeNode: default typing is never applied to them. Since 2.8(.4) additional checks are made to avoid attempts at default typing primitive-valued properties.

NOTE: use of Default Typing can be a potential security risk if incoming content comes from untrusted sources, and it is recommended that this is either not done, or, if enabled, make sure to activateDefaultTyping(...) methods that take PolymorphicTypeValidator that limits applicability to known trusted types.

  • Nested Class Summary

    Nested classes/interfaces inherited from class java.lang.Enum

    Enum.EnumDesc<E extends Enum<E>>
  • Enum Constant Summary

    Enum Constants
    Enum Constant
    Description
    Value that means that default typing will be used for all types, with exception of small number of "natural" types (String, Boolean, Integer, Double) that can be correctly inferred from JSON, and primitives (which can not be polymorphic either).
    This value means that only properties that have Object as declared type (including generic types without explicit type) will use default typing.
    Value that means that default typing will be used for all types covered by OBJECT_AND_NON_CONCRETE plus all array types for them.
    Value that means that default typing will be used for all non-final types, with exception of small number of "natural" types (String, Boolean, Integer, Double), which can be correctly inferred from JSON; as well as for all arrays of non-final types.
    Value that means that default typing will be used for properties with declared type of Object or an abstract type (abstract class or interface).
  • Method Summary

    Modifier and Type
    Method
    Description
    Returns the enum constant of this class with the specified name.
    Returns an array containing the constants of this enum class, in the order they are declared.

    Methods inherited from class java.lang.Object

    getClass, notify, notifyAll, wait, wait, wait
  • Enum Constant Details

    • JAVA_LANG_OBJECT

      public static final ObjectMapper.DefaultTyping JAVA_LANG_OBJECT
      This value means that only properties that have Object as declared type (including generic types without explicit type) will use default typing.
    • OBJECT_AND_NON_CONCRETE

      public static final ObjectMapper.DefaultTyping OBJECT_AND_NON_CONCRETE
      Value that means that default typing will be used for properties with declared type of Object or an abstract type (abstract class or interface). Note that this does not include array types.

      Since 2.4, this does NOT apply to TreeNode and its subtypes.

    • NON_CONCRETE_AND_ARRAYS

      public static final ObjectMapper.DefaultTyping NON_CONCRETE_AND_ARRAYS
      Value that means that default typing will be used for all types covered by OBJECT_AND_NON_CONCRETE plus all array types for them.

      Since 2.4, this does NOT apply to TreeNode and its subtypes.

    • NON_FINAL

      public static final ObjectMapper.DefaultTyping NON_FINAL
      Value that means that default typing will be used for all non-final types, with exception of small number of "natural" types (String, Boolean, Integer, Double), which can be correctly inferred from JSON; as well as for all arrays of non-final types.

      Since 2.4, this does NOT apply to TreeNode and its subtypes.

    • EVERYTHING

      public static final ObjectMapper.DefaultTyping EVERYTHING
      Value that means that default typing will be used for all types, with exception of small number of "natural" types (String, Boolean, Integer, Double) that can be correctly inferred from JSON, and primitives (which can not be polymorphic either). Typing is also enabled for all array types.

      WARNING: most of the time this is NOT the setting you want as it tends to add Type Ids everywhere, even in cases where type can not be anything other than declared (for example if declared value type of a property is final -- for example, properties of type long (or wrapper Long).

      Note that this is rarely the option you should use as it results in adding type information in many places where it should not be needed: make sure you understand its behavior. The only known use case for this setting is for serialization when passing instances of final class, and base type is not separately specified.

      Since:
      2.10
  • Method Details

    • values

      public static ObjectMapper.DefaultTyping[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static ObjectMapper.DefaultTyping valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null