[core] support for 'x-enum-varnames' for enums in arrays (#1703)

This commit is contained in:
Jérémie Bresson
2018-12-20 16:30:34 +01:00
committed by GitHub
parent b6e80e86b2
commit d38b9e588b
2 changed files with 18 additions and 1 deletions

View File

@@ -4076,7 +4076,8 @@ public class DefaultCodegen implements CodegenConfig {
enumVars.add(enumVar);
}
// if "x-enum-varnames" defined, update varnames
updateEnumVarsWithExtensions(enumVars, var.getVendorExtensions());
Map<String, Object> 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

View File

@@ -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<Map<String, String>> enumVars = (List<Map<String, String>>) array.getItems().getAllowableValues().get("enumVars");
Assert.assertNotNull(enumVars);
Map<String, String> 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<String, Object> properties = new HashMap<>();