diff options
author | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-19 19:19:48 -0700 |
---|---|---|
committer | Tatu Saloranta <tatu.saloranta@iki.fi> | 2020-06-19 19:19:48 -0700 |
commit | 65c81af00cdfc9af51f89d249061acca6f9b68b5 (patch) | |
tree | 046ae9acbd774dfab3ee9535588e990f38fe6c44 /src/test/java/com/fasterxml/jackson/databind/jsontype | |
parent | 75c992461bf5f332984c9c52ae8b649ae1f33557 (diff) | |
parent | 5d1f645b6d8fa6b15800c54272764b715636f95b (diff) | |
download | jackson-databind-65c81af00cdfc9af51f89d249061acca6f9b68b5.tar.gz |
Merge branch '2.11' into 2.12
Diffstat (limited to 'src/test/java/com/fasterxml/jackson/databind/jsontype')
-rw-r--r-- | src/test/java/com/fasterxml/jackson/databind/jsontype/deftyping/DefaultTypeResolverForLong2753Test.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/test/java/com/fasterxml/jackson/databind/jsontype/deftyping/DefaultTypeResolverForLong2753Test.java b/src/test/java/com/fasterxml/jackson/databind/jsontype/deftyping/DefaultTypeResolverForLong2753Test.java new file mode 100644 index 000000000..b9ff71d00 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/databind/jsontype/deftyping/DefaultTypeResolverForLong2753Test.java @@ -0,0 +1,62 @@ +package com.fasterxml.jackson.databind.jsontype.deftyping; + +import java.util.HashMap; +import java.util.Map; + +import com.fasterxml.jackson.annotation.*; + +import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.annotation.JsonTypeResolver; +import com.fasterxml.jackson.databind.cfg.MapperConfig; +import com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder; + +public class DefaultTypeResolverForLong2753Test extends BaseMapTest +{ + static class Data { + private Long key; + + @JsonCreator + private Data(@JsonProperty("key") Long key) { + this.key = key; + } + + @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class") + @JsonTypeResolver(MyTypeResolverBuilder.class) + public long key() { + return key; + } + } + + static class MyTypeResolverBuilder extends StdTypeResolverBuilder { + @Override + protected boolean allowPrimitiveTypes(MapperConfig<?> config, + JavaType baseType) { + return true; + } + } + + public void testDefaultTypingWithLong() throws Exception + { + Data data = new Data(1L); + Map<String, Object> mapData = new HashMap<>(); + mapData.put("longInMap", 2L); + mapData.put("longAsField", data); + + // Configure Jackson to preserve types +// StdTypeResolverBuilder resolver = new MyTypeResolverBuilder(); +// resolver.init(JsonTypeInfo.Id.CLASS, null); +// resolver.inclusion(JsonTypeInfo.As.PROPERTY); +// resolver.typeProperty("__t"); + ObjectMapper mapper = jsonMapperBuilder() +// .setDefaultTyping(resolver) + .enable(SerializationFeature.INDENT_OUTPUT) + .build(); + + // Serialize + String json = mapper.writeValueAsString(mapData); +//System.err.println("JSON:\n"+json); + Map<?,?> result = mapper.readValue(json, Map.class); + assertNotNull(result); + assertEquals(2, result.size()); + } +} |