From d2d8782201738b443043f12da377f28a40d3dc93 Mon Sep 17 00:00:00 2001 From: Barry Kearns <61697611+barryadk@users.noreply.github.com> Date: Fri, 30 Apr 2021 14:58:02 +0100 Subject: [PATCH] fix for stripping prefix on single enums --- .../v3/generators/DefaultCodegenConfig.java | 22 +++++++++++-------- .../generators/java/AbstractJavaCodegen.java | 9 -------- .../generators/DefaultCodegenConfigTest.java | 18 +++++++++++++++ 3 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java index b3a04fd4bd..3273c05a07 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java +++ b/src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java @@ -396,21 +396,25 @@ private String findEnumName(int truncateIdx, Object value) { } /** - * Returns the common prefix of variables for enum naming + * Returns the common prefix of variables for enum naming if + * two or more variables are present. * * @param vars List of variable names * @return the common prefix for naming */ public String findCommonPrefixOfVars(List vars) { - try { - String[] listStr = vars.toArray(new String[vars.size()]); - String prefix = StringUtils.getCommonPrefix(listStr); - // exclude trailing characters that should be part of a valid variable - // e.g. ["status-on", "status-off"] => "status-" (not "status-o") - return prefix.replaceAll("[a-zA-Z0-9]+\\z", ""); - } catch (ArrayStoreException e) { - return ""; + if (vars.size() > 1) { + try { + String[] listStr = vars.toArray(new String[vars.size()]); + String prefix = StringUtils.getCommonPrefix(listStr); + // exclude trailing characters that should be part of a valid variable + // e.g. ["status-on", "status-off"] => "status-" (not "status-o") + return prefix.replaceAll("[a-zA-Z0-9]+\\z", ""); + } catch (ArrayStoreException e) { + // do nothing, just return default value + } } + return ""; } /** diff --git a/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java b/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java index 7eaf7236e8..ed39f2ab14 100644 --- a/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java +++ b/src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java @@ -1233,15 +1233,6 @@ protected void replaceDuplicatedInModelProperties(Map definition schema.set$ref(schema.get$ref().replace(modelName, newModelName)); }); } -/* - @Override - public String findCommonPrefixOfVars(List vars) { - String prefix = StringUtils.getCommonPrefix(vars.toArray(new String[vars.size()])); - // exclude trailing characters that should be part of a valid variable - // e.g. ["status-on", "status-off"] => "status-" (not "status-o") - return prefix.replaceAll("[a-zA-Z0-9]+\\z", ""); - } -*/ @Override public String toEnumName(CodegenProperty property) { diff --git a/src/test/java/io/swagger/codegen/v3/generators/DefaultCodegenConfigTest.java b/src/test/java/io/swagger/codegen/v3/generators/DefaultCodegenConfigTest.java index 877d8aece0..0a9fdf4ba0 100644 --- a/src/test/java/io/swagger/codegen/v3/generators/DefaultCodegenConfigTest.java +++ b/src/test/java/io/swagger/codegen/v3/generators/DefaultCodegenConfigTest.java @@ -28,6 +28,8 @@ import org.testng.annotations.Test; import java.math.BigDecimal; +import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -310,6 +312,22 @@ public void testFromResponse_referenceHeaders() { Assert.assertEquals(headerProperty.example, referencedHeader.getSchema().getExample()); } + @Test(dataProvider = "testCommonPrefixProvider") + public void testCommonPrefix(List vars, String expectedPrefix) { + DefaultCodegenConfig codegen = new P_DefaultCodegenConfig(); + Assert.assertEquals(codegen.findCommonPrefixOfVars(vars), expectedPrefix); + } + + @DataProvider(name = "testCommonPrefixProvider") + public Object[][] provideData_testCommonPrefix() { + return new Object[][]{ + {Collections.singletonList("FOO_BAR"), ""}, + {Arrays.asList("FOO_BAR", "FOO_BAZ"), "FOO_"}, + {Arrays.asList("FOO_BAR", "FOO_BAZ", "TEST"), ""}, + {Arrays.asList("STATUS-ON", "STATUS-OFF", "STATUS"), ""} + }; + } + private static class P_DefaultCodegenConfig extends DefaultCodegenConfig{ @Override public String getArgumentsLocation() {