Skip to content

Commit 21e9087

Browse files
committed
Merge branch '2.13' into 2.14
2 parents ed038ad + 4463dd3 commit 21e9087

File tree

1 file changed

+63
-6
lines changed

1 file changed

+63
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,70 @@
11
package com.fasterxml.jackson.module.paramnames;
22

3-
import org.junit.Test;
4-
3+
import com.fasterxml.jackson.annotation.JsonCreator;
54
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import com.fasterxml.jackson.annotation.JsonValue;
66
import com.fasterxml.jackson.databind.ObjectMapper;
77

88
import static org.junit.Assert.assertEquals;
99

10-
public class EnumNamingTest
10+
import org.junit.Test;
11+
12+
public class EnumNamingTest extends ModuleTestBase
1113
{
1214
enum SurprisingEnum32 {
1315
@JsonProperty("customValue")
1416
ENUM_NAME;
1517
}
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+
1860
@Test
1961
public void testCustomEnumName() throws Exception
2062
{
2163
final String EXP = "\"customValue\"";
2264

2365
// First, verify default handling
2466

25-
String json = new ObjectMapper()
67+
String json = MAPPER
2668
.writeValueAsString(SurprisingEnum32.ENUM_NAME);
2769
assertEquals(EXP, json);
2870

@@ -36,4 +78,19 @@ public void testCustomEnumName() throws Exception
3678
SurprisingEnum32 value = mapperWithNames.readValue(json, SurprisingEnum32.class);
3779
assertEquals(SurprisingEnum32.ENUM_NAME, value);
3880
}
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+
}
3996
}

0 commit comments

Comments
 (0)