blob: bd05964a7925c01bec05852e06182518e49d05b6 [file] [log] [blame]
Tatu Salorantab254aff2016-04-17 20:47:48 -07001package com.fasterxml.jackson.databind.jsontype;
2
3import java.util.concurrent.atomic.AtomicReference;
4
5import com.fasterxml.jackson.annotation.JsonSubTypes;
6import com.fasterxml.jackson.annotation.JsonTypeInfo;
Tatu Saloranta779411e2016-04-19 16:33:09 -07007
Tatu Salorantab254aff2016-04-17 20:47:48 -07008import com.fasterxml.jackson.databind.*;
9
10public class PolymorphicViaRefTypeTest extends BaseMapTest
11{
12
13 @JsonSubTypes({
14 @JsonSubTypes.Type(name = "impl5", value = ImplForAtomic.class)
15 })
16 static class BaseForAtomic {
17 }
18
19 static class ImplForAtomic extends BaseForAtomic {
20 public int x;
21
22 protected ImplForAtomic() { }
23 public ImplForAtomic(int x) { this.x = x; }
24 }
25
26 static class TypeInfoAtomic {
27 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "$type")
28 public AtomicReference<BaseForAtomic> value;
29 }
30
31 /*
32 /**********************************************************************
33 /* Test methods
34 /**********************************************************************
35 */
36
37 private final ObjectMapper MAPPER = objectMapper();
38
Tatu Saloranta779411e2016-04-19 16:33:09 -070039 public void testPolymorphicAtomicRefProperty() throws Exception
Tatu Salorantab254aff2016-04-17 20:47:48 -070040 {
41 TypeInfoAtomic data = new TypeInfoAtomic();
42 data.value = new AtomicReference<BaseForAtomic>(new ImplForAtomic(42));
43 String json = MAPPER.writeValueAsString(data);
Tatu Salorantab254aff2016-04-17 20:47:48 -070044 TypeInfoAtomic result = MAPPER.readValue(json, TypeInfoAtomic.class);
45 assertNotNull(result);
46 }
Tatu Salorantab254aff2016-04-17 20:47:48 -070047}