Skip to content

Commit

Permalink
Merge pull request #896 from barryadk/fix/single_value_enum
Browse files Browse the repository at this point in the history
Fix for stripping prefix on single enums
  • Loading branch information
HugoMario committed Apr 30, 2021
2 parents a7c62aa + d2d8782 commit 7ad4d49
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<Object> 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 "";
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1233,15 +1233,6 @@ protected void replaceDuplicatedInModelProperties(Map<String, Schema> definition
schema.set$ref(schema.get$ref().replace(modelName, newModelName));
});
}
/*
@Override
public String findCommonPrefixOfVars(List<String> 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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -310,6 +312,22 @@ public void testFromResponse_referenceHeaders() {
Assert.assertEquals(headerProperty.example, referencedHeader.getSchema().getExample());
}

@Test(dataProvider = "testCommonPrefixProvider")
public void testCommonPrefix(List<Object> 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() {
Expand Down

0 comments on commit 7ad4d49

Please sign in to comment.