3
3
import java .io .IOException ;
4
4
import java .util .EnumSet ;
5
5
6
+ import com .fasterxml .jackson .annotation .JsonAlias ;
7
+ import com .fasterxml .jackson .annotation .JsonEnumDefaultValue ;
6
8
import com .fasterxml .jackson .annotation .JsonFormat ;
7
9
import com .fasterxml .jackson .core .type .TypeReference ;
8
10
import com .fasterxml .jackson .databind .BaseMapTest ;
@@ -33,7 +35,39 @@ protected static class StrictCaseBean {
33
35
@ JsonFormat (without ={ JsonFormat .Feature .ACCEPT_CASE_INSENSITIVE_PROPERTIES })
34
36
public TestEnum value ;
35
37
}
36
-
38
+
39
+
40
+ // for [databind#2352]: Support aliases on enum values
41
+ enum MyEnum2352_1 {
42
+ A ,
43
+ @ JsonAlias ({"singleAlias" })
44
+ B ,
45
+ @ JsonAlias ({"multipleAliases1" , "multipleAliases2" })
46
+ C
47
+ }
48
+ // for [databind#2352]: Support aliases on enum values
49
+ enum MyEnum2352_2 {
50
+ A ,
51
+ @ JsonAlias ({"singleAlias" })
52
+ B ,
53
+ @ JsonAlias ({"multipleAliases1" , "multipleAliases2" })
54
+ C ;
55
+
56
+ @ Override
57
+ public String toString () {
58
+ return name ().toLowerCase ();
59
+ }
60
+ }
61
+ // for [databind#2352]: Support aliases on enum values
62
+ enum MyEnum2352_3 {
63
+ A ,
64
+ @ JsonEnumDefaultValue
65
+ @ JsonAlias ({"singleAlias" })
66
+ B ,
67
+ @ JsonAlias ({"multipleAliases1" , "multipleAliases2" })
68
+ C ;
69
+ }
70
+
37
71
/*
38
72
/**********************************************************
39
73
/* Test methods, basic
@@ -59,7 +93,7 @@ public void testFailWhenCaseSensitiveAndNameIsNotUpperCase() throws IOException
59
93
verifyException (e , "[JACKSON, OK, RULES]" );
60
94
}
61
95
}
62
-
96
+
63
97
public void testFailWhenCaseSensitiveAndToStringIsUpperCase () throws IOException {
64
98
ObjectReader r = READER_DEFAULT .forType (LowerCaseEnum .class )
65
99
.with (DeserializationFeature .READ_ENUMS_USING_TO_STRING );
@@ -130,4 +164,53 @@ public void testIgnoreCaseViaFormat() throws Exception
130
164
verifyException (e , "[JACKSON, OK, RULES]" );
131
165
}
132
166
}
167
+
168
+ /*
169
+ /**********************************************************
170
+ /* Test methods, Enum Aliases [databind#2352]
171
+ /**********************************************************
172
+ */
173
+
174
+ // for [databind#2352]
175
+ public void testEnumWithAlias () throws Exception {
176
+ ObjectReader reader = MAPPER .readerFor (MyEnum2352_1 .class );
177
+ MyEnum2352_1 nonAliased = reader .readValue (quote ("A" ));
178
+ assertEquals (MyEnum2352_1 .A , nonAliased );
179
+ MyEnum2352_1 singleAlias = reader .readValue (quote ("singleAlias" ));
180
+ assertEquals (MyEnum2352_1 .B , singleAlias );
181
+ MyEnum2352_1 multipleAliases1 = reader .readValue (quote ("multipleAliases1" ));
182
+ assertEquals (MyEnum2352_1 .C , multipleAliases1 );
183
+ MyEnum2352_1 multipleAliases2 = reader .readValue (quote ("multipleAliases2" ));
184
+ assertEquals (MyEnum2352_1 .C , multipleAliases2 );
185
+ }
186
+
187
+ // for [databind#2352]
188
+ public void testEnumWithAliasAndToStringSupported () throws Exception {
189
+ ObjectReader reader = MAPPER .readerFor (MyEnum2352_2 .class )
190
+ .with (DeserializationFeature .READ_ENUMS_USING_TO_STRING );
191
+ MyEnum2352_2 nonAliased = reader .readValue (quote ("a" ));
192
+ assertEquals (MyEnum2352_2 .A , nonAliased );
193
+ MyEnum2352_2 singleAlias = reader .readValue (quote ("singleAlias" ));
194
+ assertEquals (MyEnum2352_2 .B , singleAlias );
195
+ MyEnum2352_2 multipleAliases1 = reader .readValue (quote ("multipleAliases1" ));
196
+ assertEquals (MyEnum2352_2 .C , multipleAliases1 );
197
+ MyEnum2352_2 multipleAliases2 = reader .readValue (quote ("multipleAliases2" ));
198
+ assertEquals (MyEnum2352_2 .C , multipleAliases2 );
199
+ }
200
+
201
+ // for [databind#2352]
202
+ public void testEnumWithAliasAndDefaultForUnknownValueEnabled () throws Exception {
203
+ ObjectReader reader = MAPPER .readerFor (MyEnum2352_3 .class )
204
+ .with (DeserializationFeature .READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE );
205
+ MyEnum2352_3 nonAliased = reader .readValue (quote ("A" ));
206
+ assertEquals (MyEnum2352_3 .A , nonAliased );
207
+ MyEnum2352_3 singleAlias = reader .readValue (quote ("singleAlias" ));
208
+ assertEquals (MyEnum2352_3 .B , singleAlias );
209
+ MyEnum2352_3 defaulted = reader .readValue (quote ("unknownValue" ));
210
+ assertEquals (MyEnum2352_3 .B , defaulted );
211
+ MyEnum2352_3 multipleAliases1 = reader .readValue (quote ("multipleAliases1" ));
212
+ assertEquals (MyEnum2352_3 .C , multipleAliases1 );
213
+ MyEnum2352_3 multipleAliases2 = reader .readValue (quote ("multipleAliases2" ));
214
+ assertEquals (MyEnum2352_3 .C , multipleAliases2 );
215
+ }
133
216
}
0 commit comments