Skip to content

Commit 230f749

Browse files
Improved test for Jackson2 tagged unions
1 parent 08347b7 commit 230f749

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

typescript-generator-core/src/main/java/cz/habarta/typescript/generator/parser/Jackson2Parser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ private String getDiscriminantPropertyName(JsonTypeInfo jsonTypeInfo) {
170170
private String getTypeName(final Class<?> cls) {
171171
// find @JsonTypeName recursively
172172
final JsonTypeName jsonTypeName = getAnnotationRecursive(cls, JsonTypeName.class);
173-
if (jsonTypeName != null && ! jsonTypeName.value().isEmpty()) {
173+
if (jsonTypeName != null && !jsonTypeName.value().isEmpty()) {
174174
return jsonTypeName.value();
175175
}
176176
// find @JsonSubTypes.Type recursively

typescript-generator-core/src/test/java/cz/habarta/typescript/generator/Jackson2ParserTest.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
import cz.habarta.typescript.generator.parser.*;
55
import com.fasterxml.jackson.annotation.*;
6+
import com.fasterxml.jackson.core.JsonProcessingException;
7+
import com.fasterxml.jackson.databind.ObjectMapper;
68
import org.junit.Assert;
79
import org.junit.Test;
810

@@ -45,19 +47,21 @@ public void testConflictingJsonTypeInfoProperty() {
4547
public void testTaggedUnion() {
4648
final Jackson2Parser jacksonParser = getJackson2Parser();
4749
final Model model = jacksonParser.parseModel(SubTypeDiscriminatedByName1.class);
48-
Assert.assertEquals(4, model.getBeans().size());
50+
Assert.assertEquals(5, model.getBeans().size());
4951
final BeanModel bean0 = model.getBean(ParentWithNameDiscriminant.class);
5052
final BeanModel bean1 = model.getBean(SubTypeDiscriminatedByName1.class);
5153
final BeanModel bean2 = model.getBean(SubTypeDiscriminatedByName2.class);
5254
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());
5457
Assert.assertNull(bean1.getTaggedUnionClasses());
5558
Assert.assertNull(bean2.getTaggedUnionClasses());
5659
Assert.assertNull(bean3.getTaggedUnionClasses());
5760
Assert.assertEquals("kind", bean0.getDiscriminantProperty());
5861
Assert.assertEquals("explicit-name1", bean1.getDiscriminantLiteral());
5962
Assert.assertEquals("SubType2", bean2.getDiscriminantLiteral());
6063
Assert.assertEquals("Jackson2ParserTest$SubTypeDiscriminatedByName3", bean3.getDiscriminantLiteral());
64+
Assert.assertEquals("Jackson2ParserTest$SubTypeDiscriminatedByName4", bean4.getDiscriminantLiteral());
6165
}
6266

6367
static Jackson2Parser getJackson2Parser() {
@@ -79,20 +83,30 @@ public class InheritedClass {
7983

8084
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "kind")
8185
@JsonSubTypes({
82-
@JsonSubTypes.Type(value = SubTypeDiscriminatedByName1.class),
86+
@JsonSubTypes.Type(value = SubTypeDiscriminatedByName1.class, name = "SubType1"), // value from @JsonTypeName is used
8387
@JsonSubTypes.Type(value = SubTypeDiscriminatedByName2.class, name = "SubType2"),
8488
@JsonSubTypes.Type(value = SubTypeDiscriminatedByName3.class),
89+
@JsonSubTypes.Type(value = SubTypeDiscriminatedByName4.class),
8590
})
8691
private static interface ParentWithNameDiscriminant {
8792
}
8893

8994
@JsonTypeName("explicit-name1")
9095
private static class SubTypeDiscriminatedByName1 implements ParentWithNameDiscriminant {
9196
}
92-
@JsonTypeName(/* Default should be the simplename of the class */)
9397
private static class SubTypeDiscriminatedByName2 implements ParentWithNameDiscriminant {
9498
}
99+
@JsonTypeName(/* Default should be the simplename of the class */)
95100
private static class SubTypeDiscriminatedByName3 implements ParentWithNameDiscriminant {
96101
}
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+
}
97111

98112
}

0 commit comments

Comments
 (0)