diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/FieldDefinitionToDataModelMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/FieldDefinitionToDataModelMapper.java index f630316143868591469274cde1178faf46f058b9..d872419b7a761bba34399a29524e8c754a6fad7a 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/FieldDefinitionToDataModelMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/FieldDefinitionToDataModelMapper.java @@ -51,7 +51,7 @@ public class FieldDefinitionToDataModelMapper { operation.setName(fieldDef.getName()); operation.setType(GraphqlTypeToJavaTypeMapper.getJavaType(mappingConfig, fieldDef.getType(), fieldDef.getName(), parentTypeName)); operation.setAnnotations(GraphqlTypeToJavaTypeMapper.getAnnotations(mappingConfig, fieldDef.getType(), fieldDef.getName(), parentTypeName)); - operation.setParameters(InputValueDefinitionToParameterMapper.map(mappingConfig, fieldDef.getInputValueDefinitions())); + operation.setParameters(InputValueDefinitionToParameterMapper.map(mappingConfig, fieldDef.getInputValueDefinitions(), fieldDef.getName())); return operation; } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/GraphqlTypeToJavaTypeMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/GraphqlTypeToJavaTypeMapper.java index b44ba8494daf14e3d5b5294e3123254cb62ba655..b34c651665d2e46e567e4a24da3697898cf81035 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/GraphqlTypeToJavaTypeMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/GraphqlTypeToJavaTypeMapper.java @@ -23,10 +23,11 @@ class GraphqlTypeToJavaTypeMapper { return parameter; } - public static ParameterDefinition map(MappingConfig mappingConfig, InputValueDefinition inputValueDefinition) { + public static ParameterDefinition map(MappingConfig mappingConfig, InputValueDefinition inputValueDefinition, String parentTypeName) { ParameterDefinition parameter = new ParameterDefinition(); parameter.setName(MapperUtils.capitalizeIfRestricted(inputValueDefinition.getName())); parameter.setType(getJavaType(mappingConfig, inputValueDefinition.getType())); + parameter.setAnnotations(getAnnotations(mappingConfig, inputValueDefinition.getType(), inputValueDefinition.getName(), parentTypeName)); return parameter; } @@ -69,7 +70,7 @@ class GraphqlTypeToJavaTypeMapper { } static List getAnnotations(MappingConfig mappingConfig, Type type, String name, String parentTypeName) { - return getAnnotations(mappingConfig, type, name, parentTypeName, true); + return getAnnotations(mappingConfig, type, name, parentTypeName, false); } private static List getAnnotations(MappingConfig mappingConfig, Type type, String name, String parentTypeName, diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputDefinitionToDataModelMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputDefinitionToDataModelMapper.java index c135fd195cb12322a3b38a399409c67d9abc274f..a81f771728cd09611cf218488bfc6e1bd0303514 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputDefinitionToDataModelMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputDefinitionToDataModelMapper.java @@ -29,7 +29,7 @@ public class InputDefinitionToDataModelMapper { dataModel.put(IMPORTS, MapperUtils.getImports(mappingConfig, packageName)); dataModel.put(CLASS_NAME, MapperUtils.getClassNameWithPrefixAndSuffix(mappingConfig, typeDefinition)); dataModel.put(NAME, typeDefinition.getName()); - dataModel.put(FIELDS, InputValueDefinitionToParameterMapper.map(mappingConfig, typeDefinition.getInputValueDefinitions())); + dataModel.put(FIELDS, InputValueDefinitionToParameterMapper.map(mappingConfig, typeDefinition.getInputValueDefinitions(), typeDefinition.getName())); return dataModel; } diff --git a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputValueDefinitionToParameterMapper.java b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputValueDefinitionToParameterMapper.java index bed4b75b8b1c0d5ea3075734616335ba19dde492..b0ed48b18c0b09f915cba155ea850ad55260daee 100644 --- a/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputValueDefinitionToParameterMapper.java +++ b/src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputValueDefinitionToParameterMapper.java @@ -15,12 +15,12 @@ import java.util.stream.Collectors; */ public class InputValueDefinitionToParameterMapper { - public static List map(MappingConfig mappingConfig, List valueDefinitions) { + public static List map(MappingConfig mappingConfig, List valueDefinitions, String parentTypeName) { if (valueDefinitions == null) { return Collections.emptyList(); } return valueDefinitions.stream() - .map(inputValueDefinition -> GraphqlTypeToJavaTypeMapper.map(mappingConfig, inputValueDefinition)) + .map(inputValueDefinition -> GraphqlTypeToJavaTypeMapper.map(mappingConfig, inputValueDefinition, parentTypeName)) .collect(Collectors.toList()); } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphqlCodegenGitHubTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphqlCodegenGitHubTest.java index 388490354f6b927e51968cb04ef5571d4d7fff2e..e0f7e916a174c5673d0875011814982d01136d47 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphqlCodegenGitHubTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphqlCodegenGitHubTest.java @@ -75,8 +75,8 @@ class GraphqlCodegenGitHubTest { StringContains.containsString("public interface GithubAssigneeTO ")); // verify proper class name for GraphQL input - assertThat(getGeneratedFileContent(files, "GithubChangeUserStatusInputTO.java"), - StringContains.containsString("public class GithubChangeUserStatusInputTO ")); + assertEquals(Utils.getFileContent(new File("src/test/resources/expected-classes/GithubAcceptTopicSuggestionInputTO.java.txt").getPath()), + getGeneratedFileContent(files, "GithubAcceptTopicSuggestionInputTO.java")); // verify proper class name for GraphQL type and references to interfaces/types/unions for GraphQL type assertEquals(Utils.getFileContent(new File("src/test/resources/expected-classes/GithubCommitTO.java.txt").getPath()), diff --git a/src/test/resources/expected-classes/GithubAcceptTopicSuggestionInputTO.java.txt b/src/test/resources/expected-classes/GithubAcceptTopicSuggestionInputTO.java.txt new file mode 100644 index 0000000000000000000000000000000000000000..ce059b029acac4fb6bc541dcfe6d6889f9713442 --- /dev/null +++ b/src/test/resources/expected-classes/GithubAcceptTopicSuggestionInputTO.java.txt @@ -0,0 +1,37 @@ +package com.github.graphql; + +import java.util.*; + +public class GithubAcceptTopicSuggestionInputTO { + + private String clientMutationId; + @javax.validation.constraints.NotNull + private String name; + @javax.validation.constraints.NotNull + private String repositoryId; + + public GithubAcceptTopicSuggestionInputTO() { + } + + public String getClientMutationId() { + return clientMutationId; + } + public void setClientMutationId(String clientMutationId) { + this.clientMutationId = clientMutationId; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getRepositoryId() { + return repositoryId; + } + public void setRepositoryId(String repositoryId) { + this.repositoryId = repositoryId; + } + +} \ No newline at end of file diff --git a/src/test/resources/schemas/test.graphqls b/src/test/resources/schemas/test.graphqls index 207857dd32b17e598711683ca149c3ac2be85ad4..92403807fcf9110fc0861b0471f0d9203c3622b6 100644 --- a/src/test/resources/schemas/test.graphqls +++ b/src/test/resources/schemas/test.graphqls @@ -9,19 +9,19 @@ schema { type Query { # Version of the application. - version: String + version: String! # List of events of a specified category. - eventsByCategoryAndStatus(categoryId: ID!, status: EventStatus): [Event] + eventsByCategoryAndStatus(categoryId: ID!, status: EventStatus): [Event]! # Single event by ID. - eventById(id: ID!): Event + eventById(id: ID!): Event! } type Mutation { # Create a new event. createEvent(categoryId: String!, - createdBy: String!): Event + createdBy: String!): Event! }