diff options
author | MartÃn Coll <martingonzalezcoll@gmail.com> | 2019-09-20 02:04:20 -0300 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2019-09-19 22:04:20 -0700 |
commit | f960ac2192d20c767f26a055017f2a6930d850bf (patch) | |
tree | 561c0dd0e9a47605e9e8149298bee18dece7158e /src/test/java/com/fasterxml/jackson/databind/jsontype | |
parent | 23744b3a9246bd18f6e33b1387ce3eda84fc9a91 (diff) | |
download | jackson-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.java | 45 |
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); + } } |