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..1ca0e6979 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");