aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorTatu Saloranta <tatu.saloranta@iki.fi>2020-06-18 20:05:00 -0700
committerTatu Saloranta <tatu.saloranta@iki.fi>2020-06-18 20:05:00 -0700
commit330d0b6a1565586ea49ed5cf28cf25e68dd1b172 (patch)
treea03c6aff83004cbe2c5177b8084a50bc6d80c06e /src/main/java
parent67764a75e3689111b91f40be7507ec3de9e130a5 (diff)
downloadjackson-databind-330d0b6a1565586ea49ed5cf28cf25e68dd1b172.tar.gz
Work on #2767 (fix for EnumMap first)
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java
index 40986330d..cfc1133dc 100644
--- a/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java
+++ b/src/main/java/com/fasterxml/jackson/databind/deser/std/EnumMapDeserializer.java
@@ -242,6 +242,22 @@ public class EnumMapDeserializer
return deserialize(p, ctxt, constructMap(ctxt));
case JsonTokenId.ID_STRING:
return (EnumMap<?,?>) _valueInstantiator.createFromString(ctxt, p.getText());
+ case JsonTokenId.ID_START_ARRAY:
+ {
+ JsonToken t = p.nextToken();
+ if (t == JsonToken.END_ARRAY) {
+ if (ctxt.isEnabled(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT)) {
+ return null;
+ }
+ } else if (ctxt.isEnabled(DeserializationFeature.UNWRAP_SINGLE_VALUE_ARRAYS)) {
+ final Object value = deserialize(p, ctxt);
+ if (p.nextToken() != JsonToken.END_ARRAY) {
+ handleMissingEndArrayForSingle(p, ctxt);
+ }
+ return (EnumMap<?,?>) value;
+ }
+ }
+ return (EnumMap<?,?>) ctxt.handleUnexpectedToken(getValueType(ctxt), JsonToken.START_ARRAY, p, null);
default:
}
// slightly redundant (since String was passed above), but also handles empty array case: