diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index d4996256b1c..1b5f74bed47 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -1274,12 +1274,14 @@ public class ModelUtils { } } - if (refedWithoutDiscriminator.size() == 1 && hasAmbiguousParents) { - // allOf with a single $ref (no discriminator) - // TODO to be removed in 5.x or 6.x release - LOGGER.info("[deprecated] inheritance without use of 'discriminator.propertyName' has been deprecated" + - " in the 5.x release. Composed schema name: {}. Title: {}", - composedSchema.getName(), composedSchema.getTitle()); + // parent name only makes sense when there is a single obvious parent + if (refedWithoutDiscriminator.size() == 1) { + if (hasAmbiguousParents) { + LOGGER.warn("[deprecated] inheritance without use of 'discriminator.propertyName' is deprecated " + + "and will be removed in a future release. Generating model for composed schema name: {}. Title: {}", + composedSchema.getName(), composedSchema.getTitle()); + } + return refedWithoutDiscriminator.get(0); } 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 1ede1491958..472ee64f586 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 @@ -1363,6 +1363,7 @@ public class DefaultCodegenTest { assertEquals(cm.discriminator, discriminator); } + @Test public void testAllOfSingleRefNoOwnProps() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/2_0/composed-allof.yaml"); @@ -1371,9 +1372,9 @@ public class DefaultCodegenTest { Schema schema = openAPI.getComponents().getSchemas().get("NewMessageEventCoreNoOwnProps"); codegen.setOpenAPI(openAPI); CodegenModel model = codegen.fromModel("NewMessageEventCoreNoOwnProps", schema); - Assert.assertEquals(getNames(model.getVars()), Arrays.asList("id","message")); - Assert.assertNull(model.parent); - Assert.assertNull(model.allParents); + Assert.assertEquals(getNames(model.getVars()), Collections.emptyList()); + Assert.assertEquals(model.parent, "MessageEventCore"); + Assert.assertEquals(model.allParents, Collections.singletonList("MessageEventCore")); } class CodegenWithMultipleInheritance extends DefaultCodegen { @@ -1384,6 +1385,7 @@ public class DefaultCodegenTest { } } + @Test public void testAllOfParent() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/allOf-required-parent.yaml"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaInheritanceTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaInheritanceTest.java index ac94d91542f..1111b380384 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaInheritanceTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaInheritanceTest.java @@ -25,7 +25,6 @@ import io.swagger.v3.oas.models.media.Discriminator; import io.swagger.v3.oas.models.media.ObjectSchema; import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.media.StringSchema; -import java.util.Collections; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.CodegenModel; import org.openapitools.codegen.CodegenProperty; @@ -58,8 +57,8 @@ public class JavaInheritanceTest { Assert.assertEquals(cm.name, "sample"); Assert.assertEquals(cm.classname, "Sample"); - Assert.assertNull(cm.parent); - Assert.assertEquals(cm.imports, Collections.emptySet()); + Assert.assertEquals(cm.parent, "Base"); + Assert.assertEquals(cm.imports, Sets.newHashSet("Base")); } @Test(description = "convert a composed model with discriminator")