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 36a0fd4042fd..b9dd27ddcec3 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 @@ -52,10 +52,10 @@ public class {{classname}} {{#parent}}extends {{{.}}}{{/parent}}{{#vendorExtensi {{{.}}} {{/vendorExtensions.x-field-extra-annotation}} {{#isContainer}} - private {{{datatypeWithEnum}}} {{name}}{{#required}} = {{{defaultValue}}}{{/required}}{{^required}} = null{{/required}}; + protected {{{datatypeWithEnum}}} {{name}}{{#required}} = {{{defaultValue}}}{{/required}}{{^required}} = null{{/required}}; {{/isContainer}} {{^isContainer}} - private {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; + protected {{{datatypeWithEnum}}} {{name}}{{#defaultValue}} = {{{.}}}{{/defaultValue}}; {{/isContainer}} {{/vars}} {{>additional_properties}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java index 06cb837baa6d..bdd62ed6fdd5 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java @@ -235,5 +235,31 @@ public void testGeneratedApiExceptionMapperDoesNotHaveProviderAnnotationWhenDisa .assertTypeAnnotations() .doesNotContainWithName("Provider"); } + + @Test + public void testClientCanAccessFieldInParent() throws Exception { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/bugs/issue_23034.yaml", null, new ParseOptions()).getOpenAPI(); + + codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put(JavaClientCodegen.MICROPROFILE_GLOBAL_EXCEPTION_MAPPER, "false"); + + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); + + List files = new DefaultGenerator().opts(input).generate(); + + Map filesMap = files.stream() + .collect(Collectors.toMap(File::getName, Function.identity())); + + validateJavaSourceFiles(files); + + JavaFileAssert.assertThat(filesMap.get("Parent.java")) + .fileContains("protected String parentField;"); + } } diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_23034.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_23034.yaml new file mode 100644 index 000000000000..f8679e6e90f8 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/bugs/issue_23034.yaml @@ -0,0 +1,47 @@ +--- +openapi: 3.0.4 +info: + title: Reproduce + version: 'v1' +components: + schemas: + Child: + required: + - childField1 + type: object + allOf: + - $ref: "#/components/schemas/Parent" + properties: + childField1: + type: string + + Parent: + required: + - classType + - parentField + type: object + properties: + parentField: + type: string + readOnly: true + classType: + description: Identifier of discriminator mapping class. + enum: + - Child + type: string + discriminator: + propertyName: classType + mapping: + Child: "#/components/schemas/Child" +paths: + '/v1/reproduce': + get: + responses: + '200': + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Child' + description: 'reproduce' \ No newline at end of file