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
*/
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
* @return snake-cased string
* @param name string to be lowerCamelCased
* @return lowerCamelCase string
*/
@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)) : "";
}

View File

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

View File

@ -137,7 +137,7 @@ public class ErlangProperCodegen extends DefaultCodegen implements CodegenConfig
} else if (typeMapping.containsKey(typeDeclaration)) {
return typeMapping.get(typeDeclaration);
} 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)) {
return typeMapping.get(schemaType);
} 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();
}
@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()) {
this.bundleAlias = alias.toLowerCase(Locale.ROOT);
} 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 {
@Test
public void arraysInRequestBody() throws Exception {
public void arraysInRequestBody() {
OpenAPI openAPI = TestUtils.createOpenAPI();
final JavaClientCodegen codegen = new JavaClientCodegen();
codegen.setOpenAPI(openAPI);
@ -103,8 +103,7 @@ public class JavaClientCodegenTest {
}
@Test
public void nullValuesInComposedSchema() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
public void nullValuesInComposedSchema() {
final JavaClientCodegen codegen = new JavaClientCodegen();
ComposedSchema schema = new ComposedSchema();
CodegenModel result = codegen.fromModel("CompSche",
@ -192,7 +191,7 @@ public class JavaClientCodegenTest {
}
@Test
public void testPackageNamesSetInvokerDerivedFromApi() throws Exception {
public void testPackageNamesSetInvokerDerivedFromApi() {
final JavaClientCodegen codegen = new JavaClientCodegen();
codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.zzzzzzz.mmmmm.model");
codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.zzzzzzz.aaaaa.api");
@ -207,7 +206,7 @@ public class JavaClientCodegenTest {
}
@Test
public void testPackageNamesSetInvokerDerivedFromModel() throws Exception {
public void testPackageNamesSetInvokerDerivedFromModel() {
final JavaClientCodegen codegen = new JavaClientCodegen();
codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.zzzzzzz.mmmmm.model");
codegen.processOpts();
@ -455,4 +454,12 @@ public class JavaClientCodegenTest {
codegenParameter.dataType = "String";
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"));
}
}