aboutsummaryrefslogtreecommitdiff
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
parenta8dda6ba8d6a9d2e5c7d4632017fb7e09d452fb5 (diff)
downloadjackson-databind-eeac38b29b8bb011f1741fdd2253c71a7635a88c.tar.gz
Add a test for #2787, partial fix (no more NPE, now fails otherwise)
-rw-r--r--release-notes/CREDITS-2.x4
-rw-r--r--release-notes/VERSION-2.x5
-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
4 files changed, 52 insertions, 1 deletions
diff --git a/release-notes/CREDITS-2.x b/release-notes/CREDITS-2.x
index 0f1238ffb..a28245102 100644
--- a/release-notes/CREDITS-2.x
+++ b/release-notes/CREDITS-2.x
@@ -1048,3 +1048,7 @@ Alexander Shilov (ashlanderr@github)
Endre Stølsvik (stolsvik@github)
* Reported #2679: `ObjectMapper.readValue("123", Void.TYPE)` throws "should never occur"
(2.10.4)
+
+Denis Kostousov (kostousov-ds@github)
+ * Reported #2787 (partial fix): NPE after add mixin for enum
+ (2.10.5)
diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x
index 005c77592..597f63d1e 100644
--- a/release-notes/VERSION-2.x
+++ b/release-notes/VERSION-2.x
@@ -4,6 +4,11 @@ Project: jackson-databind
=== Releases ===
------------------------------------------------------------------------
+2.10.5 (not yet released)
+
+#2787 (partial fix): NPE after add mixin for enum
+ (reported by Denis K)
+
2.10.4 (03-May-2020)
#2679: `ObjectMapper.readValue("123", Void.TYPE)` throws "should never occur"
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);
+ }
+}