Fixes Kotlin client property names that include a dollar sign for template override (#4351)

Fixes #4228
This commit is contained in:
Mathieu Lemoine
2019-11-07 01:14:13 -05:00
committed by William Cheng
parent 649eab2868
commit 9a1ff9bf05

View File

@@ -30,6 +30,8 @@ import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class KotlinClientCodegen extends AbstractKotlinCodegen {
@@ -287,15 +289,20 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
CodegenModel cm = (CodegenModel) mo.get("model");
// escape the variable base name for use as a string literal
if (cm.requiredVars != null) {
for (CodegenProperty var : cm.requiredVars) {
var.vendorExtensions.put(VENDOR_EXTENSION_BASE_NAME_LITERAL, var.baseName.replace("$", "\\$"));
}
}
if (cm.optionalVars != null) {
for (CodegenProperty var : cm.optionalVars) {
var.vendorExtensions.put(VENDOR_EXTENSION_BASE_NAME_LITERAL, var.baseName.replace("$", "\\$"));
}
List<CodegenProperty> vars = Stream.of(
cm.vars,
cm.allVars,
cm.optionalVars,
cm.requiredVars,
cm.readOnlyVars,
cm.readWriteVars,
cm.parentVars
)
.flatMap(List::stream)
.collect(Collectors.toList());
for (CodegenProperty var : vars) {
var.vendorExtensions.put(VENDOR_EXTENSION_BASE_NAME_LITERAL, var.baseName.replace("$", "\\$"));
}
}