Commit 5f24579c authored by Jerome Royan's avatar Jerome Royan
Browse files

fix issue to build world-storage-cpp-server

parent e1495eee
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -13,5 +13,6 @@ node_modules
.vscode
*/build/*
EtsiServerGen/*
!*/CMakeLists.txt
!*/.openapi-generator-ignore
!EtsiServerGen/CMakeLists.txt
!EtsiServerGen/.openapi-generator-ignore
!EtsiServerGen/patches
+64 −48
Original line number Diff line number Diff line
#
# ARF - Augmented Reality Framework (ETSI ISG ARF)
#
# Copyright 2022 ETSI
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Last change: June 2022
#

cmake_minimum_required (VERSION 3.2)

project(PistacheGen)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pg -g3" )

include(ExternalProject)

set(EXTERNAL_INSTALL_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/external)

find_package(PkgConfig)
pkg_check_modules(PISTACHE REQUIRED libpistache)

include_directories(${EXTERNAL_INSTALL_LOCATION}/include)
link_directories(${EXTERNAL_INSTALL_LOCATION}/lib)

include_directories(model)
include_directories(api)
include_directories(impl)
project(RestbedGen)

cmake_minimum_required(VERSION 3.22)

set(TARGET_NAME org.openapitools.server.apiStubs)
set(RESTBED_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/external/restbed/source)
set(RESTBED_LIB ${CMAKE_CURRENT_LIST_DIR}/external/restbed/build/librestbed.a)

find_package(Boost 1.45.0 REQUIRED COMPONENTS system filesystem regex)


# Get generated filenames
file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/.openapi-generator/FILES" GENERATED_SOURCES)
list(FILTER GENERATED_SOURCES INCLUDE REGEX ".*cpp$")

set(CMAKE_POSITION_INDEPENDENT_CODE ON)

set(GENERATED_SOURCES_INCLUDE_DIRS
    ${CMAKE_CURRENT_LIST_DIR}/model
    ${CMAKE_CURRENT_LIST_DIR}/api
    ${CMAKE_CURRENT_LIST_DIR}
)

file(GLOB SRCS
    ${CMAKE_CURRENT_SOURCE_DIR}/api/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/impl/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/model/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/model/nlohamnn/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/api/*.cpp
)

file(GLOB HDRS
    ${CMAKE_CURRENT_SOURCE_DIR}/api/*.h
    ${CMAKE_CURRENT_SOURCE_DIR}/model/*.h
    ${CMAKE_CURRENT_SOURCE_DIR}/api/*.h
)

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/model
    ${CMAKE_CURRENT_SOURCE_DIR}/api
)

add_library(${TARGET_NAME} SHARED)


target_sources(${TARGET_NAME}
    PRIVATE
        ${GENERATED_SOURCES})

target_include_directories(${TARGET_NAME}
    PUBLIC
        ${GENERATED_SOURCES_INCLUDE_DIRS}
        ${RESTBED_INCLUDE_DIR}
)



include_directories(${RESTBED_INCLUDE_DIR})

link_directories( ${RESTBED_INCLUDE_DIR})

target_link_libraries(${TARGET_NAME}
    PUBLIC
	${RESTBED_LIB}
    ssl 
    crypto 
	Boost::system
    Boost::filesystem
    Boost::regex
    -lpthread
    )

add_library(${PROJECT_NAME} ${SRCS} )
target_link_libraries(${PROJECT_NAME} pistache pthread)

install(TARGETS ${PROJECT_NAME} DESTINATION /usr/lib)
install(FILES  ${HDRS} DESTINATION include)
install(DIRECTORY  ${RESTBED_INCLUDE_DIR}/corvusoft DESTINATION include)
#install(TARGETS ${PROJECT_NAME} DESTINATION /usr/lib)

+7 −0
Original line number Diff line number Diff line
#!/bin/bash
patch -u ../api/DefaultApi.h -i fixHeaderModelIssue.patch
patch -u ../api/DefaultApi.cpp -i fixCppModelIssue.patch
patch -u ../api/RelocalizationInformationApi.cpp -i fixRelocInfoJSONIssue.patch
patch -u ../api/TrackablesApi.cpp -i fixCppTrackable.patch
patch -u ../api/WorldAnchorsApi.cpp -i fixCppWorldAnchor.patch
patch -u ../api/WorldLinksApi.cpp -i fixCppWorldLink.patch
 No newline at end of file
+11 −0
Original line number Diff line number Diff line
 --- ../api/DefaultApi.cpp      2024-04-15 16:13:33.914375475 +0200
+++ ../api/DefaultApi.cpp      2024-04-15 16:15:50.556422843 +0200
@@ -28,8 +28,6 @@
 namespace server {
 namespace api {

-using namespace org::openapitools::server::model;
-
 namespace {
 [[maybe_unused]]
 std::string selectPreferredContentType(const std::vector<std::string>& contentTypes) {
+179 −0
Original line number Diff line number Diff line
--- TrackablesApi.cpp	2024-04-15 17:52:21.000357100 +0200
+++ TrackablesApi_patched.cpp	2024-04-15 18:08:32.955228320 +0200
@@ -201,7 +201,7 @@
         }
     
         result = resultObject;
-        returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 200, result, responseHeaders);
         return;
     }
     if (status_code == 201) {
@@ -211,7 +211,7 @@
         }
     
         result = resultObject;
-        returnResponse(session, 201, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 201, result, responseHeaders);
         return;
     }
     if (status_code == 400) {
@@ -219,7 +219,7 @@
         result = "Bad request.";
     
         result = resultObject;
-        returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 400, result, responseHeaders);
         return;
     }
     if (status_code == 409) {
@@ -227,15 +227,14 @@
         result = "Invalid UUID, id must be a Nil value.";
     
         result = resultObject;
-        returnResponse(session, 409, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 409, result, responseHeaders);
         return;
     }
     if (status_code == 0) {
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Unexpected error.";
     
-        result = resultObject.toJsonString();
-        returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 0, result, responseHeaders);
         return;
     }
     defaultSessionClose(session, status_code, result);
@@ -277,8 +276,12 @@
         if (!acceptTypes.empty()) {
             responseHeaders.insert(std::make_pair("Accept", acceptTypes));
         }
-    
-        returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders);
+        std::string response;
+        for (const Trackable& item :resultObject) {
+            response += item.toJsonString() + ",\n";
+        }
+
+        returnResponse(session, 200, response, responseHeaders);
         return;
     }
     if (status_code == 201) {
@@ -286,17 +289,18 @@
         if (!acceptTypes.empty()) {
             responseHeaders.insert(std::make_pair("Accept", acceptTypes));
         }
-    
-        result = resultObject;
-        returnResponse(session, 201, result.empty() ? "{}" : result, responseHeaders);
+        std::string response;
+        for (const Trackable& item :resultObject) {
+            response += item.toJsonString() + ",\n";
+        }
+        returnResponse(session, 201, response, responseHeaders);
         return;
     }
     if (status_code == 0) {
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Unexpected error.";
     
-        result = resultObject.toJsonString();
-        returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 0, result, responseHeaders);
         return;
     }
     defaultSessionClose(session, status_code, result);
@@ -343,7 +347,7 @@
         }
     
         result = resultObject;
-        returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 200, result, responseHeaders);
         return;
     }
     if (status_code == 400) {
@@ -351,7 +355,7 @@
         result = "Bad request.";
     
         result = resultObject;
-        returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 400, result, responseHeaders);
         return;
     }
     if (status_code == 404) {
@@ -359,15 +363,15 @@
         result = "Not found, could not find UUID in database.";
     
         result = resultObject;
-        returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 404, result, responseHeaders);
         return;
     }
     if (status_code == 0) {
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Unexpected error.";
     
-        result = resultObject.toJsonString();
-        returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders);
+        result = resultObject;
+        returnResponse(session, 0, result, responseHeaders);
         return;
     }
     defaultSessionClose(session, status_code, result);
@@ -494,7 +498,7 @@
         }
     
         result = resultObject;
-        returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 200, result, responseHeaders);
         return;
     }
     if (status_code == 400) {
@@ -502,7 +506,7 @@
         result = "Invalid UUID supplied.";
     
         result = resultObject;
-        returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 400, result, responseHeaders);
         return;
     }
     if (status_code == 404) {
@@ -510,7 +514,7 @@
         result = "Not found, could not find UUID in database.";
     
         result = resultObject;
-        returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 404, result, responseHeaders);
         return;
     }
     defaultSessionClose(session, status_code, result);
@@ -556,23 +560,23 @@
         }
     
         result = resultObject.toJsonString();
-        returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 200, result, responseHeaders);
         return;
     }
     if (status_code == 400) {
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Invalid UUID supplied.";
     
-        result = resultObject;
-        returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders);
+        result = resultObject.toJsonString();
+        returnResponse(session, 400, result, responseHeaders);
         return;
     }
     if (status_code == 404) {
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Not found, could not find UUID in database.";
     
-        result = resultObject;
-        returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders);
+        result = resultObject.toJsonString();
+        returnResponse(session, 404, result, responseHeaders);
         return;
     }
     defaultSessionClose(session, status_code, result);
Loading