From f09925c1dad965ecdf1d510239b1f8a9bc77f489 Mon Sep 17 00:00:00 2001 From: Veerle van der Tas Date: Tue, 14 Nov 2023 17:19:22 +0100 Subject: [PATCH 1/2] Patching conflict between generateImmutableModels and generateNoArgsConstructorOnly --- src/main/resources/templates/java-lang/type.ftl | 4 ++-- .../codegen/GraphQLCodegenImmutableTest.java | 16 ++++++++++++++++ .../graphql/codegen/GraphQLCodegenTest.java | 4 ++-- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/resources/templates/java-lang/type.ftl b/src/main/resources/templates/java-lang/type.ftl index efe6a143e..8ce744aed 100644 --- a/src/main/resources/templates/java-lang/type.ftl +++ b/src/main/resources/templates/java-lang/type.ftl @@ -53,7 +53,7 @@ public class ${className} implements java.io.Serializable<#if implements?has_con public ${className}() { } -<#if fields?has_content && !generateNoArgsConstructorOnly> +<#if fields?has_content && (!generateNoArgsConstructorOnly || immutableModels)> public ${className}(<#list fields as field>${field.type} ${field.name}<#if field_has_next>, ) { <#list fields as field> this.${field.name} = ${field.name}; @@ -202,7 +202,7 @@ public class ${className} implements java.io.Serializable<#if implements?has_con public ${className} build() { -<#if generateNoArgsConstructorOnly> +<#if !immutableModels && generateNoArgsConstructorOnly> ${className} result = new ${className}(); <#list fields as field> <#if field.visibility == 'public'> diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java index 4f040f5cf..c3a657f07 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java @@ -39,4 +39,20 @@ void generate_CheckFiles() throws Exception { new File("src/test/resources/expected-classes/immutable/Event.java.txt"), getFileByName(files, "Event.java")); } + + @Test + void generate_noArgs_CheckFiles() throws Exception { + mappingConfig.setPackageName("com.kobylynskyi.graphql.immutable"); + mappingConfig.setGenerateImmutableModels(true); + mappingConfig.setGenerateNoArgsConstructorOnly(true); + + new JavaGraphQLCodegen(singletonList("src/test/resources/schemas/test.graphqls"), + outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo(mappingConfig)).generate(); + + File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles()); + + assertSameTrimmedContent( + new File("src/test/resources/expected-classes/immutable/Event.java.txt"), + getFileByName(files, "Event.java")); + } } diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java index 29d02cd1a..cd1a8d516 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenTest.java @@ -463,7 +463,7 @@ void generate_PublicFields() throws Exception { void generate_PublicFields_NoArgsConstructor_immutableModels() throws Exception { mappingConfig.setGenerateModelsWithPublicFields(true); mappingConfig.setGenerateNoArgsConstructorOnly(true); - mappingConfig.setGenerateImmutableModels(true); + mappingConfig.setGenerateImmutableModels(false); mappingConfig.setGenerateClient(true); generate("src/test/resources/schemas/test.graphqls"); @@ -483,7 +483,7 @@ void generate_PublicFields_NoArgsConstructor_immutableModels() throws Exception void generate_PublicFields_NoBuilder_NoArgsConstructor() throws Exception { mappingConfig.setGenerateModelsWithPublicFields(true); mappingConfig.setGenerateNoArgsConstructorOnly(true); - mappingConfig.setGenerateImmutableModels(true); + mappingConfig.setGenerateImmutableModels(false); mappingConfig.setGenerateBuilder(false); generate("src/test/resources/schemas/test.graphqls"); From ff72ee8d578c7765b58f7c69149eb54e92206a9d Mon Sep 17 00:00:00 2001 From: Veerle van der Tas Date: Tue, 14 Nov 2023 17:42:23 +0100 Subject: [PATCH 2/2] Code style --- .../codegen/GraphQLCodegenImmutableTest.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java index c3a657f07..1ca0e6979 100644 --- a/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java +++ b/src/test/java/com/kobylynskyi/graphql/codegen/GraphQLCodegenImmutableTest.java @@ -42,17 +42,17 @@ void generate_CheckFiles() throws Exception { @Test void generate_noArgs_CheckFiles() throws Exception { - mappingConfig.setPackageName("com.kobylynskyi.graphql.immutable"); - mappingConfig.setGenerateImmutableModels(true); - mappingConfig.setGenerateNoArgsConstructorOnly(true); + mappingConfig.setPackageName("com.kobylynskyi.graphql.immutable"); + mappingConfig.setGenerateImmutableModels(true); + mappingConfig.setGenerateNoArgsConstructorOnly(true); - new JavaGraphQLCodegen(singletonList("src/test/resources/schemas/test.graphqls"), - outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo(mappingConfig)).generate(); + new JavaGraphQLCodegen(singletonList("src/test/resources/schemas/test.graphqls"), + outputBuildDir, mappingConfig, TestUtils.getStaticGeneratedInfo(mappingConfig)).generate(); - File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles()); + File[] files = Objects.requireNonNull(outputJavaClassesDir.listFiles()); - assertSameTrimmedContent( - new File("src/test/resources/expected-classes/immutable/Event.java.txt"), - getFileByName(files, "Event.java")); + assertSameTrimmedContent( + new File("src/test/resources/expected-classes/immutable/Event.java.txt"), + getFileByName(files, "Event.java")); } }