diff options
author | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-07-08 13:40:40 -0700 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-07-08 13:40:40 -0700 |
commit | eeac38b29b8bb011f1741fdd2253c71a7635a88c (patch) | |
tree | 36626c1ed119dc1e37cf2d84a5588642ba5f3c1e /src | |
parent | a8dda6ba8d6a9d2e5c7d4632017fb7e09d452fb5 (diff) | |
download | jackson-databind-eeac38b29b8bb011f1741fdd2253c71a7635a88c.tar.gz |
Add a test for #2787, partial fix (no more NPE, now fails otherwise)
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/fasterxml/jackson/databind/introspect/AnnotatedFieldCollector.java | 2 | ||||
-rw-r--r-- | src/test/java/com/fasterxml/jackson/failing/EnumDeserialization2787Test.java | 42 |
2 files changed, 43 insertions, 1 deletions
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); + } +} |