Class EnumResolver

java.lang.Object
tools.jackson.databind.util.EnumResolver
All Implemented Interfaces:
Serializable

public class EnumResolver extends Object implements Serializable
Helper class used to resolve String values (either JSON Object field names or regular String values) into Java Enum instances.
See Also:
  • Field Details

    • _enumClass

      protected final Class<Enum<?>> _enumClass
    • _enums

      protected final Enum<?>[] _enums
    • _enumsById

      protected final HashMap<String,Enum<?>> _enumsById
    • _defaultValue

      protected final Enum<?> _defaultValue
    • _isIgnoreCase

      protected final boolean _isIgnoreCase
      Marker for case-insensitive handling
    • _isFromIntValue

      protected final boolean _isFromIntValue
      Marker for case where value may come from @JsonValue annotated accessor and is expected/likely to come from actual integral number value (and not String).

      Special case is needed since this specifically means that Enum.index() should NOT be used or default to.

    • _hasAsValueAnnotation

      protected final boolean _hasAsValueAnnotation
      Marker for case where enum values to match are from @JsonValue-annotated method.
      Since:
      2.20
  • Constructor Details

    • EnumResolver

      protected EnumResolver(Class<Enum<?>> enumClass, Enum<?>[] enums, HashMap<String,Enum<?>> enumsById, Enum<?> defaultValue, boolean isIgnoreCase, boolean isFromIntValue, boolean hasAsValueAnnotation)
  • Method Details

    • constructFor

      public static EnumResolver constructFor(DeserializationConfig config, AnnotatedClass annotatedClass)
      Factory method for constructing an EnumResolver based on the given DeserializationConfig and AnnotatedClass of the enum to be resolved.
      Parameters:
      config - the deserialization configuration to use
      annotatedClass - the annotated class of the enum to be resolved
      Returns:
      the constructed EnumResolver
    • constructUsingToString

      public static EnumResolver constructUsingToString(DeserializationConfig config, AnnotatedClass annotatedClass)
      Factory method for constructing resolver that maps from Enum.toString() into Enum value
      Since:
      2.16
    • constructUsingIndex

      public static EnumResolver constructUsingIndex(DeserializationConfig config, AnnotatedClass annotatedClass)
      Factory method for constructing resolver that maps from index of Enum.values() into Enum value.
    • constructUsingEnumNamingStrategy

      public static EnumResolver constructUsingEnumNamingStrategy(DeserializationConfig config, AnnotatedClass annotatedClass, EnumNamingStrategy enumNamingStrategy)
      Factory method for constructing an EnumResolver with EnumNamingStrategy applied.
      Since:
      2.16
    • constructUsingMethod

      public static EnumResolver constructUsingMethod(DeserializationConfig config, AnnotatedClass annotatedClass, AnnotatedMember accessor)
      Method used when actual String serialization is indicated using @JsonValue on a method in Enum class.
    • _enumClass

      protected static Class<Enum<?>> _enumClass(Class<?> cls)
    • _enumConstants

      protected static Enum<?>[] _enumConstants(Class<Enum<?>> enumCls)
    • constructLookup

      public CompactStringObjectMap constructLookup()
    • _enumDefault

      protected static Enum<?> _enumDefault(MapperConfig<?> config, AnnotatedClass annotatedClass, Enum<?>[] enums)
      Internal helper method used to resolve JsonEnumDefaultValue
      Since:
      2.16
    • _isIntType

      protected static boolean _isIntType(Class<?> erasedType)
    • findEnum

      public Enum<?> findEnum(String key)
    • getEnum

      public Enum<?> getEnum(int index)
    • getDefaultValue

      public Enum<?> getDefaultValue()
    • getRawEnums

      public Enum<?>[] getRawEnums()
    • getEnums

      public List<Enum<?>> getEnums()
    • getEnumIds

      public Collection<String> getEnumIds()
    • getEnumClass

      public Class<Enum<?>> getEnumClass()
    • lastValidIndex

      public int lastValidIndex()
    • isFromIntValue

      public boolean isFromIntValue()
      Accessor for checking if we have a special case in which value to map is from @JsonValue annotated accessor with integral type: this matters for cases where incoming content value is of integral type and should be mapped to specific value and NOT to Enum.index().
    • hasAsValueAnnotation

      public boolean hasAsValueAnnotation()
      Accessor for checking whether @JsonValue annotated accessor is used to get enum values to use for deserialization.