diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/feign/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/feign/pojo.mustache index ec7db10f5dbd..3393162022d8 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/feign/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/feign/pojo.mustache @@ -84,6 +84,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}} {{#parcelableModel}} @@ -97,6 +98,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/discriminator}} {{/gson}} } + {{/lombok.RequiredArgsConstructor}} {{#vendorExtensions.x-has-readonly-properties}} {{^withXml}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pojo.mustache index d3fa205af150..b5c680539729 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey2/pojo.mustache @@ -88,10 +88,11 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}}{{#parcelableModel}} super();{{/parcelableModel}}{{/parent}}{{#gson}}{{#discriminator}} this.{{{discriminatorName}}} = this.getClass().getSimpleName();{{/discriminator}}{{/gson}} - }{{#vendorExtensions.x-has-readonly-properties}}{{^withXml}}{{#jackson}} + }{{/lombok.RequiredArgsConstructor}}{{#vendorExtensions.x-has-readonly-properties}}{{^withXml}}{{#jackson}} @JsonCreator public {{classname}}( diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pojo.mustache index d3fa205af150..b5c680539729 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pojo.mustache @@ -88,10 +88,11 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}}{{#parcelableModel}} super();{{/parcelableModel}}{{/parent}}{{#gson}}{{#discriminator}} this.{{{discriminatorName}}} = this.getClass().getSimpleName();{{/discriminator}}{{/gson}} - }{{#vendorExtensions.x-has-readonly-properties}}{{^withXml}}{{#jackson}} + }{{/lombok.RequiredArgsConstructor}}{{#vendorExtensions.x-has-readonly-properties}}{{^withXml}}{{#jackson}} @JsonCreator public {{classname}}( diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache index b8e34e608f1f..40a163002aa8 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/pojo.mustache @@ -61,8 +61,10 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}}{{#vendorExtensi {{>additional_properties}} {{#vendorExtensions.x-has-readonly-properties}}{{^withXml}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { } + {{/lombok.RequiredArgsConstructor}} {{#jsonb}}@JsonbCreator{{/jsonb}}{{#jackson}}@JsonCreator{{/jackson}} public {{classname}}( diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache index 21e63e33b1bd..8d19c2124f8e 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/native/pojo.mustache @@ -82,10 +82,11 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}}{{#parcelableModel}} super();{{/parcelableModel}}{{/parent}}{{#gson}}{{#discriminator}} this.{{{discriminatorName}}} = this.getClass().getSimpleName();{{/discriminator}}{{/gson}} - }{{#vendorExtensions.x-has-readonly-properties}}{{^withXml}} + }{{/lombok.RequiredArgsConstructor}}{{#vendorExtensions.x-has-readonly-properties}}{{^withXml}} {{#jackson}}@JsonCreator{{/jackson}} public {{classname}}( diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pojo.mustache index daba00dd3c7a..62880eb5cba3 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/pojo.mustache @@ -77,6 +77,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{#isDiscriminator}}protected{{/isDiscriminator}}{{^isDiscriminator}}private{{/isDiscriminator}} {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}} {{#parcelableModel}} @@ -94,6 +95,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/discriminator.isEnum}} {{/discriminator}} } + {{/lombok.RequiredArgsConstructor}} {{#vendorExtensions.x-has-readonly-properties}} {{^withXml}} diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/restclient/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/restclient/pojo.mustache index afc7c8c39ff2..60473046bdb7 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/restclient/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/restclient/pojo.mustache @@ -94,6 +94,7 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}} {{#parcelableModel}} @@ -107,6 +108,7 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v {{/discriminator}} {{/gson}} } + {{/lombok.RequiredArgsConstructor}} {{#vendorExtensions.x-has-readonly-properties}} {{^withXml}} /** diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pojo.mustache index 229586076fff..858ea401b7b3 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/resttemplate/pojo.mustache @@ -94,6 +94,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}} {{#parcelableModel}} @@ -107,6 +108,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/discriminator}} {{/gson}} } + {{/lombok.RequiredArgsConstructor}} {{#vendorExtensions.x-has-readonly-properties}} {{^withXml}} /** diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/pojo.mustache index 1db407b3972d..dfeb4008937f 100644 --- a/modules/openapi-generator/src/main/resources/Java/libraries/webclient/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/libraries/webclient/pojo.mustache @@ -94,6 +94,7 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}} {{#parcelableModel}} @@ -107,6 +108,7 @@ public {{>sealed}}class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#v {{/discriminator}} {{/gson}} } + {{/lombok.RequiredArgsConstructor}} {{#vendorExtensions.x-has-readonly-properties}} {{^withXml}} /** diff --git a/modules/openapi-generator/src/main/resources/Java/pojo.mustache b/modules/openapi-generator/src/main/resources/Java/pojo.mustache index d4133686321f..d14d9dc23d0a 100644 --- a/modules/openapi-generator/src/main/resources/Java/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/Java/pojo.mustache @@ -94,6 +94,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/vendorExtensions.x-is-jackson-optional-nullable}} {{/vars}} + {{^lombok.RequiredArgsConstructor}} public {{classname}}() { {{#parent}} {{#parcelableModel}} @@ -107,6 +108,7 @@ public class {{classname}} {{#parent}}extends {{{.}}} {{/parent}}{{#vendorExtens {{/discriminator}} {{/gson}} } + {{/lombok.RequiredArgsConstructor}} {{#vendorExtensions.x-has-readonly-properties}} {{^withXml}} /** diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 45e9f4492e63..4070349101bd 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -40,7 +40,6 @@ import org.openapitools.codegen.java.assertions.JavaFileAssert; import org.openapitools.codegen.languages.AbstractJavaCodegen; import org.openapitools.codegen.languages.JavaClientCodegen; -import org.openapitools.codegen.languages.RubyClientCodegen; import org.openapitools.codegen.languages.features.BeanValidationFeatures; import org.openapitools.codegen.languages.features.CXFServerFeatures; import org.openapitools.codegen.meta.features.SecurityFeature; @@ -49,7 +48,6 @@ import org.openapitools.codegen.testutils.ConfigAssert; import org.testng.Assert; import org.testng.annotations.DataProvider; -import org.testng.annotations.Parameters; import org.testng.annotations.Test; import java.io.File; @@ -3591,6 +3589,23 @@ public void testEnumWithImplements() { JavaFileAssert.assertThat(files.get("Type.java")).fileContains("Type implements java.io.Serializable {"); } + @Test(dataProvider = "supportedLibraries") + void testLombokRequiredArgsConstructor(Library library) { + final Path output = newTempFolder(); + final CodegenConfigurator configurator = new CodegenConfigurator() + .setGeneratorName(JAVA_GENERATOR) + .setLibrary(library.getValue()) + .setAdditionalProperties(Map.of( + AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@lombok.RequiredArgsConstructor" + )) + .setInputSpec("src/test/resources/3_1/java/petstore.yaml") + .setOutputDir(output.toString().replace("\\", "/")); + new DefaultGenerator().opts(configurator.toClientOptInput()).generate(); + + JavaFileAssert.assertThat(output.resolve("src/main/java/org/openapitools/client/model/Pet.java")) + .hasNoConstructor(); + } + /** * This checks bug issue-20718 * A situation when schemaMapping is used and oneOf also is used with one of the schema-mapped dataTypes and the dataType