[Java] enum space value must not be generated as underscore (#13136)

* [Java] enum space value must not be generated as underscore

as this is invalid in Java 9

this closes #9607

* script changes

Co-authored-by: Sven Meier <sven@meiers.net>
This commit is contained in:
William Cheng
2022-08-09 11:05:27 +08:00
committed by GitHub
parent 9a04113258
commit fd56b8f26b
2 changed files with 12 additions and 0 deletions

View File

@@ -1536,6 +1536,10 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
return getSymbolName(value).toUpperCase(Locale.ROOT);
}
if (" ".equals(value)) {
return "SPACE";
}
// number
if ("Integer".equals(datatype) || "Long".equals(datatype) ||
"Float".equals(datatype) || "Double".equals(datatype) || "BigDecimal".equals(datatype)) {

View File

@@ -55,6 +55,14 @@ public class AbstractJavaCodegenTest {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_,.", "String"), "__");
}
/**
* As of Java 9, '_' is a keyword, and may not be used as an identifier.
*/
@Test
public void toEnumVarNameShouldNotResultInSingleUnderscore() throws Exception {
Assert.assertEquals(fakeJavaCodegen.toEnumVarName(" ", "String"), "SPACE");
}
@Test
public void toVarNameShouldAvoidOverloadingGetClassMethod() throws Exception {
Assert.assertEquals(fakeJavaCodegen.toVarName("class"), "propertyClass");