aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/com/fasterxml/jackson/databind/jsontype
diff options
context:
space:
mode:
authorMartín Coll <martingonzalezcoll@gmail.com>2019-09-20 02:04:20 -0300
committerTatu Saloranta <tatu.saloranta@iki.fi>2019-09-19 22:04:20 -0700
commitf960ac2192d20c767f26a055017f2a6930d850bf (patch)
tree561c0dd0e9a47605e9e8149298bee18dece7158e /src/test/java/com/fasterxml/jackson/databind/jsontype
parent23744b3a9246bd18f6e33b1387ce3eda84fc9a91 (diff)
downloadjackson-databind-f960ac2192d20c767f26a055017f2a6930d850bf.tar.gz
Deserialize WRAPPER_ARRAY with no second parameter as null value (#2468)
Diffstat (limited to 'src/test/java/com/fasterxml/jackson/databind/jsontype')
-rw-r--r--src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedDeserialization.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedDeserialization.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedDeserialization.java
index c1ea52c2e..59ea371ac 100644
--- a/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedDeserialization.java
+++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/TestTypedDeserialization.java
@@ -6,7 +6,9 @@ import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
+import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.*;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.type.TypeFactory;
public class TestTypedDeserialization
@@ -66,6 +68,28 @@ public class TestTypedDeserialization
}
}
+ @JsonDeserialize(using = NullAnimalDeserializer.class)
+ static class NullAnimal extends Animal
+ {
+ public static final NullAnimal NULL_INSTANCE = new NullAnimal();
+
+ public NullAnimal() {
+ super(null);
+ }
+ }
+
+ static class NullAnimalDeserializer extends JsonDeserializer<NullAnimal> {
+ @Override
+ public NullAnimal getNullValue(final DeserializationContext context) {
+ return NullAnimal.NULL_INSTANCE;
+ }
+
+ @Override
+ public NullAnimal deserialize(final JsonParser parser, final DeserializationContext context) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
static class AnimalContainer {
public Animal animal;
}
@@ -239,6 +263,27 @@ public class TestTypedDeserialization
Issue506NumberBean output = mapper.readValue(json, Issue506NumberBean.class);
assertEquals(input.number, output.number);
}
+
+ public void testTypeAsArrayWithNullableType() throws Exception
+ {
+ ObjectMapper m = new ObjectMapper();
+ m.addMixIn(Animal.class, TypeWithArray.class);
+ Animal a = m.readValue(
+ "[\""+Fish.class.getName()+"\"]", Animal.class);
+ assertNull(a);
+ }
+
+ public void testTypeAsArrayWithCustomDeserializer() throws Exception
+ {
+ ObjectMapper m = new ObjectMapper();
+ m.addMixIn(Animal.class, TypeWithArray.class);
+ Animal a = m.readValue(
+ "[\""+NullAnimal.class.getName()+"\"]", Animal.class);
+ assertNotNull(a);
+ assertEquals(NullAnimal.class, a.getClass());
+ NullAnimal c = (NullAnimal) a;
+ assertNull(c.name);
+ }
}