未验证 提交 25ef1740 编写于 作者: 梦境迷离's avatar 梦境迷离 提交者: GitHub

Kotlin, Scala: Fix Parametrized Input serialization #566 (#605)

上级 54945386
......@@ -43,10 +43,10 @@ data class ${className}(
<#list fields as field>
<#if field.type?ends_with("?")>
if (${field.name} != null) {
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}))
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>))
}
<#else>
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}))
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>))
</#if>
</#list>
return joiner.toString()
......
......@@ -57,8 +57,8 @@ case class ${className}(
override def toString(): String = {<#--There is no Option[Seq[T]], Format is not supported in the generated code, so it is very difficult to write template for this format.-->
<#if fields?has_content>
scala.Seq(<#list fields as field><#assign getMethod = ".get"><#assign asJava = ".asJava">
<#if MapperUtil.isScalaPrimitive(field.type)>"${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name})<#if field_has_next>,</#if><#elseif MapperUtil.isScalaOption(field.type)>if (${field.name}.isDefined) "${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}${getMethod}) else ""<#if field_has_next>,</#if><#else>if (${field.name} != null)<#if MapperUtil.isScalaCollection(field.type)> "${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}${asJava}) else ""<#if field_has_next>,</#if><#else> "${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}) else ""<#if field_has_next>,</#if></#if></#if></#list>
).filter(_ != "").mkString("(", ",", ")")
<#if MapperUtil.isScalaPrimitive(field.type)>"${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>)<#if field_has_next>,</#if><#elseif MapperUtil.isScalaOption(field.type)>if (${field.name}.isDefined) "${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}${getMethod}<#if field.serializeUsingObjectMapper>, true</#if>) else ""<#if field_has_next>,</#if><#else>if (${field.name} != null)<#if MapperUtil.isScalaCollection(field.type)> "${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}${asJava}<#if field.serializeUsingObjectMapper>, true</#if>) else ""<#if field_has_next>,</#if><#else> "${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}<#if field.serializeUsingObjectMapper>, true</#if>) else ""<#if field_has_next>,</#if></#if></#if></#list>
).filter(_ != "").mkString("(", ",", ")")<#--Copy it out and modify the code to one line after modification.-->
<#else>
"()"
</#if>
......
......@@ -13,6 +13,7 @@ import java.util.List;
import java.util.Objects;
import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent;
import static java.util.Collections.singleton;
import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.toList;
import static org.junit.jupiter.api.Assertions.assertEquals;
......@@ -39,19 +40,20 @@ class GraphQLCodegenRestrictedWordsAndParameterInputTest {
mappingConfig.setGenerateToString(true);
mappingConfig.setGenerateModelsForRootTypes(true);
mappingConfig.setApiNameSuffix("API");
mappingConfig.putCustomTypeMappingIfAbsent("DateTime", "java.time.ZonedDateTime");
mappingConfig.setUseObjectMapperForRequestSerialization(singleton("DateTime"));
new KotlinGraphQLCodegen(singletonList("src/test/resources/schemas/kt/restricted-words.graphqls"),
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
List<?> filters = Arrays
.asList("Char.kt", "CharResponseProjection.kt", "FunQueryRequest.kt", "FunQueryResponse.kt",
"QueryFunParametrizedInput.kt",
"QueryFunParametrizedInput.kt", "QueryPrivateParametrizedInput.kt",
"Super.kt", "TestEnum.kt", "WhenQueryAPI.kt");
List<String> generatedFileNames = Arrays.stream(files).map(File::getName).filter(f -> filters.contains(f))
.sorted().collect(toList());
assertEquals(Arrays.asList("Char.kt", "CharResponseProjection.kt", "FunQueryRequest.kt", "FunQueryResponse.kt",
"QueryFunParametrizedInput.kt",
"QueryFunParametrizedInput.kt", "QueryPrivateParametrizedInput.kt",
"Super.kt", "TestEnum.kt", "WhenQueryAPI.kt"), generatedFileNames);
for (File file : files) {
......
......@@ -19,7 +19,7 @@ import static java.util.Collections.singletonList;
import static java.util.stream.Collectors.toList;
import static org.junit.jupiter.api.Assertions.assertEquals;
class GraphQLCodegenReactorToStringTest {
class GraphQLCodegenRestrictedWordsAndToStringTest {
private final MappingConfig mappingConfig = new MappingConfig();
......@@ -73,7 +73,7 @@ class GraphQLCodegenReactorToStringTest {
mappingConfig.setGenerateApis(true);
mappingConfig.setGenerateModelsForRootTypes(true);
mappingConfig.setApiNameSuffix("API");
mappingConfig.setUseObjectMapperForRequestSerialization(singleton("DateTime"));
new ScalaGraphQLCodegen(singletonList("src/test/resources/schemas/scala/restricted-words.graphqls"),
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
......
package com.kobylynskyi.graphql.codegen.prot
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLParametrizedInput
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer
import java.util.StringJoiner
/**
* Parametrized input for field private in type Query
*/
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
data class QueryPrivateParametrizedInput(
val int: Int?,
val new: String?,
val enum: TestEnum? = TestEnum.long,
val createdAfter: java.time.ZonedDateTime?
) : GraphQLParametrizedInput {
override fun toString(): String {
val joiner = StringJoiner(", ", "( ", " )")
if (int != null) {
joiner.add("int: " + GraphQLRequestSerializer.getEntry(int))
}
if (new != null) {
joiner.add("new: " + GraphQLRequestSerializer.getEntry(new))
}
if (enum != null) {
joiner.add("enum: " + GraphQLRequestSerializer.getEntry(enum))
}
if (createdAfter != null) {
joiner.add("createdAfter: " + GraphQLRequestSerializer.getEntry(createdAfter, true))
}
return joiner.toString()
}
}
\ No newline at end of file
......@@ -12,7 +12,7 @@ data class Super(
val `is`: String?,
val `in`: Char?,
val Int: Super?,
val date: String?
val date: java.time.ZonedDateTime?
) {
companion object {
......@@ -42,7 +42,7 @@ data class Super(
private var `is`: String? = null
private var `in`: Char? = null
private var Int: Super? = null
private var date: String? = null
private var date: java.time.ZonedDateTime? = null
@Deprecated(message = "We have decided that this is not canon")
fun setIs(`is`: String?): Builder {
......@@ -60,7 +60,7 @@ data class Super(
return this
}
fun setDate(date: String?): Builder {
fun setDate(date: java.time.ZonedDateTime?): Builder {
this.date = date
return this
}
......
......@@ -18,7 +18,8 @@ case class QueryPrivateParametrizedInput(
seq1: scala.Seq[scala.Option[Int]],
seq2: scala.Seq[Int],
`new`: String,
enum: TestEnum = TestEnum.long
enum: TestEnum = TestEnum.long,
createdAfter: java.time.ZonedDateTime
) extends GraphQLParametrizedInput {
override def toString(): String = {
......@@ -28,7 +29,8 @@ case class QueryPrivateParametrizedInput(
if (seq1 != null) "seq1: " + GraphQLRequestSerializer.getEntry(seq1.asJava) else "",
if (seq2 != null) "seq2: " + GraphQLRequestSerializer.getEntry(seq2.asJava) else "",
if (`new` != null) "new: " + GraphQLRequestSerializer.getEntry(`new`) else "",
if (enum != null) "enum: " + GraphQLRequestSerializer.getEntry(enum) else ""
if (enum != null) "enum: " + GraphQLRequestSerializer.getEntry(enum) else "",
if (createdAfter != null) "createdAfter: " + GraphQLRequestSerializer.getEntry(createdAfter, true) else ""
).filter(_ != "").mkString("(", ",", ")")
}
......
......@@ -30,9 +30,9 @@ case class Synchronized(
"private: " + GraphQLRequestSerializer.getEntry(`private`),
"native: " + GraphQLRequestSerializer.getEntry(native),
"that: " + GraphQLRequestSerializer.getEntry(that),
if (enum != null) "enum: " + GraphQLRequestSerializer.getEntry(enum, true) else "",
if (enum != null) "enum: " + GraphQLRequestSerializer.getEntry(enum) else "",
if (Synchronized != null) "Synchronized: " + GraphQLRequestSerializer.getEntry(Synchronized) else "",
if (date != null) "date: " + GraphQLRequestSerializer.getEntry(date) else ""
if (date != null) "date: " + GraphQLRequestSerializer.getEntry(date, true) else ""
).filter(_ != "").mkString("{", ",", "}")
}
}
......
......@@ -4,7 +4,7 @@ schema {
type Query {
open: String
private(int: Int, new: String, enum: TestEnum = long): super
private(int: Int, new: String, enum: TestEnum = long, createdAfter: DateTime): super
when(final: [char]): ID
fun(final: Int): char
super: String
......
......@@ -4,7 +4,7 @@ schema {
type Query {
native: String
private(int: Int!, intOpt:Int, seq1:[Int], seq2:[Int!], new: String, enum: TestEnum = long): Synchronized
private(int: Int!, intOpt:Int, seq1:[Int], seq2:[Int!], new: String, enum: TestEnum = long, createdAfter: DateTime): Synchronized
case(final: [char]): ID
int(final: Int): char
super: String
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册