aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2020-07-08 13:42:56 -0700
committerTatu Saloranta <tatu.saloranta@iki.fi>2020-07-08 13:42:56 -0700
commit0ea66a06a70cca0718d4d4dc5b66b1dab4405afb (patch)
treef32097978d325cd286bae371fe45c6b5187be718
parent5e941f6f534b4a000fb93017734eb1f2e2a51703 (diff)
parenteeac38b29b8bb011f1741fdd2253c71a7635a88c (diff)
downloadjackson-databind-0ea66a06a70cca0718d4d4dc5b66b1dab4405afb.tar.gz
Merge branch '2.10' into 2.11
-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 b80e73d2c..61ed80fdd 100644
--- a/release-notes/CREDITS-2.x
+++ b/release-notes/CREDITS-2.x
@@ -1056,6 +1056,10 @@ 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)
+
Máté Rédecsi (rmatesz@github)
* Reported #953: i-I case convertion problem in Turkish locale with case-insensitive deserialization
(2.11.0)
diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x
index 3e37b743c..0a136e553 100644
--- a/release-notes/VERSION-2.x
+++ b/release-notes/VERSION-2.x
@@ -102,6 +102,11 @@ Project: jackson-databind
(ObjectMapper.readerForListOf())
- Add `SerializerProvider.findContentValueSerializer()` methods
+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 2c45507a9..d5403cc69 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotatedFieldCollector.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotatedFieldCollector.java
@@ -88,7 +88,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);
+ }
+}