提交 189343cb 编写于 作者: B Bogdan Kobylynskyi

Fix FieldResolver generation: consider modelNamePrefix/Suffix #58

上级 c9da6041
...@@ -66,6 +66,8 @@ public class GraphqlCodegenGradleTask extends DefaultTask { ...@@ -66,6 +66,8 @@ public class GraphqlCodegenGradleTask extends DefaultTask {
mappingConfig.setGenerateEqualsAndHashCode(generateEqualsAndHashCode); mappingConfig.setGenerateEqualsAndHashCode(generateEqualsAndHashCode);
mappingConfig.setGenerateToString(generateToString); mappingConfig.setGenerateToString(generateToString);
mappingConfig.setGenerateAsyncApi(generateAsyncApi); mappingConfig.setGenerateAsyncApi(generateAsyncApi);
mappingConfig.setGenerateParameterizedFieldsResolvers(generateParameterizedFieldsResolvers);
mappingConfig.setFieldsWithResolvers(fieldsWithResolvers);
new GraphqlCodegen(getSchemas(), outputDir, mappingConfig, buildJsonSupplier()).generate(); new GraphqlCodegen(getSchemas(), outputDir, mappingConfig, buildJsonSupplier()).generate();
} }
......
...@@ -33,13 +33,15 @@ public class FieldResolverDefinitionToDataModelMapper { ...@@ -33,13 +33,15 @@ public class FieldResolverDefinitionToDataModelMapper {
*/ */
public static Map<String, Object> map(MappingConfig mappingConfig, List<FieldDefinition> fieldDefs, public static Map<String, Object> map(MappingConfig mappingConfig, List<FieldDefinition> fieldDefs,
String typeName) { String typeName) {
Map<String, Object> dataModel = new HashMap<>();
String packageName = MapperUtils.getApiPackageName(mappingConfig); String packageName = MapperUtils.getApiPackageName(mappingConfig);
String typeNameNormalized = MapperUtils.getClassNameWithPrefixAndSuffix(mappingConfig, typeName);
Map<String, Object> dataModel = new HashMap<>();
dataModel.put(PACKAGE, packageName); dataModel.put(PACKAGE, packageName);
dataModel.put(IMPORTS, MapperUtils.getImportsForFieldResolvers(mappingConfig, packageName)); dataModel.put(IMPORTS, MapperUtils.getImportsForFieldResolvers(mappingConfig, packageName));
dataModel.put(CLASS_NAME, getClassName(typeName)); dataModel.put(CLASS_NAME, getClassName(typeNameNormalized));
dataModel.put(FIELDS, fieldDefs.stream() dataModel.put(FIELDS, fieldDefs.stream()
.map(fieldDef -> mapFieldDefinition(mappingConfig, fieldDef, typeName)) .map(fieldDef -> mapFieldDefinition(mappingConfig, fieldDef, typeNameNormalized))
.collect(Collectors.toList())); .collect(Collectors.toList()));
return dataModel; return dataModel;
} }
...@@ -83,7 +85,7 @@ public class FieldResolverDefinitionToDataModelMapper { ...@@ -83,7 +85,7 @@ public class FieldResolverDefinitionToDataModelMapper {
* - PersonResolver * - PersonResolver
*/ */
private static String getClassName(String typeName) { private static String getClassName(String typeName) {
return Utils.capitalize(typeName) + "Resolver"; return typeName + "Resolver";
} }
} }
...@@ -55,16 +55,18 @@ class GraphqlCodegenFieldsResolversTest { ...@@ -55,16 +55,18 @@ class GraphqlCodegenFieldsResolversTest {
@Test @Test
void generate_CustomFieldsResolvers() throws Exception { void generate_CustomFieldsResolvers() throws Exception {
mappingConfig.setModelNamePrefix("Github");
mappingConfig.setModelNameSuffix("TO");
mappingConfig.setFieldsWithResolvers(Collections.singleton("AcceptTopicSuggestionPayload.topic")); mappingConfig.setFieldsWithResolvers(Collections.singleton("AcceptTopicSuggestionPayload.topic"));
generator.generate(); generator.generate();
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles()); File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
assertSameTrimmedContent(new File("src/test/resources/expected-classes/AcceptTopicSuggestionPayload.java.txt"), assertSameTrimmedContent(new File("src/test/resources/expected-classes/GithubAcceptTopicSuggestionPayloadTO.java.txt"),
getGeneratedFile(files, "AcceptTopicSuggestionPayload.java")); getGeneratedFile(files, "GithubAcceptTopicSuggestionPayloadTO.java"));
assertSameTrimmedContent(new File("src/test/resources/expected-classes/AcceptTopicSuggestionPayloadResolver.java.txt"), assertSameTrimmedContent(new File("src/test/resources/expected-classes/GithubAcceptTopicSuggestionPayloadTOResolver.java.txt"),
getGeneratedFile(files, "AcceptTopicSuggestionPayloadResolver.java")); getGeneratedFile(files, "GithubAcceptTopicSuggestionPayloadTOResolver.java"));
} }
private static File getGeneratedFile(File[] files, String fileName) throws FileNotFoundException { private static File getGeneratedFile(File[] files, String fileName) throws FileNotFoundException {
......
package com.github.graphql;
import java.util.*;
import graphql.schema.*;
public interface AcceptTopicSuggestionPayloadResolver {
Topic topic(AcceptTopicSuggestionPayload acceptTopicSuggestionPayload, DataFetchingEnvironment env) throws Exception;
}
\ No newline at end of file
...@@ -2,14 +2,14 @@ package com.github.graphql; ...@@ -2,14 +2,14 @@ package com.github.graphql;
import java.util.*; import java.util.*;
public class AcceptTopicSuggestionPayload { public class GithubAcceptTopicSuggestionPayloadTO {
private String clientMutationId; private String clientMutationId;
public AcceptTopicSuggestionPayload() { public GithubAcceptTopicSuggestionPayloadTO() {
} }
public AcceptTopicSuggestionPayload(String clientMutationId) { public GithubAcceptTopicSuggestionPayloadTO(String clientMutationId) {
this.clientMutationId = clientMutationId; this.clientMutationId = clientMutationId;
} }
...@@ -35,8 +35,8 @@ public class AcceptTopicSuggestionPayload { ...@@ -35,8 +35,8 @@ public class AcceptTopicSuggestionPayload {
} }
public AcceptTopicSuggestionPayload build() { public GithubAcceptTopicSuggestionPayloadTO build() {
return new AcceptTopicSuggestionPayload(clientMutationId); return new GithubAcceptTopicSuggestionPayloadTO(clientMutationId);
} }
} }
......
package com.github.graphql;
import java.util.*;
import graphql.schema.*;
public interface GithubAcceptTopicSuggestionPayloadTOResolver {
GithubTopicTO topic(GithubAcceptTopicSuggestionPayloadTO githubAcceptTopicSuggestionPayloadTO, DataFetchingEnvironment env) throws Exception;
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册