From 88e2490087a610ea8a7f27c76e992a8af0081c6c Mon Sep 17 00:00:00 2001 From: WeihmannTNG <100708812+WeihmannTNG@users.noreply.github.com> Date: Wed, 1 Jun 2022 02:28:20 +0200 Subject: [PATCH] [Java/Spring] Fix of issue #12494: call to superclass method is done with correct arguments (#12496) * [Java/Spring] add missing key parameter to put-item method call of super class (#12494) * [Java/Spring] add test for missing key parameter to put-item method call of super class (#12494) --- .../main/resources/JavaSpring/pojo.mustache | 2 +- .../java/spring/SpringCodegenTest.java | 23 ++++++++++ .../src/test/resources/bugs/issue_12494.yaml | 42 +++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) create mode 100644 modules/openapi-generator/src/test/resources/bugs/issue_12494.yaml diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache index 48e6d0faf87..6305be42a15 100644 --- a/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache +++ b/modules/openapi-generator/src/main/resources/JavaSpring/pojo.mustache @@ -181,7 +181,7 @@ public class {{classname}}{{#parent}} extends {{{parent}}}{{/parent}}{{^parent}} {{#isMap}} public {{classname}} put{{nameInCamelCase}}Item(String key, {{{items.datatypeWithEnum}}} {{name}}Item) { - super.put{{nameInCamelCase}}Item({{name}}Item); + super.put{{nameInCamelCase}}Item(key, {{name}}Item); return this; } {{/isMap}} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 51fef65c2a7..f5c683322ed 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -1380,4 +1380,27 @@ public class SpringCodegenTest { .assertParameterAnnotations() .containsWithNameAndAttributes("RequestParam", ImmutableMap.of("defaultValue", "\"\"")); } + + @Test + public void testPutItemsMethodContainsKeyInSuperClassMethodCall_issue12494() throws IOException { + File output = Files.createTempDirectory("test").toFile().getCanonicalFile(); + output.deleteOnExit(); + + OpenAPI openAPI = new OpenAPIParser() + .readLocation("src/test/resources/bugs/issue_12494.yaml", null, new ParseOptions()).getOpenAPI(); + SpringCodegen codegen = new SpringCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + + ClientOptInput input = new ClientOptInput() + .openAPI(openAPI) + .config(codegen); + + DefaultGenerator generator = new DefaultGenerator(); + Map files = generator.opts(input).generate().stream() + .collect(Collectors.toMap(File::getName, Function.identity())); + + JavaFileAssert.assertThat(files.get("ChildClass.java")) + .assertMethod("putSomeMapItem") + .bodyContainsLines("super.putSomeMapItem(key, someMapItem);"); + } } diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_12494.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_12494.yaml new file mode 100644 index 00000000000..c25bc9dfbec --- /dev/null +++ b/modules/openapi-generator/src/test/resources/bugs/issue_12494.yaml @@ -0,0 +1,42 @@ +openapi: '3.0.3' +info: + version: 1.0.0 + title: Example Api +paths: + /dummy: + get: + summary: dummy + operationId: dummy + responses: + '200': + description: OK + + +components: + schemas: + + ChildClass: + type: object + allOf: + - $ref: "#/components/schemas/ParentClass" + - type: object + properties: + objectType: + type: string + default: "ChildClass" + + ParentClass: + type: object + discriminator: + propertyName: objectType + properties: + objectType: + type: string + default: "ParentClass" + someMap: + $ref: "#/components/schemas/MapClass" + + MapClass: + type: object + additionalProperties: + type: string