diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java index ecc6a103e..fbfb2453f 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/AnnotationsMapper.java @@ -8,6 +8,7 @@ import graphql.language.Argument; import graphql.language.Directive; import graphql.language.InputValueDefinition; +import graphql.language.InterfaceTypeDefinition; import graphql.language.ListType; import graphql.language.NamedNode; import graphql.language.NonNullType; @@ -204,7 +205,7 @@ public List getAnnotationsForDirective(MappingContext mappingContext, public List getJacksonTypeIdAnnotations(MappingContext mappingContext, NamedNode def) { List defaults = new ArrayList<>(); if (Boolean.TRUE.equals(mappingContext.getGenerateJacksonTypeIdResolver()) - && def instanceof UnionTypeDefinition) { + && (def instanceof UnionTypeDefinition || def instanceof InterfaceTypeDefinition)) { defaults.add("com.fasterxml.jackson.annotation.JsonTypeInfo(use = " + "com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = \"__typename\")"); String modelPackageName = DataModelMapper.getModelPackageName(mappingContext); diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java index bce94a841..ce083407f 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java @@ -21,6 +21,7 @@ import static com.kobylynskyi.graphql.codegen.TestUtils.assertFileContainsElements; import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent; import static com.kobylynskyi.graphql.codegen.TestUtils.getFileByName; +import static java.lang.System.lineSeparator; import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static java.util.Collections.singletonMap; @@ -141,11 +142,10 @@ void generate_NoPackage() throws Exception { generate("src/test/resources/schemas/test.graphqls"); File[] files = Objects.requireNonNull(outputBuildDir.listFiles()); - assertFileContainsElements(files, "Event.java", System.lineSeparator() + - "/**" + System.lineSeparator() + - " * An event that describes a thing that happens" + System - .lineSeparator() + - " */" + System.lineSeparator()); + assertFileContainsElements(files, "Event.java", lineSeparator() + + "/**" + lineSeparator() + + " * An event that describes a thing that happens" + lineSeparator() + + " */" + lineSeparator()); } @Test diff --git a/src/test/resources/expected-classes/jackson-resolver-union/ResultObject.java.txt b/src/test/resources/expected-classes/jackson-resolver-union/ResultObject.java.txt index a4aa0ed2d..ccaceef42 100644 --- a/src/test/resources/expected-classes/jackson-resolver-union/ResultObject.java.txt +++ b/src/test/resources/expected-classes/jackson-resolver-union/ResultObject.java.txt @@ -5,8 +5,10 @@ package com.kobylynskyi.graphql.unionresolver; value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen", date = "2020-12-31T23:59:59-0500" ) +@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = "__typename") +@com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver(com.kobylynskyi.graphql.unionresolver.GraphqlJacksonTypeIdResolver.class) public interface ResultObject { java.util.List getList(); -} \ No newline at end of file +} diff --git a/src/test/resources/expected-classes/jackson-resolver-union/without-model-package/MyResultObjectSuffix.java.txt b/src/test/resources/expected-classes/jackson-resolver-union/without-model-package/MyResultObjectSuffix.java.txt index 2ee4011e0..4acd42053 100644 --- a/src/test/resources/expected-classes/jackson-resolver-union/without-model-package/MyResultObjectSuffix.java.txt +++ b/src/test/resources/expected-classes/jackson-resolver-union/without-model-package/MyResultObjectSuffix.java.txt @@ -2,8 +2,10 @@ value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen", date = "2020-12-31T23:59:59-0500" ) +@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = "__typename") +@com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver(GraphqlJacksonTypeIdResolver.class) public interface MyResultObjectSuffix { java.util.List getList(); -} \ No newline at end of file +} diff --git a/src/test/resources/expected-classes/kt/jackson-resolver-union/ResultObject.kt.txt b/src/test/resources/expected-classes/kt/jackson-resolver-union/ResultObject.kt.txt index e09549ab7..ce3847886 100644 --- a/src/test/resources/expected-classes/kt/jackson-resolver-union/ResultObject.kt.txt +++ b/src/test/resources/expected-classes/kt/jackson-resolver-union/ResultObject.kt.txt @@ -5,8 +5,10 @@ package com.kobylynskyi.graphql.unionresolver value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"], date = "2020-12-31T23:59:59-0500" ) +@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = "__typename") +@com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver(com.kobylynskyi.graphql.unionresolver.GraphqlJacksonTypeIdResolver::class) interface ResultObject { val list: List? -} \ No newline at end of file +} diff --git a/src/test/resources/expected-classes/kt/jackson-resolver-union/without-model-package/MyResultObjectSuffix.kt.txt b/src/test/resources/expected-classes/kt/jackson-resolver-union/without-model-package/MyResultObjectSuffix.kt.txt index 71f2ad729..a4a619cca 100644 --- a/src/test/resources/expected-classes/kt/jackson-resolver-union/without-model-package/MyResultObjectSuffix.kt.txt +++ b/src/test/resources/expected-classes/kt/jackson-resolver-union/without-model-package/MyResultObjectSuffix.kt.txt @@ -2,8 +2,10 @@ value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"], date = "2020-12-31T23:59:59-0500" ) +@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = "__typename") +@com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver(GraphqlJacksonTypeIdResolver::class) interface MyResultObjectSuffix { val list: List? -} \ No newline at end of file +} diff --git a/src/test/resources/expected-classes/scala/jackson-resolver-union/ResultObject.scala.txt b/src/test/resources/expected-classes/scala/jackson-resolver-union/ResultObject.scala.txt index f9ad137de..7cc67ab11 100644 --- a/src/test/resources/expected-classes/scala/jackson-resolver-union/ResultObject.scala.txt +++ b/src/test/resources/expected-classes/scala/jackson-resolver-union/ResultObject.scala.txt @@ -5,8 +5,10 @@ package com.kobylynskyi.graphql.unionresolver value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" ) +@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = "__typename") +@com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver(classOf[com.kobylynskyi.graphql.unionresolver.GraphqlJacksonTypeIdResolver]) trait ResultObject { val list: scala.Seq[_ <: UnionToResolve] -} \ No newline at end of file +} diff --git a/src/test/resources/expected-classes/scala/jackson-resolver-union/without-model-package/MyResultObjectSuffix.scala.txt b/src/test/resources/expected-classes/scala/jackson-resolver-union/without-model-package/MyResultObjectSuffix.scala.txt index 19d9d82d5..b921de8d0 100644 --- a/src/test/resources/expected-classes/scala/jackson-resolver-union/without-model-package/MyResultObjectSuffix.scala.txt +++ b/src/test/resources/expected-classes/scala/jackson-resolver-union/without-model-package/MyResultObjectSuffix.scala.txt @@ -2,8 +2,10 @@ value = Array("com.kobylynskyi.graphql.codegen.GraphQLCodegen"), date = "2020-12-31T23:59:59-0500" ) +@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME, property = "__typename") +@com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver(classOf[GraphqlJacksonTypeIdResolver]) trait MyResultObjectSuffix { val list: scala.Seq[_ <: MyUnionToResolveSuffix] -} \ No newline at end of file +}