From d38b9e588bdb003051b104f77b9614fc5eca4082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Bresson?= Date: Thu, 20 Dec 2018 16:30:34 +0100 Subject: [PATCH] [core] support for 'x-enum-varnames' for enums in arrays (#1703) --- .../org/openapitools/codegen/DefaultCodegen.java | 3 ++- .../codegen/java/JavaClientCodegenTest.java | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) 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 76c3b2a1d110..17c1756d9ee2 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 @@ -4076,7 +4076,8 @@ public class DefaultCodegen implements CodegenConfig { enumVars.add(enumVar); } // if "x-enum-varnames" defined, update varnames - updateEnumVarsWithExtensions(enumVars, var.getVendorExtensions()); + Map extensions = var.mostInnerItems != null ? var.mostInnerItems.getVendorExtensions() : var.getVendorExtensions(); + updateEnumVarsWithExtensions(enumVars, extensions); allowableValues.put("enumVars", enumVars); // handle default value for enum, e.g. available => StatusEnum.AVAILABLE diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index 6de0f9115621..26c744121a9b 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -232,6 +232,22 @@ public class JavaClientCodegenTest { Assert.assertEquals(testedEnumVar.getOrDefault("value", ""), "1"); } + @Test + public void updateCodegenPropertyEnumWithCustomNames() { + final JavaClientCodegen codegen = new JavaClientCodegen(); + CodegenProperty array = codegenPropertyWithArrayOfIntegerValues(); + array.getItems().setVendorExtensions(Collections.singletonMap("x-enum-varnames", Collections.singletonList("ONE"))); + + codegen.updateCodegenPropertyEnum(array); + + List> enumVars = (List>) array.getItems().getAllowableValues().get("enumVars"); + Assert.assertNotNull(enumVars); + Map testedEnumVar = enumVars.get(0); + Assert.assertNotNull(testedEnumVar); + Assert.assertEquals(testedEnumVar.getOrDefault("name", ""),"ONE"); + Assert.assertEquals(testedEnumVar.getOrDefault("value", ""), "1"); + } + @Test public void testGeneratePing() throws Exception { Map properties = new HashMap<>();