@@ -156,14 +156,52 @@ public static EnumValues constructFromToString(MapperConfig<?> config, Class<Enu
156
156
return construct (config , enumClass , external );
157
157
}
158
158
159
+ /**
160
+ * Returns String serializations of Enum name using an instance of {@link EnumNamingStrategy}.
161
+ * <p>
162
+ * The output {@link EnumValues} should contain values that are symmetric to
163
+ * {@link EnumResolver#constructUsingEnumNamingStrategy(DeserializationConfig, AnnotatedClass, EnumNamingStrategy)}.
164
+ *
165
+ * @since 2.16
166
+ */
167
+ public static EnumValues constructUsingEnumNamingStrategy (MapperConfig <?> config , AnnotatedClass annotatedClass ,
168
+ EnumNamingStrategy namingStrategy )
169
+ {
170
+ // prepare data
171
+ final AnnotationIntrospector ai = config .getAnnotationIntrospector ();
172
+ final Class <?> enumCls0 = annotatedClass .getRawType ();
173
+ final Class <Enum <?>> enumCls = _enumClass (enumCls0 );
174
+ final Enum <?>[] enumConstants = _enumConstants (enumCls0 );
175
+
176
+ // introspect
177
+ String [] names = new String [enumConstants .length ];
178
+ if (ai != null ) {
179
+ ai .findEnumValues (config , annotatedClass , enumConstants , names );
180
+ }
181
+
182
+ // build
183
+ SerializableString [] textual = new SerializableString [enumConstants .length ];
184
+ for (int i = 0 , len = enumConstants .length ; i < len ; i ++) {
185
+ Enum <?> enumValue = enumConstants [i ];
186
+ String name = names [i ];
187
+ if (name == null ) {
188
+ name = namingStrategy .convertEnumToExternalName (enumValue .name ());
189
+ }
190
+ textual [i ] = config .compileString (name );
191
+ }
192
+ return construct (enumCls , textual );
193
+ }
194
+
159
195
/**
160
196
* Returns String serializations of Enum name using an instance of {@link EnumNamingStrategy}.
161
197
*
162
198
* The output {@link EnumValues} should contain values that are symmetric to
163
199
* {@link EnumResolver#constructUsingEnumNamingStrategy(DeserializationConfig, AnnotatedClass, EnumNamingStrategy)}.
164
200
*
165
201
* @since 2.15
202
+ * @deprecated Since 2.16; use {@link #constructUsingEnumNamingStrategy(MapperConfig, AnnotatedClass, EnumNamingStrategy)} instead.
166
203
*/
204
+ @ Deprecated
167
205
public static EnumValues constructUsingEnumNamingStrategy (MapperConfig <?> config , Class <Enum <?>> enumClass , EnumNamingStrategy namingStrategy ) {
168
206
Class <? extends Enum <?>> cls = ClassUtil .findEnumType (enumClass );
169
207
Enum <?>[] values = cls .getEnumConstants ();
0 commit comments