From eeac38b29b8bb011f1741fdd2253c71a7635a88c Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Wed, 8 Jul 2020 13:40:40 -0700 Subject: Add a test for #2787, partial fix (no more NPE, now fails otherwise) --- .../introspect/AnnotatedFieldCollector.java | 2 +- .../failing/EnumDeserialization2787Test.java | 42 ++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/fasterxml/jackson/failing/EnumDeserialization2787Test.java (limited to 'src') diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotatedFieldCollector.java b/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotatedFieldCollector.java index 0dba88bba..202d63e34 100644 --- a/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotatedFieldCollector.java +++ b/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotatedFieldCollector.java @@ -81,7 +81,7 @@ public class AnnotatedFieldCollector fields.put(f.getName(), b); } // And then... any mix-in overrides? - if (_mixInResolver != null) { + if ((fields != null) && (_mixInResolver != null)) { Class mixin = _mixInResolver.findMixInClassFor(cls); if (mixin != null) { _addFieldMixIns(mixin, cls, fields); diff --git a/src/test/java/com/fasterxml/jackson/failing/EnumDeserialization2787Test.java b/src/test/java/com/fasterxml/jackson/failing/EnumDeserialization2787Test.java new file mode 100644 index 000000000..9ade19da0 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/failing/EnumDeserialization2787Test.java @@ -0,0 +1,42 @@ +package com.fasterxml.jackson.failing; + +import com.fasterxml.jackson.annotation.*; + +import com.fasterxml.jackson.databind.*; + +public class EnumDeserialization2787Test extends BaseMapTest +{ + // [databind#2787] + static enum SomeEnum2787 { + none, + tax10, + tax20 + } + + static enum SomeEnumMixin2787 { + @JsonProperty("zero") + none, + @JsonProperty("TypTyp") + tax10, + @JsonProperty("PytPyt") + tax20 + } + + /* + /********************************************************** + /* Test methods + /********************************************************** + */ + + protected final ObjectMapper MAPPER = newJsonMapper(); + + // [databind#2787] + public void testMixinOnEnumValues2787() throws Exception + { + ObjectMapper mapper = jsonMapperBuilder() + .addMixIn(SomeEnum2787.class, SomeEnumMixin2787.class) + .build(); + SomeEnum2787 result = mapper.readValue(quote("zero"), SomeEnum2787.class); + assertEquals(SomeEnum2787.none, result); + } +} -- cgit v1.2.3