提交 6b451dc1 编写于 作者: M msl-at-fcb 提交者: Bogdan Kobylynskyi

Added support for annotations in generated kotlin operations #1002 (#1003)

上级 4161d86d
......@@ -38,7 +38,7 @@ interface ${className}<#if implements?has_content> : <#list implements as interf
<#if operation.throwsException>
@Throws(Exception::class)
</#if>
fun ${operation.name}(<#list operation.parameters as param>${param.name}: ${param.type}<#if param_has_next>, </#if></#list>): ${operation.type}
fun ${operation.name}(<#list operation.parameters as param><#list param.annotations as paramAnnotation>@${paramAnnotation}<#if param.annotations?has_content> </#if></#list>${param.name}: ${param.type}<#if param_has_next>, </#if></#list>): ${operation.type}
</#list>
}
......@@ -12,10 +12,13 @@ import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import static com.kobylynskyi.graphql.codegen.TestUtils.assertSameTrimmedContent;
import static com.kobylynskyi.graphql.codegen.TestUtils.getFileByName;
import static java.util.Collections.singleton;
import static java.util.Collections.singletonList;
import static org.hamcrest.MatcherAssert.assertThat;
......@@ -188,6 +191,51 @@ class GraphQLCodegenGitHubTest {
getFileByName(files, "AcceptTopicSuggestionPayloadResolver.kt"));
}
@Test
void generate_CustomFieldsResolversWithAnnotation() throws Exception {
mappingConfig.setModelNamePrefix("Github");
mappingConfig.setModelNameSuffix("TO");
mappingConfig.setApiNameSuffix("WithAnnotation");
mappingConfig.setResolverArgumentAnnotations(singleton("some.Annotation"));
mappingConfig.setGenerateDataFetchingEnvironmentArgumentInApis(true);
mappingConfig.setFieldsWithResolvers(Collections.singleton("AcceptTopicSuggestionPayload.topic"));
new KotlinGraphQLCodegen(singletonList("src/test/resources/schemas/github.graphqls"),
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputktClassesDir.listFiles());
assertSameTrimmedContent(new File(
"src/test/resources/expected-classes/kt/field-resolver/" +
"AcceptTopicSuggestionMutationWithAnnotation.kt.txt"),
getFileByName(files, "AcceptTopicSuggestionMutationWithAnnotation.kt"));
}
@Test
void generate_CustomFieldsResolversWithMultipleAnnotations() throws Exception {
Set<String> annotations = new HashSet<>();
annotations.add("some.Annotation");
annotations.add("another.Annotation");
mappingConfig.setModelNamePrefix("Github");
mappingConfig.setModelNameSuffix("TO");
mappingConfig.setApiNameSuffix("WithAnnotations");
mappingConfig.setResolverArgumentAnnotations(annotations);
mappingConfig.setGenerateDataFetchingEnvironmentArgumentInApis(true);
mappingConfig.setFieldsWithResolvers(Collections.singleton("AcceptTopicSuggestionPayload.topic"));
new KotlinGraphQLCodegen(singletonList("src/test/resources/schemas/github.graphqls"),
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
File[] files = Objects.requireNonNull(outputktClassesDir.listFiles());
assertSameTrimmedContent(new File(
"src/test/resources/expected-classes/kt/field-resolver/" +
"AcceptTopicSuggestionMutationWithAnnotations.kt.txt"),
getFileByName(files, "AcceptTopicSuggestionMutationWithAnnotations.kt"));
}
@Test
void generate_RequestWithDefaultValue() throws Exception {
mappingConfig.setGenerateBuilder(true);
......@@ -200,4 +248,4 @@ class GraphQLCodegenGitHubTest {
getFileByName(files, "FriendsQueryRequest.kt"));
}
}
\ No newline at end of file
}
package com.github.graphql
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface AcceptTopicSuggestionMutationWithAnnotation {
@Throws(Exception::class)
fun acceptTopicSuggestion(@some.Annotation input: GithubAcceptTopicSuggestionInputTO, env: graphql.schema.DataFetchingEnvironment): GithubAcceptTopicSuggestionPayloadTO?
}
package com.github.graphql
@javax.annotation.Generated(
value = ["com.kobylynskyi.graphql.codegen.GraphQLCodegen"],
date = "2020-12-31T23:59:59-0500"
)
interface AcceptTopicSuggestionMutationWithAnnotations {
@Throws(Exception::class)
fun acceptTopicSuggestion(@another.Annotation @some.Annotation input: GithubAcceptTopicSuggestionInputTO, env: graphql.schema.DataFetchingEnvironment): GithubAcceptTopicSuggestionPayloadTO?
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册