22#ifndef AppComponent_hpp
33#define AppComponent_hpp
44
5- #include " db/Database.hpp"
6-
75#include " SwaggerComponent.hpp"
6+ #include " DatabaseComponent.hpp"
7+
8+ #include " ErrorHandler.hpp"
89
910#include " oatpp/web/server/HttpConnectionHandler.hpp"
1011#include " oatpp/web/server/HttpRouter.hpp"
1112#include " oatpp/network/tcp/server/ConnectionProvider.hpp"
1213
13- #include " oatpp/parser/json/mapping/Serializer.hpp"
14- #include " oatpp/parser/json/mapping/Deserializer.hpp"
14+ #include " oatpp/parser/json/mapping/ObjectMapper.hpp"
1515
1616#include " oatpp/core/macro/component.hpp"
1717
@@ -26,12 +26,26 @@ class AppComponent {
2626 * Swagger component
2727 */
2828 SwaggerComponent swaggerComponent;
29+
30+ /* *
31+ * Database component
32+ */
33+ DatabaseComponent databaseComponent;
34+
35+ /* *
36+ * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API
37+ */
38+ OATPP_CREATE_COMPONENT (std::shared_ptr<oatpp::data::mapping::ObjectMapper>, apiObjectMapper)([] {
39+ auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared ();
40+ objectMapper->getDeserializer ()->getConfig ()->allowUnknownFields = false ;
41+ return objectMapper;
42+ }());
2943
3044 /* *
3145 * Create ConnectionProvider component which listens on the port
3246 */
3347 OATPP_CREATE_COMPONENT (std::shared_ptr<oatpp::network::ServerConnectionProvider>, serverConnectionProvider)([] {
34- return oatpp::network::tcp::server::ConnectionProvider::createShared ({" localhost " , 8000 });
48+ return oatpp::network::tcp::server::ConnectionProvider::createShared ({" 0.0.0.0 " , 8000 , oatpp::network::Address::IP_4 });
3549 }());
3650
3751 /* *
@@ -45,24 +59,14 @@ class AppComponent {
4559 * Create ConnectionHandler component which uses Router component to route requests
4660 */
4761 OATPP_CREATE_COMPONENT (std::shared_ptr<oatpp::network::ConnectionHandler>, serverConnectionHandler)([] {
62+
4863 OATPP_COMPONENT (std::shared_ptr<oatpp::web::server::HttpRouter>, router); // get Router component
49- return oatpp::web::server::HttpConnectionHandler::createShared (router);
50- }());
51-
52- /* *
53- * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API
54- */
55- OATPP_CREATE_COMPONENT (std::shared_ptr<oatpp::data::mapping::ObjectMapper>, apiObjectMapper)([] {
56- auto objectMapper = oatpp::parser::json::mapping::ObjectMapper::createShared ();
57- objectMapper->getDeserializer ()->getConfig ()->allowUnknownFields = false ;
58- return objectMapper;
59- }());
60-
61- /* *
62- * Create Demo-Database component which stores information about users
63- */
64- OATPP_CREATE_COMPONENT (std::shared_ptr<Database>, database)([] {
65- return std::make_shared<Database>();
64+ OATPP_COMPONENT (std::shared_ptr<oatpp::data::mapping::ObjectMapper>, objectMapper); // get ObjectMapper component
65+
66+ auto connectionHandler = oatpp::web::server::HttpConnectionHandler::createShared (router);
67+ connectionHandler->setErrorHandler (std::make_shared<ErrorHandler>(objectMapper));
68+ return connectionHandler;
69+
6670 }());
6771
6872};
0 commit comments