Enum ObjectMapper.DefaultTyping

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<ObjectMapper.DefaultTyping>
    Enclosing class:
    ObjectMapper

    public static enum ObjectMapper.DefaultTyping
    extends java.lang.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.

    • Enum Constant Summary

      Enum Constants 
      Enum Constant Description
      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).
      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.
      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.
      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.
      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).
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static ObjectMapper.DefaultTyping valueOf​(java.lang.String name)
      Returns the enum constant of this type with the specified name.
      static ObjectMapper.DefaultTyping[] values()
      Returns an array containing the constants of this enum type, in the order they are declared.
      • Methods inherited from class java.lang.Enum

        compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • Methods inherited from class java.lang.Object

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

      • 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 Detail

      • values

        public static ObjectMapper.DefaultTyping[] values()
        Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
        for (ObjectMapper.DefaultTyping c : ObjectMapper.DefaultTyping.values())
            System.out.println(c);
        
        Returns:
        an array containing the constants of this enum type, in the order they are declared
      • valueOf

        public static ObjectMapper.DefaultTyping valueOf​(java.lang.String name)
        Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (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:
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        java.lang.NullPointerException - if the argument is null