From 4075a52dce9009d82dcfef8ba9a626ed2a7299b5 Mon Sep 17 00:00:00 2001 From: Matthias Gabriel Date: Tue, 3 Oct 2023 12:46:56 +0200 Subject: [PATCH] fix: Add prefix and suffix to discriminator (#16684) Use the existing toModelName method to normalize the discriminator Co-authored-by: Matthias Gabriel --- .../openapitools/codegen/DefaultCodegen.java | 1 + .../codegen/DefaultCodegenTest.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) 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 41efd95da4e..ca04304a0e6 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 @@ -3585,6 +3585,7 @@ public class DefaultCodegen implements CodegenConfig { .map(p -> (Schema) p.get(discriminatorPropertyName)) .map(Schema::get$ref) .map(ModelUtils::getSimpleRef) + .map(this::toModelName) .orElseGet(() -> typeMapping.get("string")); discriminator.setPropertyType(propertyType); 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 9fae04d8c15..9debba85c2f 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 @@ -1529,6 +1529,25 @@ public class DefaultCodegenTest { Assert.assertEquals(cm.discriminator.getMappedModels(), hs); } + @Test + public void testComposedSchemaOneOfDiscriminatorMapPreAndPostFix() { + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/oneOfDiscriminator.yaml"); + DefaultCodegen codegen = new DefaultCodegen(); + codegen.setLegacyDiscriminatorBehavior(false); + codegen.setOpenAPI(openAPI); + codegen.setModelNamePrefix("Transfer"); + codegen.setModelNameSuffix("Dto"); + String modelName; + Schema sc; + CodegenModel cm; + + // ref oneOf models with enum property discriminator + modelName = "FruitOneOfEnumMappingDisc"; + sc = openAPI.getComponents().getSchemas().get(modelName); + cm = codegen.fromModel(modelName, sc); + assertThat(cm.discriminator.getPropertyType()).isEqualTo("TransferFruitTypeEnumDto"); + } + @Test public void testComposedSchemaMyPetsOneOfDiscriminatorMap() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/allOf_composition_discriminator.yaml");