diff --git a/src/main/resources/templates/kotlin-lang/type.ftl b/src/main/resources/templates/kotlin-lang/type.ftl index 4ef1f4c8d..3a332eddd 100755 --- a/src/main/resources/templates/kotlin-lang/type.ftl +++ b/src/main/resources/templates/kotlin-lang/type.ftl @@ -88,7 +88,7 @@ open class ${className}()<#if implements?has_content> : <#list implements as int <#if field.type?ends_with("?")> if (${field.name} != null) { <#if toStringForRequest> - joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name})) + joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true)) <#else> <#if field.type == "String?"> joiner.add("${field.originalName}: \"" + ${field.name} + "\""); @@ -99,7 +99,7 @@ open class ${className}()<#if implements?has_content> : <#list implements as int } <#else> <#if toStringForRequest> - joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name})) + joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true)) <#else> <#if field.type == "String"> joiner.add("${field.originalName}: \"" + ${field.name} + "\""); diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenCustomScalarMappingTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenCustomScalarMappingTest.java index cc2e54c74..d1486986a 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenCustomScalarMappingTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenCustomScalarMappingTest.java @@ -90,4 +90,18 @@ void generate_UseObjectMapperToSerializeFields_Parameter() throws Exception { new File("src/test/resources/expected-classes/kt/QueryINeedQueryRequest_custom_serializer.kt.txt"), getFileByName(files, "QueryINeedQueryRequest.kt")); } + + @Test + void generate_UseObjectMapperToSerializeFields_Type() throws Exception { + mappingConfig.putCustomTypeMappingIfAbsent("DateTime", "java.time.LocalDateTime"); + mappingConfig.setUseObjectMapperForRequestSerialization(singleton("DateTime")); + new KotlinGraphQLCodegen(singletonList("src/test/resources/schemas/test.graphqls"), + outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate(); + + File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles()); + + assertSameTrimmedContent(new File("src/test/resources/expected-classes/kt/" + + "Event_useObjectMapperForRequestSerialization.kt.txt"), + getFileByName(files, "Event.kt")); + } } diff --git a/src/test/resources/expected-classes/kt/Event_useObjectMapperForRequestSerialization.kt.txt b/src/test/resources/expected-classes/kt/Event_useObjectMapperForRequestSerialization.kt.txt new file mode 100644 index 000000000..91a2275a8 --- /dev/null +++ b/src/test/resources/expected-classes/kt/Event_useObjectMapperForRequestSerialization.kt.txt @@ -0,0 +1,53 @@ +package com.kobylynskyi.graphql.test1 + +import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer +import java.util.StringJoiner + +/** + * An event that describes a thing that happens + */ +@javax.annotation.Generated( + value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"], + date = "2020-12-31T23:59:59-0500" +) +data class Event( + val id: String?, + val categoryId: String?, + val properties: List?, + val status: EventStatus?, + val createdBy: String?, + val createdDateTime: java.time.LocalDateTime?, + val active: Boolean?, + val rating: Int? +) { + + // In the future, it maybe change. + override fun toString(): String { + val joiner = StringJoiner(", ", "{ ", " }") + if (id != null) { + joiner.add("id: " + GraphQLRequestSerializer.getEntry(id)) + } + if (categoryId != null) { + joiner.add("categoryId: " + GraphQLRequestSerializer.getEntry(categoryId)) + } + if (properties != null) { + joiner.add("properties: " + GraphQLRequestSerializer.getEntry(properties)) + } + if (status != null) { + joiner.add("status: " + GraphQLRequestSerializer.getEntry(status)) + } + if (createdBy != null) { + joiner.add("createdBy: " + GraphQLRequestSerializer.getEntry(createdBy)) + } + if (createdDateTime != null) { + joiner.add("createdDateTime: " + GraphQLRequestSerializer.getEntry(createdDateTime, true)) + } + if (active != null) { + joiner.add("active: " + GraphQLRequestSerializer.getEntry(active)) + } + if (rating != null) { + joiner.add("rating: " + GraphQLRequestSerializer.getEntry(rating)) + } + return joiner.toString() + } +} \ No newline at end of file diff --git a/src/test/resources/expected-classes/kt/restricted-words/Super.kt.txt b/src/test/resources/expected-classes/kt/restricted-words/Super.kt.txt index 1ef9e5d43..63d7ef7fd 100644 --- a/src/test/resources/expected-classes/kt/restricted-words/Super.kt.txt +++ b/src/test/resources/expected-classes/kt/restricted-words/Super.kt.txt @@ -32,7 +32,7 @@ data class Super( joiner.add("Int: " + GraphQLRequestSerializer.getEntry(Int)) } if (date != null) { - joiner.add("date: " + GraphQLRequestSerializer.getEntry(date)) + joiner.add("date: " + GraphQLRequestSerializer.getEntry(date, true)) } return joiner.toString() }