diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsForInputTypes/expected/types/PersonFilter.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsForInputTypes/expected/types/PersonFilter.kt index bdf96ca0d..eaee7a583 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsForInputTypes/expected/types/PersonFilter.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsForInputTypes/expected/types/PersonFilter.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.constantsForInputTypes.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class PersonFilter( +public class PersonFilter @JsonCreator constructor( + @JsonProperty("email") public val email: String? = default("email"), ) : GraphQLInput() { override fun fields(): List> = listOf("email" to email) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsWithExtendedInputTypes/expected/types/PersonFilter.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsWithExtendedInputTypes/expected/types/PersonFilter.kt index ae0d4063a..11123d09f 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsWithExtendedInputTypes/expected/types/PersonFilter.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/constantsWithExtendedInputTypes/expected/types/PersonFilter.kt @@ -1,5 +1,7 @@ package com.netflix.graphql.dgs.codegen.cases.constantsWithExtendedInputTypes.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Int @@ -7,8 +9,10 @@ import kotlin.Pair import kotlin.String import kotlin.collections.List -public class PersonFilter( +public class PersonFilter @JsonCreator constructor( + @JsonProperty("email") public val email: String? = default("email"), + @JsonProperty("birthYear") public val birthYear: Int? = default("birthYear"), ) : GraphQLInput() { override fun fields(): List> = listOf("email" to email, "birthYear" to diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassDocs/expected/types/MovieFilter.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassDocs/expected/types/MovieFilter.kt index 345ba511c..885af67ea 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassDocs/expected/types/MovieFilter.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassDocs/expected/types/MovieFilter.kt @@ -1,5 +1,7 @@ package com.netflix.graphql.dgs.codegen.cases.dataClassDocs.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair @@ -11,7 +13,8 @@ import kotlin.collections.List * * It takes a title and such. */ -public class MovieFilter( +public class MovieFilter @JsonCreator constructor( + @JsonProperty("titleFilter") public val titleFilter: String? = default("titleFilter"), ) : GraphQLInput() { override fun fields(): List> = listOf("titleFilter" to titleFilter) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassFieldDocs/expected/types/MovieFilter.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassFieldDocs/expected/types/MovieFilter.kt index 4a4e7f588..e2c26487c 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassFieldDocs/expected/types/MovieFilter.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/dataClassFieldDocs/expected/types/MovieFilter.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.dataClassFieldDocs.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class MovieFilter( +public class MovieFilter @JsonCreator constructor( + @JsonProperty("titleFilter") public val titleFilter: String? = default("titleFilter"), ) : GraphQLInput() { override fun fields(): List> = listOf("titleFilter" to titleFilter) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/input/expected/types/MovieFilter.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/input/expected/types/MovieFilter.kt index 16fd73753..2c9535832 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/input/expected/types/MovieFilter.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/input/expected/types/MovieFilter.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.input.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class MovieFilter( +public class MovieFilter @JsonCreator constructor( + @JsonProperty("genre") public val genre: String? = default("genre"), ) : GraphQLInput() { override fun fields(): List> = listOf("genre" to genre) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultEnumValueForArray/expected/types/SomeType.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultEnumValueForArray/expected/types/SomeType.kt index ab733bf04..bf15d9394 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultEnumValueForArray/expected/types/SomeType.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultEnumValueForArray/expected/types/SomeType.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.inputWithDefaultEnumValueForArray.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class SomeType( +public class SomeType @JsonCreator constructor( + @JsonProperty("colors") public val colors: List? = default?>("colors"), ) : GraphQLInput() { override fun fields(): List> = listOf("colors" to colors) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultIntValueForArray/expected/types/SomeType.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultIntValueForArray/expected/types/SomeType.kt index dea0b24ec..915ae4480 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultIntValueForArray/expected/types/SomeType.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultIntValueForArray/expected/types/SomeType.kt @@ -1,5 +1,7 @@ package com.netflix.graphql.dgs.codegen.cases.inputWithDefaultIntValueForArray.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Int @@ -7,7 +9,8 @@ import kotlin.Pair import kotlin.String import kotlin.collections.List -public class SomeType( +public class SomeType @JsonCreator constructor( + @JsonProperty("numbers") public val numbers: List? = default?>("numbers"), ) : GraphQLInput() { override fun fields(): List> = listOf("numbers" to numbers) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultStringValueForArray/expected/types/SomeType.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultStringValueForArray/expected/types/SomeType.kt index 104f8b6f0..7ec76cddb 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultStringValueForArray/expected/types/SomeType.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultStringValueForArray/expected/types/SomeType.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.inputWithDefaultStringValueForArray.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class SomeType( +public class SomeType @JsonCreator constructor( + @JsonProperty("names") public val names: List? = default?>("names"), ) : GraphQLInput() { override fun fields(): List> = listOf("names" to names) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForArray/expected/types/SomeType.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForArray/expected/types/SomeType.kt index ac63e3bdd..f6f970b08 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForArray/expected/types/SomeType.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForArray/expected/types/SomeType.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.inputWithDefaultValueForArray.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class SomeType( +public class SomeType @JsonCreator constructor( + @JsonProperty("names") public val names: List? = default?>("names"), ) : GraphQLInput() { override fun fields(): List> = listOf("names" to names) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForEnum/expected/types/ColorFilter.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForEnum/expected/types/ColorFilter.kt index db06d5b00..0bd181b68 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForEnum/expected/types/ColorFilter.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithDefaultValueForEnum/expected/types/ColorFilter.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.inputWithDefaultValueForEnum.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class ColorFilter( +public class ColorFilter @JsonCreator constructor( + @JsonProperty("color") public val color: Color? = default("color"), ) : GraphQLInput() { override fun fields(): List> = listOf("color" to color) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithExtendedType/expected/types/MovieFilter.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithExtendedType/expected/types/MovieFilter.kt index 7f529f505..43c8258f5 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithExtendedType/expected/types/MovieFilter.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithExtendedType/expected/types/MovieFilter.kt @@ -1,5 +1,7 @@ package com.netflix.graphql.dgs.codegen.cases.inputWithExtendedType.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Int @@ -7,8 +9,10 @@ import kotlin.Pair import kotlin.String import kotlin.collections.List -public class MovieFilter( +public class MovieFilter @JsonCreator constructor( + @JsonProperty("genre") public val genre: String? = default("genre"), + @JsonProperty("releaseYear") public val releaseYear: Int? = default("releaseYear"), ) : GraphQLInput() { override fun fields(): List> = listOf("genre" to genre, "releaseYear" to diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithReservedWord/expected/types/SampleInput.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithReservedWord/expected/types/SampleInput.kt index 97986e155..e54de8863 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithReservedWord/expected/types/SampleInput.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/inputWithReservedWord/expected/types/SampleInput.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.inputWithReservedWord.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class SampleInput( +public class SampleInput @JsonCreator constructor( + @JsonProperty("return") public val `return`: String, ) : GraphQLInput() { override fun fields(): List> = listOf("return" to `return`) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I1.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I1.kt index 3d4d860c0..dd26e7d95 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I1.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I1.kt @@ -1,13 +1,17 @@ package com.netflix.graphql.dgs.codegen.cases.projectionWithNestedInputs.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class I1( +public class I1 @JsonCreator constructor( + @JsonProperty("arg1") public val arg1: I1? = default("arg1"), + @JsonProperty("arg2") public val arg2: I2? = default("arg2"), ) : GraphQLInput() { override fun fields(): List> = listOf("arg1" to arg1, "arg2" to arg2) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I2.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I2.kt index 8de341675..b1c26c2bd 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I2.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithNestedInputs/expected/types/I2.kt @@ -1,13 +1,17 @@ package com.netflix.graphql.dgs.codegen.cases.projectionWithNestedInputs.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class I2( +public class I2 @JsonCreator constructor( + @JsonProperty("arg1") public val arg1: String? = default("arg1"), + @JsonProperty("arg2") public val arg2: String? = default("arg2"), ) : GraphQLInput() { override fun fields(): List> = listOf("arg1" to arg1, "arg2" to arg2) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithPrimitiveAndArgs/expected/types/I.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithPrimitiveAndArgs/expected/types/I.kt index 6304f9111..3b06d6a31 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithPrimitiveAndArgs/expected/types/I.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithPrimitiveAndArgs/expected/types/I.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.projectionWithPrimitiveAndArgs.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class I( +public class I @JsonCreator constructor( + @JsonProperty("arg") public val arg: String? = default("arg"), ) : GraphQLInput() { override fun fields(): List> = listOf("arg" to arg) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/expected/types/I.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/expected/types/I.kt index fd1a95b77..b8acb95ca 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/expected/types/I.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/expected/types/I.kt @@ -1,12 +1,15 @@ package com.netflix.graphql.dgs.codegen.cases.projectionWithTypeAndArgs.expected.types +import com.fasterxml.jackson.`annotation`.JsonCreator +import com.fasterxml.jackson.`annotation`.JsonProperty import com.netflix.graphql.dgs.codegen.GraphQLInput import kotlin.Any import kotlin.Pair import kotlin.String import kotlin.collections.List -public class I( +public class I @JsonCreator constructor( + @JsonProperty("arg") public val arg: String? = default("arg"), ) : GraphQLInput() { override fun fields(): List> = listOf("arg" to arg) diff --git a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/test/QueryTest.kt b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/test/QueryTest.kt index b60ec316b..e9c4f27b1 100644 --- a/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/test/QueryTest.kt +++ b/graphql-dgs-codegen-core/src/integTest/kotlin/com/netflix/graphql/dgs/codegen/cases/projectionWithTypeAndArgs/test/QueryTest.kt @@ -78,10 +78,10 @@ class QueryTest { @Test fun testQueryWithAlias() { val query = DgsClient.buildQuery { - person(_alias= "person1", a2 = "person1") { + person(_alias = "person1", a2 = "person1") { firstname } - person(_alias= "person2", a2 = "person2") { + person(_alias = "person2", a2 = "person2") { firstname } } diff --git a/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2InputTypes.kt b/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2InputTypes.kt index b7fbc7993..d76b9247d 100644 --- a/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2InputTypes.kt +++ b/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/kotlin2/GenerateKotlin2InputTypes.kt @@ -18,6 +18,8 @@ package com.netflix.graphql.dgs.codegen.generators.kotlin2 +import com.fasterxml.jackson.annotation.JsonCreator +import com.fasterxml.jackson.annotation.JsonProperty import com.netflix.graphql.dgs.codegen.CodeGenConfig import com.netflix.graphql.dgs.codegen.GraphQLInput import com.netflix.graphql.dgs.codegen.generators.kotlin.ReservedKeywordFilter @@ -26,6 +28,7 @@ import com.netflix.graphql.dgs.codegen.generators.kotlin.sanitizeKdoc import com.netflix.graphql.dgs.codegen.generators.shared.SchemaExtensionsUtils.findInputExtensions import com.netflix.graphql.dgs.codegen.generators.shared.excludeSchemaTypeExtension import com.netflix.graphql.dgs.codegen.shouldSkip +import com.squareup.kotlinpoet.AnnotationSpec import com.squareup.kotlinpoet.ClassName import com.squareup.kotlinpoet.CodeBlock import com.squareup.kotlinpoet.FileSpec @@ -82,13 +85,14 @@ fun generateKotlin2InputTypes( // add a constructor with a parameter for every field .primaryConstructor( FunSpec.constructorBuilder() + .addAnnotation(JsonCreator::class) .addParameters( fields.map { field -> val type = type(field) ParameterSpec.builder( name = field.name, type = type - ) + ).addAnnotation(AnnotationSpec.builder(JsonProperty::class).addMember("%S", field.name).build()) .apply { if (type.isNullable) { defaultValue("default<%T, %T>(%S)", typeName, type, field.name)