[KOTLIN] fix var name not correctly sanitized (#2537)

This commit is contained in:
Vincent Devos 2019-03-29 10:57:37 +01:00 committed by William Cheng
parent 09ba78b26a
commit cd6779584f
3 changed files with 17 additions and 2 deletions

View File

@ -705,6 +705,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
@Override
public String toVarName(String name) {
// sanitize name
name = sanitizeKotlinSpecificNames(name);
name = sanitizeName(name, "\\W-[\\$]");
if (name.toLowerCase(Locale.ROOT).matches("^_*class$")) {

View File

@ -22,7 +22,7 @@ class {{classname}}(basePath: kotlin.String = "{{{basePath}}}") : ApiClient(base
@Suppress("UNCHECKED_CAST"){{/returnType}}
fun {{operationId}}({{#allParams}}{{paramName}}: {{{dataType}}}{{^required}}?{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) : {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Unit{{/returnType}} {
val localVariableBody: kotlin.Any? = {{#hasBodyParam}}{{#bodyParams}}{{paramName}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}null{{/hasFormParams}}{{#hasFormParams}}mapOf({{#formParams}}"{{{baseName}}}" to "${{paramName}}"{{#hasMore}}, {{/hasMore}}{{/formParams}}){{/hasFormParams}}{{/hasBodyParam}}
val localVariableQuery: MultiValueMap = {{^hasQueryParams}}mapOf(){{/hasQueryParams}}{{#hasQueryParams}}mapOf({{#queryParams}}"{{baseName}}" to {{#isContainer}}toMultiValue({{paramName}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf("${{paramName}}"){{/isContainer}}{{#hasMore}}, {{/hasMore}}{{/queryParams}}){{/hasQueryParams}}
val localVariableQuery: MultiValueMap = {{^hasQueryParams}}mapOf(){{/hasQueryParams}}{{#hasQueryParams}}mapOf({{#queryParams}}"{{paramName}}" to {{#isContainer}}toMultiValue({{paramName}}.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf("${{paramName}}"){{/isContainer}}{{#hasMore}}, {{/hasMore}}{{/queryParams}}){{/hasQueryParams}}
val localVariableHeaders: kotlin.collections.Map<kotlin.String,kotlin.String> = mapOf({{#hasFormParams}}"Content-Type" to "multipart/form-data"{{/hasFormParams}}{{^hasHeaderParams}}){{/hasHeaderParams}}{{#hasHeaderParams}}{{#hasFormParams}}, {{/hasFormParams}}{{#headerParams}}"{{baseName}}" to {{#isContainer}}{{paramName}}.joinToString(separator = collectionDelimiter("{{collectionFormat}}")){{/isContainer}}{{^isContainer}}{{paramName}}.toString(){{/isContainer}}{{#hasMore}}, {{/hasMore}}{{/headerParams}}){{/hasHeaderParams}}
val localVariableConfig = RequestConfig(
RequestMethod.{{httpMethod}},

View File

@ -96,7 +96,7 @@ public class AbstractKotlinCodegenTest {
}
@Test
public void escapeSpecialCharactersCamelize() {
public void convertModelName() {
assertEquals(codegen.toModelName("$"), "Dollar");
assertEquals(codegen.toModelName("$$"), "DollarDollar");
assertEquals(codegen.toModelName("Pony?"), "PonyQuestionMark");
@ -105,4 +105,18 @@ public class AbstractKotlinCodegenTest {
assertEquals(codegen.toModelName("$another-fake?"), "DollarAnotherMinusFakeQuestionMark");
assertEquals(codegen.toModelName("Pony>=>="), "PonyGreaterThanEqualGreaterThanEqual");
}
@Test
public void convertVarName() throws Exception {
assertEquals(codegen.toVarName("name"), "name");
assertEquals(codegen.toVarName("$name"), "dollarName");
assertEquals(codegen.toVarName("nam$$e"), "namDollarDollarE");
assertEquals(codegen.toVarName("user-name"), "userMinusName");
assertEquals(codegen.toVarName("user_name"), "userName");
assertEquals(codegen.toVarName("user|name"), "userPipeName");
assertEquals(codegen.toVarName("Pony?"), "ponyQuestionMark");
assertEquals(codegen.toVarName("nam#e"), "namHashE");
assertEquals(codegen.toVarName("Pony>=>="), "ponyGreaterThanEqualGreaterThanEqual");
}
}