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 d6be96d6fdf..978fb93f1bb 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 class DefaultCodegen implements CodegenConfig { 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; } 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 9fc3d600f90..2dfe69565e2 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 class DefaultCodegenTest { 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 3c7baaae8b7..6f01aeb80c9 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'