Skip to content

Commit 7ad4d49

Browse files
authored
Merge pull request #896 from barryadk/fix/single_value_enum
Fix for stripping prefix on single enums
2 parents a7c62aa + d2d8782 commit 7ad4d49

File tree

3 files changed

+31
-18
lines changed

3 files changed

+31
-18
lines changed

src/main/java/io/swagger/codegen/v3/generators/DefaultCodegenConfig.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -396,21 +396,25 @@ private String findEnumName(int truncateIdx, Object value) {
396396
}
397397

398398
/**
399-
* Returns the common prefix of variables for enum naming
399+
* Returns the common prefix of variables for enum naming if
400+
* two or more variables are present.
400401
*
401402
* @param vars List of variable names
402403
* @return the common prefix for naming
403404
*/
404405
public String findCommonPrefixOfVars(List<Object> vars) {
405-
try {
406-
String[] listStr = vars.toArray(new String[vars.size()]);
407-
String prefix = StringUtils.getCommonPrefix(listStr);
408-
// exclude trailing characters that should be part of a valid variable
409-
// e.g. ["status-on", "status-off"] => "status-" (not "status-o")
410-
return prefix.replaceAll("[a-zA-Z0-9]+\\z", "");
411-
} catch (ArrayStoreException e) {
412-
return "";
406+
if (vars.size() > 1) {
407+
try {
408+
String[] listStr = vars.toArray(new String[vars.size()]);
409+
String prefix = StringUtils.getCommonPrefix(listStr);
410+
// exclude trailing characters that should be part of a valid variable
411+
// e.g. ["status-on", "status-off"] => "status-" (not "status-o")
412+
return prefix.replaceAll("[a-zA-Z0-9]+\\z", "");
413+
} catch (ArrayStoreException e) {
414+
// do nothing, just return default value
415+
}
413416
}
417+
return "";
414418
}
415419

416420
/**

src/main/java/io/swagger/codegen/v3/generators/java/AbstractJavaCodegen.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,15 +1233,6 @@ protected void replaceDuplicatedInModelProperties(Map<String, Schema> definition
12331233
schema.set$ref(schema.get$ref().replace(modelName, newModelName));
12341234
});
12351235
}
1236-
/*
1237-
@Override
1238-
public String findCommonPrefixOfVars(List<String> vars) {
1239-
String prefix = StringUtils.getCommonPrefix(vars.toArray(new String[vars.size()]));
1240-
// exclude trailing characters that should be part of a valid variable
1241-
// e.g. ["status-on", "status-off"] => "status-" (not "status-o")
1242-
return prefix.replaceAll("[a-zA-Z0-9]+\\z", "");
1243-
}
1244-
*/
12451236

12461237
@Override
12471238
public String toEnumName(CodegenProperty property) {

src/test/java/io/swagger/codegen/v3/generators/DefaultCodegenConfigTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
import org.testng.annotations.Test;
2929

3030
import java.math.BigDecimal;
31+
import java.util.Arrays;
32+
import java.util.Collections;
3133
import java.util.HashMap;
3234
import java.util.HashSet;
3335
import java.util.List;
@@ -310,6 +312,22 @@ public void testFromResponse_referenceHeaders() {
310312
Assert.assertEquals(headerProperty.example, referencedHeader.getSchema().getExample());
311313
}
312314

315+
@Test(dataProvider = "testCommonPrefixProvider")
316+
public void testCommonPrefix(List<Object> vars, String expectedPrefix) {
317+
DefaultCodegenConfig codegen = new P_DefaultCodegenConfig();
318+
Assert.assertEquals(codegen.findCommonPrefixOfVars(vars), expectedPrefix);
319+
}
320+
321+
@DataProvider(name = "testCommonPrefixProvider")
322+
public Object[][] provideData_testCommonPrefix() {
323+
return new Object[][]{
324+
{Collections.singletonList("FOO_BAR"), ""},
325+
{Arrays.asList("FOO_BAR", "FOO_BAZ"), "FOO_"},
326+
{Arrays.asList("FOO_BAR", "FOO_BAZ", "TEST"), ""},
327+
{Arrays.asList("STATUS-ON", "STATUS-OFF", "STATUS"), ""}
328+
};
329+
}
330+
313331
private static class P_DefaultCodegenConfig extends DefaultCodegenConfig{
314332
@Override
315333
public String getArgumentsLocation() {

0 commit comments

Comments
 (0)