diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache index f614d478e9..c79979173f 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/api-header.mustache @@ -42,13 +42,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; 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 9814ba0cd6..dad2eb75c6 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 @@ -36,11 +36,13 @@ void {{classname}}::setupRoutes() { std::pair {{classname}}::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } 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()) } } diff --git a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache index cb6d8d98ee..656109b155 100644 --- a/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-pistache-server/model-header.mustache @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const {{classname}}& rhs) const; bool operator!=(const {{classname}}& rhs) const; @@ -77,9 +83,6 @@ protected: {{#isEnum}} {{classname}}::e{{classname}} m_value = {{classname}}::e{{classname}}::INVALID_VALUE_OPENAPI_GENERATED; {{/isEnum}} - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace {{modelNamespace}} diff --git a/samples/server/petstore/cpp-pistache/api/PetApi.cpp b/samples/server/petstore/cpp-pistache/api/PetApi.cpp index 7b3641599e..a05048ec79 100644 --- a/samples/server/petstore/cpp-pistache/api/PetApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/PetApi.cpp @@ -49,11 +49,13 @@ void PetApi::setupRoutes() { std::pair PetApi::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } 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()) } } diff --git a/samples/server/petstore/cpp-pistache/api/PetApi.h b/samples/server/petstore/cpp-pistache/api/PetApi.h index f689a0675e..3f790af02c 100644 --- a/samples/server/petstore/cpp-pistache/api/PetApi.h +++ b/samples/server/petstore/cpp-pistache/api/PetApi.h @@ -58,13 +58,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; diff --git a/samples/server/petstore/cpp-pistache/api/StoreApi.cpp b/samples/server/petstore/cpp-pistache/api/StoreApi.cpp index ea0c0e1793..480bdcc033 100644 --- a/samples/server/petstore/cpp-pistache/api/StoreApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/StoreApi.cpp @@ -45,11 +45,13 @@ void StoreApi::setupRoutes() { std::pair StoreApi::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } 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()) } } diff --git a/samples/server/petstore/cpp-pistache/api/StoreApi.h b/samples/server/petstore/cpp-pistache/api/StoreApi.h index 6eb2243874..e354a2710f 100644 --- a/samples/server/petstore/cpp-pistache/api/StoreApi.h +++ b/samples/server/petstore/cpp-pistache/api/StoreApi.h @@ -54,13 +54,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; diff --git a/samples/server/petstore/cpp-pistache/api/UserApi.cpp b/samples/server/petstore/cpp-pistache/api/UserApi.cpp index 94903581dc..7b67dd0846 100644 --- a/samples/server/petstore/cpp-pistache/api/UserApi.cpp +++ b/samples/server/petstore/cpp-pistache/api/UserApi.cpp @@ -49,11 +49,13 @@ void UserApi::setupRoutes() { std::pair UserApi::handleParsingException(const std::exception& ex) const noexcept { try { - throw ex; + throw; } catch (nlohmann::detail::exception &e) { return std::make_pair(Pistache::Http::Code::Bad_Request, e.what()); } 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()) } } diff --git a/samples/server/petstore/cpp-pistache/api/UserApi.h b/samples/server/petstore/cpp-pistache/api/UserApi.h index 003b6db4df..fadf0b046c 100644 --- a/samples/server/petstore/cpp-pistache/api/UserApi.h +++ b/samples/server/petstore/cpp-pistache/api/UserApi.h @@ -58,13 +58,15 @@ private: /// /// Helper function to handle unexpected Exceptions during Parameter parsing and validation. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleParsingException(const std::exception& ex) const noexcept; /// /// Helper function to handle unexpected Exceptions during processing of the request in handler functions. - /// May be overriden to return custom error formats. + /// May be overriden to return custom error formats. This is called inside a catch block. + /// Important: When overriding, do not call `throw ex;`, but instead use `throw;`. /// virtual std::pair handleOperationException(const std::exception& ex) const noexcept; diff --git a/samples/server/petstore/cpp-pistache/model/ApiResponse.h b/samples/server/petstore/cpp-pistache/model/ApiResponse.h index d963b76650..c4227b2187 100644 --- a/samples/server/petstore/cpp-pistache/model/ApiResponse.h +++ b/samples/server/petstore/cpp-pistache/model/ApiResponse.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const ApiResponse& rhs) const; bool operator!=(const ApiResponse& rhs) const; @@ -83,9 +89,6 @@ protected: bool m_TypeIsSet; std::string m_Message; bool m_MessageIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Category.h b/samples/server/petstore/cpp-pistache/model/Category.h index 1929ce33e9..71682c36c3 100644 --- a/samples/server/petstore/cpp-pistache/model/Category.h +++ b/samples/server/petstore/cpp-pistache/model/Category.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Category& rhs) const; bool operator!=(const Category& rhs) const; @@ -74,9 +80,6 @@ protected: bool m_IdIsSet; std::string m_Name; bool m_NameIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Order.h b/samples/server/petstore/cpp-pistache/model/Order.h index 3d28e1eef6..86a6e35f87 100644 --- a/samples/server/petstore/cpp-pistache/model/Order.h +++ b/samples/server/petstore/cpp-pistache/model/Order.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Order& rhs) const; bool operator!=(const Order& rhs) const; @@ -110,9 +116,6 @@ protected: bool m_StatusIsSet; bool m_Complete; bool m_CompleteIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Pet.h b/samples/server/petstore/cpp-pistache/model/Pet.h index 1cd841a08f..af773cb3e5 100644 --- a/samples/server/petstore/cpp-pistache/model/Pet.h +++ b/samples/server/petstore/cpp-pistache/model/Pet.h @@ -49,6 +49,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Pet& rhs) const; bool operator!=(const Pet& rhs) const; @@ -109,9 +115,6 @@ protected: bool m_TagsIsSet; std::string m_Status; bool m_StatusIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/Tag.h b/samples/server/petstore/cpp-pistache/model/Tag.h index ddebeadae4..1b607e27fd 100644 --- a/samples/server/petstore/cpp-pistache/model/Tag.h +++ b/samples/server/petstore/cpp-pistache/model/Tag.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const Tag& rhs) const; bool operator!=(const Tag& rhs) const; @@ -74,9 +80,6 @@ protected: bool m_IdIsSet; std::string m_Name; bool m_NameIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model diff --git a/samples/server/petstore/cpp-pistache/model/User.h b/samples/server/petstore/cpp-pistache/model/User.h index 02bd5f4230..38048fe58e 100644 --- a/samples/server/petstore/cpp-pistache/model/User.h +++ b/samples/server/petstore/cpp-pistache/model/User.h @@ -46,6 +46,12 @@ public: /// bool validate(std::stringstream& msg) const; + /// + /// Helper overload for validate. Used when one model stores another model and calls it's validate. + /// Not meant to be called outside that case. + /// + bool validate(std::stringstream& msg, const std::string& pathPrefix) const; + bool operator==(const User& rhs) const; bool operator!=(const User& rhs) const; @@ -128,9 +134,6 @@ protected: bool m_PhoneIsSet; int32_t m_UserStatus; bool m_UserStatusIsSet; - - // Helper overload for validate. Used when one model stores another model and calls it's validate. - bool validate(std::stringstream& msg, const std::string& pathPrefix) const; }; } // namespace org::openapitools::server::model