| package com.fasterxml.jackson.databind.convert; |
| |
| import com.fasterxml.jackson.annotation.*; |
| import com.fasterxml.jackson.databind.*; |
| import com.fasterxml.jackson.databind.annotation.*; |
| import com.fasterxml.jackson.databind.util.StdConverter; |
| |
| // for [databind#795] |
| public class ConvertingAbstractSerializer795Test extends BaseMapTest |
| { |
| public static abstract class AbstractCustomType { |
| final String value; |
| public AbstractCustomType(String v) { |
| this.value = v; |
| } |
| } |
| |
| public static class ConcreteCustomType extends AbstractCustomType { |
| public ConcreteCustomType(String v) { |
| super(v); |
| } |
| } |
| |
| public static class AbstractCustomTypeDeserializationConverter extends StdConverter<String, AbstractCustomType>{ |
| |
| @Override |
| public AbstractCustomType convert(String arg) { |
| return new ConcreteCustomType(arg); |
| } |
| } |
| |
| public static class AbstractCustomTypeUser { |
| @JsonProperty |
| @JsonDeserialize(converter = AbstractCustomTypeDeserializationConverter.class) |
| private final AbstractCustomType customField; |
| |
| @JsonCreator |
| AbstractCustomTypeUser(@JsonProperty("customField") AbstractCustomType cf) { |
| this.customField = cf; |
| } |
| } |
| |
| public static class NonAbstractCustomType { |
| final String value; |
| public NonAbstractCustomType(String v) { |
| this.value = v; |
| } |
| } |
| |
| public static class NonAbstractCustomTypeDeserializationConverter extends StdConverter<String, NonAbstractCustomType>{ |
| |
| @Override |
| public NonAbstractCustomType convert(String arg) { |
| return new NonAbstractCustomType(arg); |
| } |
| } |
| |
| public static class NonAbstractCustomTypeUser { |
| @JsonProperty |
| @JsonDeserialize(converter = NonAbstractCustomTypeDeserializationConverter.class) |
| private final NonAbstractCustomType customField; |
| |
| @JsonCreator NonAbstractCustomTypeUser(@JsonProperty("customField") NonAbstractCustomType customField) { |
| this.customField = customField; |
| } |
| } |
| |
| /* |
| /********************************************************** |
| /* Test methods |
| /********************************************************** |
| */ |
| |
| private static final ObjectMapper JSON_MAPPER = new ObjectMapper(); |
| |
| public void testAbstractTypeDeserialization() throws Exception { |
| String test="{\"customField\": \"customString\"}"; |
| AbstractCustomTypeUser cu = JSON_MAPPER.readValue(test, AbstractCustomTypeUser.class); |
| assertNotNull(cu); |
| } |
| |
| public void testNonAbstractDeserialization() throws Exception { |
| String test="{\"customField\": \"customString\"}"; |
| NonAbstractCustomTypeUser cu = JSON_MAPPER.readValue(test, NonAbstractCustomTypeUser.class); |
| assertNotNull(cu); |
| } |
| } |