Skip to content

Commit 1fc590e

Browse files
committed
Populate field annotation for GraphQL input type #7
1 parent 4188605 commit 1fc590e

File tree

7 files changed

+50
-12
lines changed

7 files changed

+50
-12
lines changed

src/main/java/com/kobylynskyi/graphql/codegen/mapper/FieldDefinitionToDataModelMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ static OperationDefinition mapFieldDefinition(MappingConfig mappingConfig, Field
5151
operation.setName(fieldDef.getName());
5252
operation.setType(GraphqlTypeToJavaTypeMapper.getJavaType(mappingConfig, fieldDef.getType(), fieldDef.getName(), parentTypeName));
5353
operation.setAnnotations(GraphqlTypeToJavaTypeMapper.getAnnotations(mappingConfig, fieldDef.getType(), fieldDef.getName(), parentTypeName));
54-
operation.setParameters(InputValueDefinitionToParameterMapper.map(mappingConfig, fieldDef.getInputValueDefinitions()));
54+
operation.setParameters(InputValueDefinitionToParameterMapper.map(mappingConfig, fieldDef.getInputValueDefinitions(), fieldDef.getName()));
5555
return operation;
5656
}
5757

src/main/java/com/kobylynskyi/graphql/codegen/mapper/GraphqlTypeToJavaTypeMapper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ public static ParameterDefinition map(MappingConfig mappingConfig, FieldDefiniti
2323
return parameter;
2424
}
2525

26-
public static ParameterDefinition map(MappingConfig mappingConfig, InputValueDefinition inputValueDefinition) {
26+
public static ParameterDefinition map(MappingConfig mappingConfig, InputValueDefinition inputValueDefinition, String parentTypeName) {
2727
ParameterDefinition parameter = new ParameterDefinition();
2828
parameter.setName(MapperUtils.capitalizeIfRestricted(inputValueDefinition.getName()));
2929
parameter.setType(getJavaType(mappingConfig, inputValueDefinition.getType()));
30+
parameter.setAnnotations(getAnnotations(mappingConfig, inputValueDefinition.getType(), inputValueDefinition.getName(), parentTypeName));
3031
return parameter;
3132
}
3233

@@ -69,7 +70,7 @@ private static String getJavaType(MappingConfig mappingConfig, String graphlType
6970
}
7071

7172
static List<String> getAnnotations(MappingConfig mappingConfig, Type type, String name, String parentTypeName) {
72-
return getAnnotations(mappingConfig, type, name, parentTypeName, true);
73+
return getAnnotations(mappingConfig, type, name, parentTypeName, false);
7374
}
7475

7576
private static List<String> getAnnotations(MappingConfig mappingConfig, Type type, String name, String parentTypeName,

src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputDefinitionToDataModelMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static Map<String, Object> map(MappingConfig mappingConfig, InputObjectTy
2929
dataModel.put(IMPORTS, MapperUtils.getImports(mappingConfig, packageName));
3030
dataModel.put(CLASS_NAME, MapperUtils.getClassNameWithPrefixAndSuffix(mappingConfig, typeDefinition));
3131
dataModel.put(NAME, typeDefinition.getName());
32-
dataModel.put(FIELDS, InputValueDefinitionToParameterMapper.map(mappingConfig, typeDefinition.getInputValueDefinitions()));
32+
dataModel.put(FIELDS, InputValueDefinitionToParameterMapper.map(mappingConfig, typeDefinition.getInputValueDefinitions(), typeDefinition.getName()));
3333
return dataModel;
3434
}
3535

src/main/java/com/kobylynskyi/graphql/codegen/mapper/InputValueDefinitionToParameterMapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
*/
1616
public class InputValueDefinitionToParameterMapper {
1717

18-
public static List<ParameterDefinition> map(MappingConfig mappingConfig, List<InputValueDefinition> valueDefinitions) {
18+
public static List<ParameterDefinition> map(MappingConfig mappingConfig, List<InputValueDefinition> valueDefinitions, String parentTypeName) {
1919
if (valueDefinitions == null) {
2020
return Collections.emptyList();
2121
}
2222
return valueDefinitions.stream()
23-
.map(inputValueDefinition -> GraphqlTypeToJavaTypeMapper.map(mappingConfig, inputValueDefinition))
23+
.map(inputValueDefinition -> GraphqlTypeToJavaTypeMapper.map(mappingConfig, inputValueDefinition, parentTypeName))
2424
.collect(Collectors.toList());
2525
}
2626

src/test/java/com/kobylynskyi/graphql/codegen/GraphqlCodegenGitHubTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ void generate_ClassNameWithSuffix_Prefix() throws Exception {
7575
StringContains.containsString("public interface GithubAssigneeTO "));
7676

7777
// verify proper class name for GraphQL input
78-
assertThat(getGeneratedFileContent(files, "GithubChangeUserStatusInputTO.java"),
79-
StringContains.containsString("public class GithubChangeUserStatusInputTO "));
78+
assertEquals(Utils.getFileContent(new File("src/test/resources/expected-classes/GithubAcceptTopicSuggestionInputTO.java.txt").getPath()),
79+
getGeneratedFileContent(files, "GithubAcceptTopicSuggestionInputTO.java"));
8080

8181
// verify proper class name for GraphQL type and references to interfaces/types/unions for GraphQL type
8282
assertEquals(Utils.getFileContent(new File("src/test/resources/expected-classes/GithubCommitTO.java.txt").getPath()),
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.github.graphql;
2+
3+
import java.util.*;
4+
5+
public class GithubAcceptTopicSuggestionInputTO {
6+
7+
private String clientMutationId;
8+
@javax.validation.constraints.NotNull
9+
private String name;
10+
@javax.validation.constraints.NotNull
11+
private String repositoryId;
12+
13+
public GithubAcceptTopicSuggestionInputTO() {
14+
}
15+
16+
public String getClientMutationId() {
17+
return clientMutationId;
18+
}
19+
public void setClientMutationId(String clientMutationId) {
20+
this.clientMutationId = clientMutationId;
21+
}
22+
23+
public String getName() {
24+
return name;
25+
}
26+
public void setName(String name) {
27+
this.name = name;
28+
}
29+
30+
public String getRepositoryId() {
31+
return repositoryId;
32+
}
33+
public void setRepositoryId(String repositoryId) {
34+
this.repositoryId = repositoryId;
35+
}
36+
37+
}

src/test/resources/schemas/test.graphqls

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ schema {
99

1010
type Query {
1111
# Version of the application.
12-
version: String
12+
version: String!
1313

1414
# List of events of a specified category.
15-
eventsByCategoryAndStatus(categoryId: ID!, status: EventStatus): [Event]
15+
eventsByCategoryAndStatus(categoryId: ID!, status: EventStatus): [Event]!
1616

1717
# Single event by ID.
18-
eventById(id: ID!): Event
18+
eventById(id: ID!): Event!
1919
}
2020

2121
type Mutation {
2222
# Create a new event.
2323
createEvent(categoryId: String!,
24-
createdBy: String!): Event
24+
createdBy: String!): Event!
2525
}
2626

2727

0 commit comments

Comments
 (0)