From f29ba97e8bb13598708db7ea2ee7a5288ad1bd0c Mon Sep 17 00:00:00 2001 From: stkrwork Date: Thu, 13 Sep 2018 01:13:02 +0200 Subject: [PATCH] [C++][Restbed] Fix default values for Restbed Server generator (#761) * Start working on fixing default value in Restbed Server Api Template * fix default value in DefaultCodegen --- .../openapitools/codegen/DefaultCodegen.java | 5 +- .../languages/CppRestbedServerCodegen.java | 65 +++++++++++++++---- .../cpp-restbed-server/api-source.mustache | 14 ++-- .../petstore/cpp-restbed/api/PetApi.cpp | 6 +- .../petstore/cpp-restbed/api/StoreApi.cpp | 2 +- .../petstore/cpp-restbed/api/UserApi.cpp | 4 +- 6 files changed, 69 insertions(+), 27 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index d7115b9c8db..2ec323a37c0 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -2742,9 +2742,8 @@ public class DefaultCodegen implements CodegenConfig { } // set default value - if (parameterSchema.getDefault() != null) { - codegenParameter.defaultValue = toDefaultValue(parameterSchema); - } + codegenParameter.defaultValue = toDefaultValue(parameterSchema); + // TDOO revise collectionFormat String collectionFormat = null; if (ModelUtils.isArraySchema(parameterSchema)) { // for array parameter diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java index 028eee1467f..31c9a6a3c1a 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppRestbedServerCodegen.java @@ -25,15 +25,19 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.logging.Logger; import org.apache.commons.lang3.StringUtils; import org.openapitools.codegen.*; import org.openapitools.codegen.utils.ModelUtils; import io.swagger.v3.oas.models.media.*; +import org.slf4j.LoggerFactory; public class CppRestbedServerCodegen extends AbstractCppCodegen { + private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(CppRestbedServerCodegen.class); + public static final String DECLSPEC = "declspec"; public static final String DEFAULT_INCLUDE = "defaultInclude"; @@ -287,25 +291,63 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { @Override public String toDefaultValue(Schema p) { if (ModelUtils.isStringSchema(p)) { - return "\"\""; + if (p.getDefault() != null) { + return "\"" + p.getDefault().toString() + "\""; + } else { + return "\"\""; + } } else if (ModelUtils.isBooleanSchema(p)) { - return "false"; + if (p.getDefault() != null) { + return p.getDefault().toString(); + } else { + return "false"; + } } else if (ModelUtils.isDateSchema(p)) { - return "\"\""; + if (p.getDefault() != null) { + return "\"" + p.getDefault().toString() + "\""; + } else { + return "\"\""; + } } else if (ModelUtils.isDateTimeSchema(p)) { - return "\"\""; + if (p.getDefault() != null) { + return "\"" + p.getDefault().toString() + "\""; + } else { + return "\"\""; + } } else if (ModelUtils.isNumberSchema(p)) { - if (ModelUtils.isFloatSchema(p)) { - return "0.0f"; + if (ModelUtils.isFloatSchema(p)) { // float + if (p.getDefault() != null) { + return p.getDefault().toString() + "f"; + } else { + return "0.0f"; + } + } else { // double + if (p.getDefault() != null) { + return p.getDefault().toString(); + } else { + return "0.0"; + } } - return "0.0"; } else if (ModelUtils.isIntegerSchema(p)) { - if (ModelUtils.isLongSchema(p)) { - return "0L"; + if (ModelUtils.isLongSchema(p)) { // long + if (p.getDefault() != null) { + return p.getDefault().toString() + "L"; + } else { + return "0L"; + } + } else { // integer + if (p.getDefault() != null) { + return p.getDefault().toString(); + } else { + return "0"; + } } - return "0"; } else if (ModelUtils.isByteArraySchema(p)) { - return "\"\""; + if (p.getDefault() != null) { + return "\"" + p.getDefault().toString() + "\""; + } else { + return "\"\""; + } } else if (ModelUtils.isMapSchema(p)) { String inner = getSchemaType(ModelUtils.getAdditionalProperties(p)); return "std::map()"; @@ -319,6 +361,7 @@ public class CppRestbedServerCodegen extends AbstractCppCodegen { } else if (!StringUtils.isEmpty(p.get$ref())) { return "new " + toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; } + return "nullptr"; } diff --git a/modules/openapi-generator/src/main/resources/cpp-restbed-server/api-source.mustache b/modules/openapi-generator/src/main/resources/cpp-restbed-server/api-source.mustache index 35196da731d..ccd81ee02ef 100644 --- a/modules/openapi-generator/src/main/resources/cpp-restbed-server/api-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-restbed-server/api-source.mustache @@ -75,7 +75,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet // Getting the path params {{#pathParams}} {{#isPrimitiveType}} - const {{{dataType}}} {{{paramName}}} = request->get_path_parameter("{{paramName}}", {{#isString}}""{{/isString}}{{#isInteger}}0{{/isInteger}}{{#isLong}}0L{{/isLong}}{{#isFloat}}0.0f{{/isFloat}}{{#isDouble}}0.0{{/isDouble}}); + const {{{dataType}}} {{{paramName}}} = request->get_path_parameter("{{paramName}}", {{{defaultValue}}}); {{/isPrimitiveType}} {{/pathParams}} {{/hasPathParams}} @@ -84,7 +84,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet // Getting the query params {{#queryParams}} {{#isPrimitiveType}} - const {{{dataType}}} {{{paramName}}} = request->get_query_parameter("{{paramName}}", {{#isString}}""{{/isString}}{{#isInteger}}0{{/isInteger}}{{#isLong}}0L{{/isLong}}{{#isFloat}}0.0f{{/isFloat}}{{#isDouble}}0.0{{/isDouble}}); + const {{{dataType}}} {{{paramName}}} = request->get_query_parameter("{{paramName}}", {{{defaultValue}}}); {{/isPrimitiveType}} {{/queryParams}} {{/hasQueryParams}} @@ -93,7 +93,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet // Getting the headers {{#headerParams}} {{#isPrimitiveType}} - const {{{dataType}}} {{{paramName}}} = request->get_header("{{paramName}}", {{#isString}}""{{/isString}}{{#isInteger}}0{{/isInteger}}{{#isLong}}0L{{/isLong}}{{#isFloat}}0.0f{{/isFloat}}{{#isDouble}}0.0{{/isDouble}}); + const {{{dataType}}} {{{paramName}}} = request->get_header("{{paramName}}", {{{defaultValue}}}); {{/isPrimitiveType}} {{/headerParams}} {{/hasHeaderParams}} @@ -140,7 +140,7 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet // Getting the path params {{#pathParams}} {{#isPrimitiveType}} - const {{dataType}} {{paramName}} = request->get_path_parameter("{{paramName}}", {{#isString}}""{{/isString}}{{#isInteger}}0{{/isInteger}}{{#isLong}}0L{{/isLong}}{{#isFloat}}0.0f{{/isFloat}}{{#isDouble}}0.0{{/isDouble}}); + const {{{dataType}}} {{{paramName}}} = request->get_path_parameter("{{paramName}}", {{{defaultValue}}}); {{/isPrimitiveType}} {{/pathParams}} {{/hasPathParams}} @@ -149,16 +149,16 @@ void {{classname}}{{vendorExtensions.x-codegen-resourceName}}Resource::{{httpMet // Getting the query params {{#queryParams}} {{#isPrimitiveType}} - const {{dataType}} {{paramName}} = request->get_query_parameter("{{paramName}}", {{#isString}}""{{/isString}}{{#isInteger}}0{{/isInteger}}{{#isLong}}0L{{/isLong}}{{#isFloat}}0.0f{{/isFloat}}{{#isDouble}}0.0{{/isDouble}}); + const {{{dataType}}} {{{paramName}}} = request->get_query_parameter("{{paramName}}", {{{defaultValue}}}); {{/isPrimitiveType}} {{/queryParams}} {{/hasQueryParams}} - + {{#hasHeaderParams}} // Getting the headers {{#headerParams}} {{#isPrimitiveType}} - const {{dataType}} {{paramName}} = request->get_header("{{paramName}}", {{#isString}}""{{/isString}}{{#isInteger}}0{{/isInteger}}{{#isLong}}0L{{/isLong}}{{#isFloat}}0.0f{{/isFloat}}{{#isDouble}}0.0{{/isDouble}}); + const {{{dataType}}} {{{paramName}}} = request->get_header("{{paramName}}", {{{defaultValue}}}); {{/isPrimitiveType}} {{/headerParams}} {{/hasHeaderParams}} diff --git a/samples/server/petstore/cpp-restbed/api/PetApi.cpp b/samples/server/petstore/cpp-restbed/api/PetApi.cpp index 2d25c503385..7057a0f3e37 100644 --- a/samples/server/petstore/cpp-restbed/api/PetApi.cpp +++ b/samples/server/petstore/cpp-restbed/api/PetApi.cpp @@ -118,7 +118,7 @@ void PetApiPetResource::PUT_method_handler(const std::shared_ptrget_path_parameter("petId", 0L); - + // Change the value of this variable to the appropriate response before sending the response int status_code = 200; @@ -225,7 +225,7 @@ void PetApiPetPetIdResource::POST_method_handler(const std::shared_ptrget_path_parameter("petId", 0L); - + // Change the value of this variable to the appropriate response before sending the response int status_code = 200; diff --git a/samples/server/petstore/cpp-restbed/api/StoreApi.cpp b/samples/server/petstore/cpp-restbed/api/StoreApi.cpp index b3e0a63e85c..7a7b189c311 100644 --- a/samples/server/petstore/cpp-restbed/api/StoreApi.cpp +++ b/samples/server/petstore/cpp-restbed/api/StoreApi.cpp @@ -100,7 +100,7 @@ void StoreApiStoreOrderOrderIdResource::GET_method_handler(const std::shared_ptr // Getting the path params const int64_t orderId = request->get_path_parameter("orderId", 0L); - + // Change the value of this variable to the appropriate response before sending the response int status_code = 200; diff --git a/samples/server/petstore/cpp-restbed/api/UserApi.cpp b/samples/server/petstore/cpp-restbed/api/UserApi.cpp index 74dadb906bd..08c9acbc391 100644 --- a/samples/server/petstore/cpp-restbed/api/UserApi.cpp +++ b/samples/server/petstore/cpp-restbed/api/UserApi.cpp @@ -253,7 +253,7 @@ void UserApiUserUsernameResource::GET_method_handler(const std::shared_ptrget_path_parameter("username", ""); - + // Change the value of this variable to the appropriate response before sending the response int status_code = 200; @@ -292,7 +292,7 @@ void UserApiUserUsernameResource::PUT_method_handler(const std::shared_ptrget_path_parameter("username", ""); - + // Change the value of this variable to the appropriate response before sending the response int status_code = 200;