Check classVarName against reserved keywords (#3079)

Must fix #1831 and #13
This commit is contained in:
Thibault Duperron 2019-07-02 10:40:36 +02:00 committed by William Cheng
parent 40a293dcda
commit dd0c2a84ee
6 changed files with 29 additions and 14 deletions

View File

@ -810,7 +810,7 @@ public class DefaultCodegen implements CodegenConfig {
* @return the snake-cased variable name * @return the snake-cased variable name
*/ */
public String toApiVarName(String name) { public String toApiVarName(String name) {
return snakeCase(name); return lowerCamelCase(name);
} }
/** /**
@ -1533,13 +1533,13 @@ public class DefaultCodegen implements CodegenConfig {
} }
/** /**
* Return the snake-case of the string * Return the lowerCamelCase of the string
* *
* @param name string to be snake-cased * @param name string to be lowerCamelCased
* @return snake-cased string * @return lowerCamelCase string
*/ */
@SuppressWarnings("static-method") @SuppressWarnings("static-method")
public String snakeCase(String name) { public String lowerCamelCase(String name) {
return (name.length() > 0) ? (Character.toLowerCase(name.charAt(0)) + name.substring(1)) : ""; return (name.length() > 0) ? (Character.toLowerCase(name.charAt(0)) + name.substring(1)) : "";
} }

View File

@ -128,7 +128,7 @@ public class ErlangClientCodegen extends DefaultCodegen implements CodegenConfig
if (languageSpecificPrimitives.contains(type)) if (languageSpecificPrimitives.contains(type))
return (type); return (type);
} else } else
type = getTypeDeclaration(toModelName(snakeCase(schemaType))); type = getTypeDeclaration(toModelName(lowerCamelCase(schemaType)));
return type; return type;
} }

View File

@ -137,7 +137,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
} else if (typeMapping.containsKey(typeDeclaration)) { } else if (typeMapping.containsKey(typeDeclaration)) {
return typeMapping.get(typeDeclaration); return typeMapping.get(typeDeclaration);
} else { } else {
return getTypeDeclaration(toModelName(snakeCase(typeDeclaration))); return getTypeDeclaration(toModelName(lowerCamelCase(typeDeclaration)));
} }
} }
@ -179,7 +179,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
} else if (typeMapping.containsKey(schemaType)) { } else if (typeMapping.containsKey(schemaType)) {
return typeMapping.get(schemaType); return typeMapping.get(schemaType);
} else { } else {
return getTypeDeclaration(toModelName(snakeCase(schemaType))); return getTypeDeclaration(toModelName(lowerCamelCase(schemaType)));
} }
} }

View File

@ -695,4 +695,12 @@ public class JavaClientCodegen extends AbstractJavaCodegen
return mime != null && JSON_VENDOR_MIME_PATTERN.matcher(mime).matches(); return mime != null && JSON_VENDOR_MIME_PATTERN.matcher(mime).matches();
} }
@Override
public String toApiVarName(String name) {
String apiVarName = super.toApiVarName(name);
if (reservedWords.contains(apiVarName)) {
apiVarName = escapeReservedWord(apiVarName);
}
return apiVarName;
}
} }

View File

@ -200,7 +200,7 @@ public class PhpSymfonyServerCodegen extends AbstractPhpCodegen implements Codeg
if (alias != null && !alias.isEmpty()) { if (alias != null && !alias.isEmpty()) {
this.bundleAlias = alias.toLowerCase(Locale.ROOT); this.bundleAlias = alias.toLowerCase(Locale.ROOT);
} else { } else {
this.bundleAlias = snakeCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase(Locale.ROOT); this.bundleAlias = lowerCamelCase(bundleName).replaceAll("([A-Z]+)", "\\_$1").toLowerCase(Locale.ROOT);
} }
} }

View File

@ -68,7 +68,7 @@ import java.util.stream.Collectors;
public class JavaClientCodegenTest { public class JavaClientCodegenTest {
@Test @Test
public void arraysInRequestBody() throws Exception { public void arraysInRequestBody() {
OpenAPI openAPI = TestUtils.createOpenAPI(); OpenAPI openAPI = TestUtils.createOpenAPI();
final JavaClientCodegen codegen = new JavaClientCodegen(); final JavaClientCodegen codegen = new JavaClientCodegen();
codegen.setOpenAPI(openAPI); codegen.setOpenAPI(openAPI);
@ -103,8 +103,7 @@ public class JavaClientCodegenTest {
} }
@Test @Test
public void nullValuesInComposedSchema() throws Exception { public void nullValuesInComposedSchema() {
OpenAPI openAPI = TestUtils.createOpenAPI();
final JavaClientCodegen codegen = new JavaClientCodegen(); final JavaClientCodegen codegen = new JavaClientCodegen();
ComposedSchema schema = new ComposedSchema(); ComposedSchema schema = new ComposedSchema();
CodegenModel result = codegen.fromModel("CompSche", CodegenModel result = codegen.fromModel("CompSche",
@ -192,7 +191,7 @@ public class JavaClientCodegenTest {
} }
@Test @Test
public void testPackageNamesSetInvokerDerivedFromApi() throws Exception { public void testPackageNamesSetInvokerDerivedFromApi() {
final JavaClientCodegen codegen = new JavaClientCodegen(); final JavaClientCodegen codegen = new JavaClientCodegen();
codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.zzzzzzz.mmmmm.model"); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.zzzzzzz.mmmmm.model");
codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.zzzzzzz.aaaaa.api"); codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.zzzzzzz.aaaaa.api");
@ -207,7 +206,7 @@ public class JavaClientCodegenTest {
} }
@Test @Test
public void testPackageNamesSetInvokerDerivedFromModel() throws Exception { public void testPackageNamesSetInvokerDerivedFromModel() {
final JavaClientCodegen codegen = new JavaClientCodegen(); final JavaClientCodegen codegen = new JavaClientCodegen();
codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.zzzzzzz.mmmmm.model"); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.zzzzzzz.mmmmm.model");
codegen.processOpts(); codegen.processOpts();
@ -455,4 +454,12 @@ public class JavaClientCodegenTest {
codegenParameter.dataType = "String"; codegenParameter.dataType = "String";
return codegenParameter; return codegenParameter;
} }
@Test
public void escapeName() {
final JavaClientCodegen codegen = new JavaClientCodegen();
assertEquals("_default", codegen.toApiVarName("Default"));
assertEquals("_int", codegen.toApiVarName("int"));
assertEquals("pony", codegen.toApiVarName("pony"));
}
} }