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 d3998a47bca3..9955908058c4 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 @@ -1860,8 +1860,10 @@ private CodegenDiscriminator createDiscriminator(String schemaName, Schema schem discriminator.setMapping(schema.getDiscriminator().getMapping()); if (schema.getDiscriminator().getMapping() != null && !schema.getDiscriminator().getMapping().isEmpty()) { for (Entry e : schema.getDiscriminator().getMapping().entrySet()) { - String name = toModelName(ModelUtils.getSimpleRef(e.getValue())); // e.g e.getValue => #/components/schemas/Dog - discriminator.getMappedModels().add(new MappedModel(e.getKey(), name)); + String nameOrRef = e.getValue(); + String name = nameOrRef.indexOf('/') >= 0 ? ModelUtils.getSimpleRef(nameOrRef) : nameOrRef; + String modelName = toModelName(name); + discriminator.getMappedModels().add(new MappedModel(e.getKey(), modelName)); } } else { Map allDefinitions = ModelUtils.getSchemas(this.openAPI); 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 b8b3a7179055..0ac238286369 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 @@ -582,7 +582,7 @@ private void verifyPersonDiscriminator(CodegenDiscriminator discriminator) { test.setPropertyName("DollarUnderscoretype"); test.setMapping(new HashMap<>()); test.getMapping().put("a", "#/components/schemas/Adult"); - test.getMapping().put("c", "#/components/schemas/Child"); + test.getMapping().put("c", "Child"); test.getMappedModels().add(new CodegenDiscriminator.MappedModel("a", "Adult")); test.getMappedModels().add(new CodegenDiscriminator.MappedModel("c", "Child")); Assert.assertEquals(discriminator, test); 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 6f01aeb80c91..4d781cb871a3 100644 --- a/modules/openapi-generator/src/test/resources/3_0/allOf.yaml +++ b/modules/openapi-generator/src/test/resources/3_0/allOf.yaml @@ -32,7 +32,7 @@ components: propertyName: $_type mapping: a: '#/components/schemas/Adult' - c: '#/components/schemas/Child' + c: Child properties: $_type: type: string