| package com.fasterxml.jackson.databind.jsontype.ext; |
| |
| import java.util.List; |
| |
| import com.fasterxml.jackson.annotation.*; |
| import com.fasterxml.jackson.core.type.TypeReference; |
| import com.fasterxml.jackson.databind.*; |
| |
| public class ExternalTypeIdWithIgnoreUnknownTest extends BaseMapTest |
| { |
| // [databind#2611] |
| @JsonIgnoreProperties(ignoreUnknown = true) |
| static class Wrapper2611 { |
| private String type; |
| |
| @JsonTypeInfo( |
| use = JsonTypeInfo.Id.NAME, |
| include = JsonTypeInfo.As.EXTERNAL_PROPERTY, |
| property = "type", |
| defaultImpl = Default2611.class |
| ) |
| private Default2611 data; |
| |
| @JsonCreator |
| public Wrapper2611( |
| @JsonProperty(value = "type", required = true) String type, |
| @JsonProperty(value = "data", required = true) Default2611 data |
| ) { |
| this.type = type; |
| this.data = data; |
| } |
| |
| String getType() { |
| return type; |
| } |
| |
| Default2611 getData() { |
| return data; |
| } |
| } |
| |
| static class Default2611 {} |
| |
| private final ObjectMapper MAPPER = newJsonMapper(); |
| |
| // [databind#2611] |
| public void testDeserialization() throws Exception |
| { |
| final String data = aposToQuotes("[{'type': 'test','data': {},'additional': {}}]"); |
| |
| List<Wrapper2611> result = MAPPER.readValue(data, new TypeReference<List<Wrapper2611>>() {}); |
| |
| assertEquals(1, result.size()); |
| |
| Wrapper2611 item = result.get(0); |
| assertEquals("test", item.getType()); |
| assertNotNull(item.getData()); |
| } |
| } |