Skip to content

Commit 50fb200

Browse files
committed
Deprecate and create new method for EnumValues.constructFromName
1 parent 4198fb4 commit 50fb200

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/main/java/com/fasterxml/jackson/databind/util/EnumValues.java

+29
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,34 @@ public static EnumValues construct(SerializationConfig config, Class<Enum<?>> en
4141
return constructFromName(config, enumClass);
4242
}
4343

44+
/**
45+
* @deprecated Since 2.15
46+
*/
47+
@Deprecated
48+
public static EnumValues constructFromName(MapperConfig<?> config, Class<Enum<?>> enumClass)
49+
{
50+
// Enum types with per-instance sub-classes need special handling
51+
Class<? extends Enum<?>> enumCls = ClassUtil.findEnumType(enumClass);
52+
Enum<?>[] enumValues = enumCls.getEnumConstants();
53+
if (enumValues == null) {
54+
throw new IllegalArgumentException("Cannot determine enum constants for Class "+enumClass.getName());
55+
}
56+
String[] names = config.getAnnotationIntrospector().findEnumValues(enumCls, enumValues, new String[enumValues.length]);
57+
SerializableString[] textual = new SerializableString[enumValues.length];
58+
for (int i = 0, len = enumValues.length; i < len; ++i) {
59+
Enum<?> en = enumValues[i];
60+
String name = names[i];
61+
if (name == null) {
62+
name = en.name();
63+
}
64+
textual[en.ordinal()] = config.compileString(name);
65+
}
66+
return construct(enumClass, textual);
67+
}
68+
69+
/**
70+
* @since 2.15
71+
*/
4472
public static EnumValues constructFromName(SerializationConfig config, Class<Enum<?>> enumClass)
4573
{
4674
// Enum types with per-instance sub-classes need special handling
@@ -65,6 +93,7 @@ public static EnumValues constructFromName(SerializationConfig config, Class<Enu
6593
return construct(enumClass, textual);
6694
}
6795

96+
6897
public static EnumValues constructFromToString(MapperConfig<?> config, Class<Enum<?>> enumClass)
6998
{
7099
Class<? extends Enum<?>> cls = ClassUtil.findEnumType(enumClass);

0 commit comments

Comments
 (0)