From 455e53b2ae9f749a48f3af12403f58d39a7b334e Mon Sep 17 00:00:00 2001 From: mmosemmle Date: Sun, 9 Jul 2017 09:34:57 +0100 Subject: [PATCH] [CPP] Fix cpp escape issue part of #5949 (#5952) * Fix cpp escape issue. * whitespace. --- .../codegen/languages/AbstractCppCodegen.java | 42 ++++++++++++++ .../languages/CppRestClientCodegen.java | 58 +++++++++++-------- .../languages/PistacheServerCodegen.java | 53 ++++++++++------- .../codegen/languages/RestbedCodegen.java | 23 +------- .../resources/cpprest/model-header.mustache | 2 +- .../resources/cpprest/model-source.mustache | 2 +- .../pistache-server/model-header.mustache | 2 +- .../pistache-server/model-source.mustache | 2 +- 8 files changed, 112 insertions(+), 72 deletions(-) create mode 100644 modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java new file mode 100644 index 000000000000..672b80eff38a --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractCppCodegen.java @@ -0,0 +1,42 @@ +package io.swagger.codegen.languages; + +import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenProperty; +import io.swagger.codegen.DefaultCodegen; +import io.swagger.models.properties.Property; + +abstract public class AbstractCppCodegen extends DefaultCodegen implements CodegenConfig { + + @Override + public String toVarName(String name) { + if (typeMapping.keySet().contains(name) || typeMapping.values().contains(name) + || importMapping.values().contains(name) || defaultIncludes.contains(name) + || languageSpecificPrimitives.contains(name)) { + return sanitizeName(name); + } + + if (name.length() > 1) { + return sanitizeName(Character.toUpperCase(name.charAt(0)) + name.substring(1)); + } + + return sanitizeName(name); + } + + @Override + public String toParamName(String name) { + return sanitizeName(super.toParamName(name)); + } + + @Override + public CodegenProperty fromProperty(String name, Property p) { + CodegenProperty property = super.fromProperty(name, p); + String nameInCamelCase = property.nameInCamelCase; + if (nameInCamelCase.length() > 1) { + nameInCamelCase = sanitizeName(Character.toLowerCase(nameInCamelCase.charAt(0)) + nameInCamelCase.substring(1)); + } else { + nameInCamelCase = sanitizeName(nameInCamelCase); + } + property.nameInCamelCase = nameInCamelCase; + return property; + } +} diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CppRestClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CppRestClientCodegen.java index e1a79f4d5766..872e1f571d1a 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CppRestClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/CppRestClientCodegen.java @@ -1,22 +1,47 @@ package io.swagger.codegen.languages; +import static com.google.common.base.Strings.isNullOrEmpty; + +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; -import io.swagger.codegen.*; -import io.swagger.codegen.examples.ExampleGenerator; + +import io.swagger.codegen.CliOption; +import io.swagger.codegen.CodegenConstants; +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.CodegenOperation; +import io.swagger.codegen.CodegenParameter; +import io.swagger.codegen.CodegenProperty; +import io.swagger.codegen.CodegenType; +import io.swagger.codegen.SupportingFile; import io.swagger.codegen.utils.ModelUtils; import io.swagger.models.Model; import io.swagger.models.Operation; import io.swagger.models.Response; import io.swagger.models.Swagger; -import io.swagger.models.properties.*; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.BaseIntegerProperty; +import io.swagger.models.properties.BooleanProperty; +import io.swagger.models.properties.DateProperty; +import io.swagger.models.properties.DateTimeProperty; +import io.swagger.models.properties.DecimalProperty; +import io.swagger.models.properties.DoubleProperty; +import io.swagger.models.properties.FileProperty; +import io.swagger.models.properties.FloatProperty; +import io.swagger.models.properties.IntegerProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.Property; +import io.swagger.models.properties.RefProperty; +import io.swagger.models.properties.StringProperty; -import java.util.*; -import java.io.File; - -import static com.google.common.base.Strings.isNullOrEmpty; - -public class CppRestClientCodegen extends DefaultCodegen implements CodegenConfig { +public class CppRestClientCodegen extends AbstractCppCodegen { public static final String DECLSPEC = "declspec"; public static final String DEFAULT_INCLUDE = "defaultInclude"; @@ -381,21 +406,6 @@ public class CppRestClientCodegen extends DefaultCodegen implements CodegenConfi } } - @Override - public String toVarName(String name) { - if (typeMapping.keySet().contains(name) || typeMapping.values().contains(name) - || importMapping.values().contains(name) || defaultIncludes.contains(name) - || languageSpecificPrimitives.contains(name)) { - return name; - } - - if (name.length() > 1) { - return Character.toUpperCase(name.charAt(0)) + name.substring(1); - } - - return name; - } - @Override public String toApiName(String type) { return Character.toUpperCase(type.charAt(0)) + type.substring(1) + "Api"; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PistacheServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PistacheServerCodegen.java index 0eb83a5e2ebe..3d85e81b76f0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PistacheServerCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/PistacheServerCodegen.java @@ -1,18 +1,42 @@ package io.swagger.codegen.languages; -import io.swagger.codegen.*; +import java.io.File; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.CodegenOperation; +import io.swagger.codegen.CodegenParameter; +import io.swagger.codegen.CodegenProperty; +import io.swagger.codegen.CodegenType; +import io.swagger.codegen.DefaultCodegen; +import io.swagger.codegen.SupportingFile; import io.swagger.models.Model; import io.swagger.models.Operation; import io.swagger.models.Response; import io.swagger.models.Swagger; -import io.swagger.models.properties.*; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.BaseIntegerProperty; +import io.swagger.models.properties.BooleanProperty; +import io.swagger.models.properties.DateProperty; +import io.swagger.models.properties.DateTimeProperty; +import io.swagger.models.properties.DecimalProperty; +import io.swagger.models.properties.DoubleProperty; +import io.swagger.models.properties.FileProperty; +import io.swagger.models.properties.FloatProperty; +import io.swagger.models.properties.IntegerProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.Property; +import io.swagger.models.properties.RefProperty; +import io.swagger.models.properties.StringProperty; -import javax.validation.constraints.Null; -import java.io.File; -import java.util.*; - -public class PistacheServerCodegen extends DefaultCodegen implements CodegenConfig { +public class PistacheServerCodegen extends AbstractCppCodegen { protected String implFolder = "impl"; @Override @@ -376,21 +400,6 @@ public class PistacheServerCodegen extends DefaultCodegen implements CodegenConf } } - @Override - public String toVarName(String name) { - if (typeMapping.keySet().contains(name) || typeMapping.values().contains(name) - || importMapping.values().contains(name) || defaultIncludes.contains(name) - || languageSpecificPrimitives.contains(name)) { - return name; - } - - if (name.length() > 1) { - return Character.toUpperCase(name.charAt(0)) + name.substring(1); - } - - return name; - } - @Override public String toApiName(String type) { return Character.toUpperCase(type.charAt(0)) + type.substring(1) + "Api"; diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RestbedCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RestbedCodegen.java index dcd4c75988af..435f773e9b6f 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RestbedCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/RestbedCodegen.java @@ -10,19 +10,13 @@ import java.util.Map; import java.util.Set; import io.swagger.codegen.CliOption; -import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.CodegenModel; import io.swagger.codegen.CodegenOperation; import io.swagger.codegen.CodegenParameter; -import io.swagger.codegen.CodegenProperty; import io.swagger.codegen.CodegenType; -import io.swagger.codegen.DefaultCodegen; import io.swagger.codegen.SupportingFile; import io.swagger.models.Model; -import io.swagger.models.Operation; -import io.swagger.models.Response; -import io.swagger.models.Swagger; import io.swagger.models.properties.ArrayProperty; import io.swagger.models.properties.BaseIntegerProperty; import io.swagger.models.properties.BooleanProperty; @@ -39,7 +33,7 @@ import io.swagger.models.properties.Property; import io.swagger.models.properties.RefProperty; import io.swagger.models.properties.StringProperty; -public class RestbedCodegen extends DefaultCodegen implements CodegenConfig { +public class RestbedCodegen extends AbstractCppCodegen { public static final String DECLSPEC = "declspec"; public static final String DEFAULT_INCLUDE = "defaultInclude"; @@ -387,21 +381,6 @@ public class RestbedCodegen extends DefaultCodegen implements CodegenConfig { } } - @Override - public String toVarName(String name) { - if (typeMapping.keySet().contains(name) || typeMapping.values().contains(name) - || importMapping.values().contains(name) || defaultIncludes.contains(name) - || languageSpecificPrimitives.contains(name)) { - return name; - } - - if (name.length() > 1) { - return Character.toUpperCase(name.charAt(0)) + name.substring(1); - } - - return name; - } - @Override public String toApiName(String type) { return Character.toUpperCase(type.charAt(0)) + type.substring(1) + "Api"; diff --git a/modules/swagger-codegen/src/main/resources/cpprest/model-header.mustache b/modules/swagger-codegen/src/main/resources/cpprest/model-header.mustache index aefcec63437c..d15f49a2ad64 100644 --- a/modules/swagger-codegen/src/main/resources/cpprest/model-header.mustache +++ b/modules/swagger-codegen/src/main/resources/cpprest/model-header.mustache @@ -51,7 +51,7 @@ public: /// {{^isNotContainer}}{{{datatype}}}& {{getter}}(); {{/isNotContainer}}{{#isNotContainer}}{{{datatype}}} {{getter}}() const; - {{/isNotContainer}}{{^required}}bool {{baseName}}IsSet() const; + {{/isNotContainer}}{{^required}}bool {{nameInCamelCase}}IsSet() const; void unset{{name}}(); {{/required}} void {{setter}}({{{datatype}}} value); diff --git a/modules/swagger-codegen/src/main/resources/cpprest/model-source.mustache b/modules/swagger-codegen/src/main/resources/cpprest/model-source.mustache index e90e2a5371cd..c2bbe1535704 100644 --- a/modules/swagger-codegen/src/main/resources/cpprest/model-source.mustache +++ b/modules/swagger-codegen/src/main/resources/cpprest/model-source.mustache @@ -577,7 +577,7 @@ void {{classname}}::{{setter}}({{{datatype}}} value) } {{/isNotContainer}} {{^required}} -bool {{classname}}::{{baseName}}IsSet() const +bool {{classname}}::{{nameInCamelCase}}IsSet() const { return m_{{name}}IsSet; } diff --git a/modules/swagger-codegen/src/main/resources/pistache-server/model-header.mustache b/modules/swagger-codegen/src/main/resources/pistache-server/model-header.mustache index b63bbd78c0d5..6b4ef0077d73 100644 --- a/modules/swagger-codegen/src/main/resources/pistache-server/model-header.mustache +++ b/modules/swagger-codegen/src/main/resources/pistache-server/model-header.mustache @@ -46,7 +46,7 @@ public: {{^isNotContainer}}{{{datatype}}}& {{getter}}(); {{/isNotContainer}}{{#isNotContainer}}{{{datatype}}} {{getter}}() const; void {{setter}}({{{datatype}}} value); - {{/isNotContainer}}{{^required}}bool {{baseName}}IsSet() const; + {{/isNotContainer}}{{^required}}bool {{nameInCamelCase}}IsSet() const; void unset{{name}}(); {{/required}} {{/vars}} diff --git a/modules/swagger-codegen/src/main/resources/pistache-server/model-source.mustache b/modules/swagger-codegen/src/main/resources/pistache-server/model-source.mustache index 69ad6dae1d05..d21d0c089d4f 100644 --- a/modules/swagger-codegen/src/main/resources/pistache-server/model-source.mustache +++ b/modules/swagger-codegen/src/main/resources/pistache-server/model-source.mustache @@ -125,7 +125,7 @@ void {{classname}}::{{setter}}({{{datatype}}} value) {{^required}}m_{{name}}IsSet = true;{{/required}} } {{/isNotContainer}} -{{^required}}bool {{classname}}::{{baseName}}IsSet() const +{{^required}}bool {{classname}}::{{nameInCamelCase}}IsSet() const { return m_{{name}}IsSet; }