aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2020-07-08 13:40:40 -0700
committerTatu Saloranta <tatu.saloranta@iki.fi>2020-07-08 13:40:40 -0700
commiteeac38b29b8bb011f1741fdd2253c71a7635a88c (patch)
tree36626c1ed119dc1e37cf2d84a5588642ba5f3c1e /src
parenta8dda6ba8d6a9d2e5c7d4632017fb7e09d452fb5 (diff)
downloadjackson-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.java2
-rw-r--r--src/test/java/com/fasterxml/jackson/failing/EnumDeserialization2787Test.java42
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);
+ }
+}