Skip to content

Commit 6dc3cf2

Browse files
jay3047Jay Shankar Gupta
andauthored
Use objectMapperForSerialization for kotlin type classes #995 (#996)
* use objectMapperForSerialization for kotlin type classes * removing Typo and test fix Co-authored-by: Jay Shankar Gupta <[email protected]>
1 parent 3f906d7 commit 6dc3cf2

File tree

4 files changed

+70
-3
lines changed

4 files changed

+70
-3
lines changed

src/main/resources/templates/kotlin-lang/type.ftl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ open class ${className}()<#if implements?has_content> : <#list implements as int
8888
<#if field.type?ends_with("?")>
8989
if (${field.name} != null) {
9090
<#if toStringForRequest>
91-
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}))
91+
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>))
9292
<#else>
9393
<#if field.type == "String?">
9494
joiner.add("${field.originalName}: \"" + ${field.name} + "\"");
@@ -99,7 +99,7 @@ open class ${className}()<#if implements?has_content> : <#list implements as int
9999
}
100100
<#else>
101101
<#if toStringForRequest>
102-
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}))
102+
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>))
103103
<#else>
104104
<#if field.type == "String">
105105
joiner.add("${field.originalName}: \"" + ${field.name} + "\"");

src/test/java/com/kobylynskyi/graphql/codegen/kotlin/GraphQLCodegenCustomScalarMappingTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,18 @@ void generate_UseObjectMapperToSerializeFields_Parameter() throws Exception {
9090
new File("src/test/resources/expected-classes/kt/QueryINeedQueryRequest_custom_serializer.kt.txt"),
9191
getFileByName(files, "QueryINeedQueryRequest.kt"));
9292
}
93+
94+
@Test
95+
void generate_UseObjectMapperToSerializeFields_Type() throws Exception {
96+
mappingConfig.putCustomTypeMappingIfAbsent("DateTime", "java.time.LocalDateTime");
97+
mappingConfig.setUseObjectMapperForRequestSerialization(singleton("DateTime"));
98+
new KotlinGraphQLCodegen(singletonList("src/test/resources/schemas/test.graphqls"),
99+
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
100+
101+
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
102+
103+
assertSameTrimmedContent(new File("src/test/resources/expected-classes/kt/" +
104+
"Event_useObjectMapperForRequestSerialization.kt.txt"),
105+
getFileByName(files, "Event.kt"));
106+
}
93107
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.kobylynskyi.graphql.test1
2+
3+
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer
4+
import java.util.StringJoiner
5+
6+
/**
7+
* An event that describes a thing that happens
8+
*/
9+
@javax.annotation.Generated(
10+
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
11+
date = "2020-12-31T23:59:59-0500"
12+
)
13+
data class Event(
14+
val id: String?,
15+
val categoryId: String?,
16+
val properties: List<EventProperty?>?,
17+
val status: EventStatus?,
18+
val createdBy: String?,
19+
val createdDateTime: java.time.LocalDateTime?,
20+
val active: Boolean?,
21+
val rating: Int?
22+
) {
23+
24+
// In the future, it maybe change.
25+
override fun toString(): String {
26+
val joiner = StringJoiner(", ", "{ ", " }")
27+
if (id != null) {
28+
joiner.add("id: " + GraphQLRequestSerializer.getEntry(id))
29+
}
30+
if (categoryId != null) {
31+
joiner.add("categoryId: " + GraphQLRequestSerializer.getEntry(categoryId))
32+
}
33+
if (properties != null) {
34+
joiner.add("properties: " + GraphQLRequestSerializer.getEntry(properties))
35+
}
36+
if (status != null) {
37+
joiner.add("status: " + GraphQLRequestSerializer.getEntry(status))
38+
}
39+
if (createdBy != null) {
40+
joiner.add("createdBy: " + GraphQLRequestSerializer.getEntry(createdBy))
41+
}
42+
if (createdDateTime != null) {
43+
joiner.add("createdDateTime: " + GraphQLRequestSerializer.getEntry(createdDateTime, true))
44+
}
45+
if (active != null) {
46+
joiner.add("active: " + GraphQLRequestSerializer.getEntry(active))
47+
}
48+
if (rating != null) {
49+
joiner.add("rating: " + GraphQLRequestSerializer.getEntry(rating))
50+
}
51+
return joiner.toString()
52+
}
53+
}

src/test/resources/expected-classes/kt/restricted-words/Super.kt.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ data class Super(
3232
joiner.add("Int: " + GraphQLRequestSerializer.getEntry(Int))
3333
}
3434
if (date != null) {
35-
joiner.add("date: " + GraphQLRequestSerializer.getEntry(date))
35+
joiner.add("date: " + GraphQLRequestSerializer.getEntry(date, true))
3636
}
3737
return joiner.toString()
3838
}

0 commit comments

Comments
 (0)