Skip to content

Commit 12ec69c

Browse files
committed
Consider primitive types in ParametrizedInput classes #421
1 parent a4edba7 commit 12ec69c

File tree

6 files changed

+81
-2
lines changed

6 files changed

+81
-2
lines changed

src/main/java/com/kobylynskyi/graphql/codegen/model/OperationDefinition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
public class OperationDefinition {
1414

1515
/**
16-
* Normalized name using {@link DataModelMapper#capitalizeIfRestricted(String) MapperUtils.capitalizeIfRestricted() }
16+
* Normalized name using {@link DataModelMapper#capitalizeIfRestricted(MappingContext, String)} }
1717
*/
1818
private String name;
1919
/**

src/main/java/com/kobylynskyi/graphql/codegen/model/ParameterDefinition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class ParameterDefinition {
2020

2121
private String type;
2222
/**
23-
* Normalized name using {@link DataModelMapper#capitalizeIfRestricted(String) MapperUtils.capitalizeIfRestricted() }
23+
* Normalized name using {@link DataModelMapper#capitalizeIfRestricted(MappingContext, String)} }
2424
*/
2525
private String name;
2626
/**

src/main/resources/templates/javaClassGraphqlParametrizedInput.ftl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<#assign MapperUtil=statics["com.kobylynskyi.graphql.codegen.java.JavaGraphQLTypeMapper"]>
12
<#if package?has_content>
23
package ${package};
34

@@ -102,9 +103,13 @@ public class ${className} implements GraphQLParametrizedInput {
102103
StringJoiner joiner = new StringJoiner(", ", "(", ")");
103104
<#if fields?has_content>
104105
<#list fields as field>
106+
<#if MapperUtil.isJavaPrimitive(field.type)>
107+
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}));
108+
<#else>
105109
if (${field.name} != null) {
106110
joiner.add("${field.originalName}: " + GraphQLRequestSerializer.getEntry(${field.name}));
107111
}
112+
</#if>
108113
</#list>
109114
</#if>
110115
return joiner.toString();

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,17 @@ void generate_WithModelSuffix() throws Exception {
7777
getFileByName(files, "EventPropertyParentParametrizedInput.java"));
7878
}
7979

80+
@Test
81+
void generate_PrimitivesInsideParametrizedInput() throws Exception {
82+
new JavaGraphQLCodegen(singletonList("src/test/resources/schemas/parametrized-input-client.graphqls"),
83+
outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo()).generate();
84+
85+
File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles());
86+
87+
assertSameTrimmedContent(new File("src/test/resources/expected-classes/request/ClientDataParametrizedInput.java.txt"),
88+
getFileByName(files, "ClientDataParametrizedInput.java"));
89+
}
90+
8091
@Test
8192
void generate_RequestAndResponseProjections_github() throws Exception {
8293
new JavaGraphQLCodegen(singletonList("src/test/resources/schemas/github.graphqls"),
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.github.graphql;
2+
3+
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLParametrizedInput;
4+
import com.kobylynskyi.graphql.codegen.model.graphql.GraphQLRequestSerializer;
5+
import java.util.StringJoiner;
6+
import java.util.Objects;
7+
8+
/**
9+
* Parametrized input for field data in type Client
10+
*/
11+
@javax.annotation.Generated(
12+
value = "com.kobylynskyi.graphql.codegen.GraphQLCodegen",
13+
date = "2020-12-31T23:59:59-0500"
14+
)
15+
public class ClientDataParametrizedInput implements GraphQLParametrizedInput {
16+
17+
private int ID;
18+
19+
public ClientDataParametrizedInput() {
20+
}
21+
22+
public ClientDataParametrizedInput(int ID) {
23+
this.ID = ID;
24+
}
25+
26+
public ClientDataParametrizedInput ID(int ID) {
27+
this.ID = ID;
28+
return this;
29+
}
30+
31+
@Override
32+
public boolean equals(Object obj) {
33+
if (this == obj) {
34+
return true;
35+
}
36+
if (obj == null || getClass() != obj.getClass()) {
37+
return false;
38+
}
39+
final ClientDataParametrizedInput that = (ClientDataParametrizedInput) obj;
40+
return Objects.equals(ID, that.ID);
41+
}
42+
43+
@Override
44+
public int hashCode() {
45+
return Objects.hash(ID);
46+
}
47+
48+
@Override
49+
public String toString() {
50+
StringJoiner joiner = new StringJoiner(", ", "(", ")");
51+
joiner.add("ID: " + GraphQLRequestSerializer.getEntry(ID));
52+
return joiner.toString();
53+
}
54+
55+
}

src/test/resources/schemas/parametrized-input-client.graphqls

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ type Query {
22
product(
33
companyId: ID!
44
): Product!
5+
6+
clients: [Client!]!
57
}
68

79
interface Product {
@@ -13,3 +15,9 @@ interface Product {
1315
type LinkCode {
1416
html: String
1517
}
18+
19+
type Client {
20+
data(ID: Int!): Data!
21+
}
22+
23+
enum Data { A B C }

0 commit comments

Comments
 (0)