diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java index 18cfb324f9a2a999173c493793a60f179160dab7..0aa6cb2568546dfe2743fc95d2011cebaefb3dd2 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java @@ -381,42 +381,79 @@ public class CppPistacheServerCodegen extends AbstractCppCodegen { @Override public String toDefaultValue(Schema p) { - if (ModelUtils.isBooleanSchema(p)) { - return "false"; + if (ModelUtils.isStringSchema(p)) { + if (p.getDefault() != null) { + return "\"" + p.getDefault().toString() + "\""; + } else { + return "\"\""; + } + } else if (ModelUtils.isBooleanSchema(p)) { + 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(getAdditionalProperties(p)); return "std::map<std::string, " + inner + ">()"; } else if (ModelUtils.isArraySchema(p)) { ArraySchema ap = (ArraySchema) p; String inner = getSchemaType(ap.getItems()); - return "std::vector<" + inner + ">()"; - } else if (!StringUtils.isEmpty(p.get$ref())) { // model - return toModelName(ModelUtils.getSimpleRef(p.get$ref())) + "()"; - } else if (ModelUtils.isStringSchema(p)) { - if (p.getDefault() == null) { - return "\"\""; - } else { - return "\"" + p.getDefault().toString() + "\""; + if (!languageSpecificPrimitives.contains(inner)) { + inner = "std::shared_ptr<" + inner + ">"; } + return "std::vector<" + inner + ">()"; + } else if (!StringUtils.isEmpty(p.get$ref())) { + return "std::make_shared<" + toModelName(ModelUtils.getSimpleRef(p.get$ref())) + ">()"; } - return ""; + return "nullptr"; } /** diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache index dad2eb75c6ce1b984e7dd181ed2242e379440561..7418caa9cddc50b56c314e743732bbd604e0dd03 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-source.mustache @@ -42,7 +42,7 @@ std::pair<Pistache::Http::Code, std::string> {{classname}}::handleParsingExcepti } catch ({{helpersNamespace}}::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch (std::exception &e) { - return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()); } } diff --git a/samples/server/petstore/cpp-pistache/api/PetApi.cpp b/samples/server/petstore/cpp-pistache/api/PetApi.cpp index a05048ec790fecf6a6554c1a3d870b0b2cd5320c..c3b19e937b7b9906703d8ab04f1174823de7669d 100644 --- a/samples/server/petstore/cpp-pistache/api/PetApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/PetApi.cpp @@ -55,7 +55,7 @@ std::pair<Pistache::Http::Code, std::string> PetApi::handleParsingException(cons } catch (org::openapitools::server::helpers::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch (std::exception &e) { - return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()); } } diff --git a/samples/server/petstore/cpp-pistache/api/StoreApi.cpp b/samples/server/petstore/cpp-pistache/api/StoreApi.cpp index 480bdcc03345064d33e655390eacaf90280ea307..11310ecff12fd64a37da40ab57589cf0f5b0d175 100644 --- a/samples/server/petstore/cpp-pistache/api/StoreApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/StoreApi.cpp @@ -51,7 +51,7 @@ std::pair<Pistache::Http::Code, std::string> StoreApi::handleParsingException(co } catch (org::openapitools::server::helpers::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch (std::exception &e) { - return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()); } } diff --git a/samples/server/petstore/cpp-pistache/api/UserApi.cpp b/samples/server/petstore/cpp-pistache/api/UserApi.cpp index 7b67dd0846e69bebff5fb09ab82efc6dab96f4c8..2aff5aa9ddad6b43bfb486ee5ddb8029cb369aa4 100644 --- a/samples/server/petstore/cpp-pistache/api/UserApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/UserApi.cpp @@ -55,7 +55,7 @@ std::pair<Pistache::Http::Code, std::string> UserApi::handleParsingException(con } catch (org::openapitools::server::helpers::ValidationException &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } catch (std::exception &e) { - return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()) + return std::make_pair(Pistache::Http::Code::Internal_Server_Error, e.what()); } }