Skip to content

Commit e67dec2

Browse files
committed
Merge branch '2.18' into 2.19
2 parents 502fe88 + 76e571d commit e67dec2

File tree

2 files changed

+45
-60
lines changed

2 files changed

+45
-60
lines changed

src/test/java/com/fasterxml/jackson/databind/deser/creators/EnumCreator4544Test.java

Lines changed: 0 additions & 57 deletions
This file was deleted.

src/test/java/com/fasterxml/jackson/databind/deser/creators/EnumCreatorTest.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.fasterxml.jackson.annotation.JsonCreator;
99
import com.fasterxml.jackson.annotation.JsonGetter;
10+
import com.fasterxml.jackson.annotation.JsonIgnore;
1011
import com.fasterxml.jackson.annotation.JsonProperty;
1112

1213
import com.fasterxml.jackson.core.type.TypeReference;
@@ -16,12 +17,11 @@
1617
import com.fasterxml.jackson.databind.exc.ValueInstantiationException;
1718
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
1819
import com.fasterxml.jackson.databind.module.SimpleModule;
20+
import com.fasterxml.jackson.databind.testutil.DatabindTestUtil;
1921

2022
import static org.junit.jupiter.api.Assertions.*;
2123

22-
import static com.fasterxml.jackson.databind.testutil.DatabindTestUtil.*;
23-
24-
public class EnumCreatorTest
24+
public class EnumCreatorTest extends DatabindTestUtil
2525
{
2626
protected enum EnumWithCreator {
2727
A, B;
@@ -221,6 +221,35 @@ public static Enum3280 getByValue(@JsonProperty("b") String value) {
221221
}
222222
}
223223

224+
static class DataClass4544 {
225+
public DataEnum4544 data;
226+
}
227+
228+
public enum DataEnum4544
229+
{
230+
TEST(0);
231+
232+
private final int data;
233+
234+
DataEnum4544(int data) {
235+
this.data = data;
236+
}
237+
238+
// Important! Without ignoring accessor will find logical property
239+
// that matches Creator parameter... and assume properties-based
240+
@JsonIgnore
241+
public int getData() {
242+
return data;
243+
}
244+
245+
@JsonCreator
246+
public static DataEnum4544 of(@ImplicitName("data") int data) {
247+
return Arrays.stream(values())
248+
.filter(it -> it.getData() == data)
249+
.findAny().get();
250+
}
251+
}
252+
224253
/*
225254
/**********************************************************
226255
/* Test methods
@@ -393,4 +422,17 @@ public void testEnumsFromStringUnwrapped() throws Exception
393422
assertEquals(TestEnumFromString.class, ob.getClass());
394423
assertSame(TestEnumFromString.ENUM_A, ob);
395424
}
425+
426+
// for [databind#4544]
427+
@Test
428+
void testEnumsWithImplicitNames4544() throws Exception {
429+
final ObjectMapper mapper = jsonMapperBuilder()
430+
.annotationIntrospector(new ImplicitNameIntrospector())
431+
.build();
432+
433+
String json = a2q("{'data': 0}");
434+
DataClass4544 data = mapper.readValue(json, DataClass4544.class);
435+
436+
assertEquals(DataEnum4544.TEST, data.data);
437+
}
396438
}

0 commit comments

Comments
 (0)