1
1
package com .fasterxml .jackson .module .paramnames ;
2
2
3
- import org .junit .Test ;
4
-
3
+ import com .fasterxml .jackson .annotation .JsonCreator ;
5
4
import com .fasterxml .jackson .annotation .JsonProperty ;
5
+ import com .fasterxml .jackson .annotation .JsonValue ;
6
6
import com .fasterxml .jackson .databind .ObjectMapper ;
7
7
8
8
import static org .junit .Assert .assertEquals ;
9
9
10
- public class EnumNamingTest
10
+ import org .junit .Test ;
11
+
12
+ public class EnumNamingTest extends ModuleTestBase
11
13
{
12
14
enum SurprisingEnum32 {
13
15
@ JsonProperty ("customValue" )
14
16
ENUM_NAME ;
15
17
}
16
-
17
- // for [module-parameter-names#32]
18
+
19
+ // [modules-java8#234]
20
+ static enum MeetingStatus {
21
+ UNKNOWN (0 ),
22
+ INITIALIZING (1 ),
23
+ PROGRESSING (2 ),
24
+ TERMINATED (3 ),
25
+ ;
26
+
27
+ public final int status ;
28
+
29
+ @ JsonValue
30
+ public int getStatus () {
31
+ return status ;
32
+ }
33
+
34
+ MeetingStatus (int status ) {
35
+ this .status = status ;
36
+ }
37
+
38
+ @ JsonCreator (mode = JsonCreator .Mode .DELEGATING )
39
+ public static MeetingStatus parse (Integer status ) {
40
+ if (status == null ) {
41
+ return UNKNOWN ;
42
+ }
43
+ int s = status .intValue ();
44
+ for (MeetingStatus value : values ()) {
45
+ if (s == value .status ) {
46
+ return value ;
47
+ }
48
+ }
49
+ return UNKNOWN ;
50
+ }
51
+
52
+ }
53
+
54
+ static class Meeting {
55
+ public MeetingStatus status ;
56
+ }
57
+
58
+ private final ObjectMapper MAPPER = newMapper ();
59
+
18
60
@ Test
19
61
public void testCustomEnumName () throws Exception
20
62
{
21
63
final String EXP = "\" customValue\" " ;
22
64
23
65
// First, verify default handling
24
66
25
- String json = new ObjectMapper ()
67
+ String json = MAPPER
26
68
.writeValueAsString (SurprisingEnum32 .ENUM_NAME );
27
69
assertEquals (EXP , json );
28
70
@@ -36,4 +78,19 @@ public void testCustomEnumName() throws Exception
36
78
SurprisingEnum32 value = mapperWithNames .readValue (json , SurprisingEnum32 .class );
37
79
assertEquals (SurprisingEnum32 .ENUM_NAME , value );
38
80
}
81
+
82
+ // [modules-java8#234]
83
+ @ Test
84
+ public void testEnumWithCreator () throws Exception
85
+ {
86
+ // it's ok when serializing
87
+ Meeting meetingSrc = new Meeting ();
88
+ meetingSrc .status = MeetingStatus .PROGRESSING ;
89
+
90
+ String json = MAPPER .writeValueAsString (meetingSrc );
91
+
92
+ // but throws exception when deserializing
93
+ Meeting result = MAPPER .readValue (json , Meeting .class );
94
+ assertEquals (MeetingStatus .PROGRESSING , result .status );
95
+ }
39
96
}
0 commit comments