From 76c8b184c16a56902d94250f9690eec2e9f7d2c5 Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Thu, 4 Oct 2018 20:53:41 +0900 Subject: [PATCH 1/2] Add test case which reproduces issue340 --- .../org/openapitools/codegen/DefaultCodegenTest.java | 10 ++++++++++ .../src/test/resources/3_0/allOf.yaml | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java index 9fc3d600f909..2dfe69565e28 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java @@ -453,6 +453,16 @@ public void testDiscriminatorWithCustomMapping() { verifyPersonDiscriminator(personModel.discriminator); } + @Test + public void testParentName() { + final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/allOf.yaml", null, new ParseOptions()).getOpenAPI(); + DefaultCodegen codegen = new DefaultCodegen(); + + Schema child = openAPI.getComponents().getSchemas().get("Child"); + CodegenModel childModel = codegen.fromModel("Child", child, openAPI.getComponents().getSchemas()); + Assert.assertEquals(childModel.parentSchema, "Person"); + } + @Test public void testCallbacks() { final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/3_0/callbacks.yaml", null, new ParseOptions()).getOpenAPI(); diff --git a/modules/openapi-generator/src/test/resources/3_0/allOf.yaml b/modules/openapi-generator/src/test/resources/3_0/allOf.yaml index 3c7baaae8b73..6f01aeb80c91 100644 --- a/modules/openapi-generator/src/test/resources/3_0/allOf.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/allOf.yaml @@ -53,9 +53,9 @@ components: Child: description: A representation of a child allOf: - - $ref: '#/components/schemas/Person' - type: object properties: age: type: integer - format: int32 \ No newline at end of file + format: int32 + - $ref: '#/components/schemas/Person' From cd81cb728e687431bbe7d7a79391d401310156df Mon Sep 17 00:00:00 2001 From: "akihito.nakano" Date: Thu, 4 Oct 2018 21:00:41 +0900 Subject: [PATCH 2/2] Take the first $ref we find in the allOf-List --- .../java/org/openapitools/codegen/DefaultCodegen.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 8ddbb41197b3..103d7af3dce4 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -4215,12 +4215,12 @@ public static Set getProducesInfo(OpenAPI openAPI, Operation operation) protected String getParentName(ComposedSchema composedSchema, Map allSchemas) { if (composedSchema.getAllOf() != null && !composedSchema.getAllOf().isEmpty()) { - Schema schema = composedSchema.getAllOf().get(0); - String ref = schema.get$ref(); - if (StringUtils.isBlank(ref)) { - return null; + for (Schema schema : composedSchema.getAllOf()) { + String ref = schema.get$ref(); + if (!StringUtils.isBlank(ref)) { + return ModelUtils.getSimpleRef(ref); + } } - return ModelUtils.getSimpleRef(ref); } return null; }