3
3
4
4
import cz .habarta .typescript .generator .parser .*;
5
5
import com .fasterxml .jackson .annotation .*;
6
+ import com .fasterxml .jackson .core .JsonProcessingException ;
7
+ import com .fasterxml .jackson .databind .ObjectMapper ;
6
8
import org .junit .Assert ;
7
9
import org .junit .Test ;
8
10
@@ -45,19 +47,21 @@ public void testConflictingJsonTypeInfoProperty() {
45
47
public void testTaggedUnion () {
46
48
final Jackson2Parser jacksonParser = getJackson2Parser ();
47
49
final Model model = jacksonParser .parseModel (SubTypeDiscriminatedByName1 .class );
48
- Assert .assertEquals (4 , model .getBeans ().size ());
50
+ Assert .assertEquals (5 , model .getBeans ().size ());
49
51
final BeanModel bean0 = model .getBean (ParentWithNameDiscriminant .class );
50
52
final BeanModel bean1 = model .getBean (SubTypeDiscriminatedByName1 .class );
51
53
final BeanModel bean2 = model .getBean (SubTypeDiscriminatedByName2 .class );
52
54
final BeanModel bean3 = model .getBean (SubTypeDiscriminatedByName3 .class );
53
- Assert .assertEquals (3 , bean0 .getTaggedUnionClasses ().size ());
55
+ final BeanModel bean4 = model .getBean (SubTypeDiscriminatedByName4 .class );
56
+ Assert .assertEquals (4 , bean0 .getTaggedUnionClasses ().size ());
54
57
Assert .assertNull (bean1 .getTaggedUnionClasses ());
55
58
Assert .assertNull (bean2 .getTaggedUnionClasses ());
56
59
Assert .assertNull (bean3 .getTaggedUnionClasses ());
57
60
Assert .assertEquals ("kind" , bean0 .getDiscriminantProperty ());
58
61
Assert .assertEquals ("explicit-name1" , bean1 .getDiscriminantLiteral ());
59
62
Assert .assertEquals ("SubType2" , bean2 .getDiscriminantLiteral ());
60
63
Assert .assertEquals ("Jackson2ParserTest$SubTypeDiscriminatedByName3" , bean3 .getDiscriminantLiteral ());
64
+ Assert .assertEquals ("Jackson2ParserTest$SubTypeDiscriminatedByName4" , bean4 .getDiscriminantLiteral ());
61
65
}
62
66
63
67
static Jackson2Parser getJackson2Parser () {
@@ -79,20 +83,30 @@ public class InheritedClass {
79
83
80
84
@ JsonTypeInfo (use = JsonTypeInfo .Id .NAME , include = JsonTypeInfo .As .PROPERTY , property = "kind" )
81
85
@ JsonSubTypes ({
82
- @ JsonSubTypes .Type (value = SubTypeDiscriminatedByName1 .class ),
86
+ @ JsonSubTypes .Type (value = SubTypeDiscriminatedByName1 .class , name = "SubType1" ), // value from @JsonTypeName is used
83
87
@ JsonSubTypes .Type (value = SubTypeDiscriminatedByName2 .class , name = "SubType2" ),
84
88
@ JsonSubTypes .Type (value = SubTypeDiscriminatedByName3 .class ),
89
+ @ JsonSubTypes .Type (value = SubTypeDiscriminatedByName4 .class ),
85
90
})
86
91
private static interface ParentWithNameDiscriminant {
87
92
}
88
93
89
94
@ JsonTypeName ("explicit-name1" )
90
95
private static class SubTypeDiscriminatedByName1 implements ParentWithNameDiscriminant {
91
96
}
92
- @ JsonTypeName (/* Default should be the simplename of the class */ )
93
97
private static class SubTypeDiscriminatedByName2 implements ParentWithNameDiscriminant {
94
98
}
99
+ @ JsonTypeName (/* Default should be the simplename of the class */ )
95
100
private static class SubTypeDiscriminatedByName3 implements ParentWithNameDiscriminant {
96
101
}
102
+ private static class SubTypeDiscriminatedByName4 implements ParentWithNameDiscriminant {
103
+ }
104
+
105
+ public static void main (String [] args ) throws JsonProcessingException {
106
+ System .out .println (new ObjectMapper ().writeValueAsString (new SubTypeDiscriminatedByName1 ()));
107
+ System .out .println (new ObjectMapper ().writeValueAsString (new SubTypeDiscriminatedByName2 ()));
108
+ System .out .println (new ObjectMapper ().writeValueAsString (new SubTypeDiscriminatedByName3 ()));
109
+ System .out .println (new ObjectMapper ().writeValueAsString (new SubTypeDiscriminatedByName4 ()));
110
+ }
97
111
98
112
}
0 commit comments