Skip to content

Commit 27cedd9

Browse files
authored
Merge pull request #910 from atlassian-forks/enum-underscore
909: Fixed bug where an enum value could end up being called "_" whic…
2 parents c40e2c4 + dbb0133 commit 27cedd9

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

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

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,15 @@ private void sanitizeConfig() {
492492
}
493493
}
494494

495+
protected String escapeUnderscore(String name) {
496+
// Java 8 discourages naming things _, but Java 9 does not allow it.
497+
if("_".equals(name)) {
498+
return "_u";
499+
} else {
500+
return name;
501+
}
502+
}
503+
495504
@Override
496505
public String escapeReservedWord(String name) {
497506
if(this.reservedWordsMappings().containsKey(name)) {
@@ -562,11 +571,9 @@ public String toVarName(String name) {
562571
return "propertyClass";
563572
}
564573

565-
if("_".equals(name)) {
566-
name = "_u";
567-
}
574+
name = escapeUnderscore(name);
568575

569-
// if it's all uppper case, do nothing
576+
// if it's all upper case, do nothing
570577
if (name.matches("^[A-Z_]*$")) {
571578
return name;
572579
}
@@ -1264,7 +1271,7 @@ public String toEnumVarName(String value, String datatype) {
12641271
if (var.matches("\\d.*")) {
12651272
return "_" + var;
12661273
} else {
1267-
return var;
1274+
return escapeUnderscore(var).toUpperCase();
12681275
}
12691276
}
12701277

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public void toEnumVarNameShouldNotShortenUnderScore() throws Exception {
2323
Assert.assertEquals("__", fakeJavaCodegen.toEnumVarName("_,.", "String"));
2424
}
2525

26+
@Test
27+
public void toEnumVarNameShouldNotCreateSingleUnderscore() throws Exception {
28+
Assert.assertEquals("_U", fakeJavaCodegen.toEnumVarName(",.", "String"));
29+
}
30+
2631
@Test
2732
public void toVarNameShouldAvoidOverloadingGetClassMethod() throws Exception {
2833
Assert.assertEquals("propertyClass", fakeJavaCodegen.toVarName("class"));
@@ -96,6 +101,7 @@ public void convertVarName() throws Exception {
96101
Assert.assertEquals(fakeJavaCodegen.toVarName("user_name"), "userName");
97102
Assert.assertEquals(fakeJavaCodegen.toVarName("_user_name"), "_userName");
98103
Assert.assertEquals(fakeJavaCodegen.toVarName(":user_name"), "userName");
104+
Assert.assertEquals(fakeJavaCodegen.toVarName("_"), "u");
99105
}
100106

101107
@Test

0 commit comments

Comments
 (0)