Commit a23e01e7 authored by Jerome Royan's avatar Jerome Royan
Browse files

Merge branch 'fix/RestBed_Generation' into 'develop'

fix: uniqueItem for array reactivated: Work around found to use std::vector...

See merge request !4
parents 2879534b e9ac77fa
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
[requires]
boost/1.78.0
boost/1.84.0
restbed/4.8

[generators]
+6 −9
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/TrackablesApi.cpp -i fixCppTrackable.patch
patch -u ../api/RelocalizationInformationApi.cpp -i fixCppRelocalizationInformation.patch
patch -u ../api/TrackablesApi.cpp -i fixCppTrackables.patch
patch -u ../api/WorldAnchorsApi.cpp -i fixCppWorldAnchors.patch
patch -u ../api/WorldLinksApi.cpp -i fixCppWorldLinks.patch
patch -u ../api/RelocalizationInformationApi.cpp -i fixCppRelocalizationInformation.patch
patch -u ../model/WorldLink.cpp -i fixCppWorldLinksModel.patch
patch -u ../model/WorldAnchor.cpp -i fixCppWorldAnchorModel.patch
patch -u ../model/Trackable.cpp -i fixCppTrackableModel.patch
patch -u ../model/helpers.h -i fixHelperHeader.patch
patch -u ../model/RelocalizationInformation.cpp -i fixCppRelocalizationInformationModel.patch
patch -u ../model/RelocalizationInformationParam.cpp -i fixCppRelocalizationInformationParamModel.patch
patch -u ../model/GetRelocalizationInformation_200_response.cpp -i fixCppGetRelocResponse.patch
patch -u ../model/Capability.cpp -i fixCppCapabilityModel.patch
patch -u ../model/Trackable.cpp -i fixCppTrackableModel.patch
patch -u ../model/UuidAndMode.cpp -i fixCppUuidAndModeModel.patch
patch -u ../model/WorldAnchor.cpp -i fixCppWorldAnchorModel.patch
patch -u ../model/WorldLink.cpp -i fixCppWorldLinkModel.patch
+12 −10
Original line number Diff line number Diff line
diff --git a/EtsiServerGen/model/Capability.cpp b/../../world-storage-cpp-server/EtsiServerGen/model/Capability.cpp
index 8df709d..442bc9d 100644
--- a/EtsiServerGen/model/Capability.cpp
+++ b/../../world-storage-cpp-server/EtsiServerGen/model/Capability.cpp
@@ -63,6 +63,7 @@ ptree Capability::toPropertyTree() const
--- Capability.cpp	2024-09-19 23:18:16.290090280 +0200
+++ Capability-corrected.cpp	2024-09-20 13:40:09.082949533 +0200
@@ -63,7 +63,8 @@
 {
 	ptree pt;
 	ptree tmp_node;
-	pt.add_child("encodingInformation", m_EncodingInformation.toPropertyTree());
+	pt.put("trackableType", m_TrackableType.getEnumValue());
 	pt.add_child("encodingInformation", m_EncodingInformation.toPropertyTree());
+    pt.add_child("encodingInformation", m_EncodingInformation.toPropertyTree());
 	pt.put("framerate", m_Framerate);
 	pt.put("latency", m_Latency);
@@ -73,6 +74,7 @@ ptree Capability::toPropertyTree() const
 	pt.put("accuracy", m_Accuracy);
@@ -73,7 +74,8 @@
 void Capability::fromPropertyTree(ptree const &pt)
 {
 	ptree tmp_node;
-	if (pt.get_child_optional("encodingInformation")) {
+	m_TrackableType.setEnumValue(pt.get("trackableType",""));
 	if (pt.get_child_optional("encodingInformation")) {
+    if (pt.get_child_optional("encodingInformation")) {
         m_EncodingInformation = fromPt<EncodingInformationStructure>(pt.get_child("encodingInformation"));
 	}
 	m_Framerate = pt.get("framerate", 0.0);
+0 −14
Original line number Diff line number Diff line
diff --git a/EtsiServerGen/model/GetRelocalizationInformation_200_response.cpp b/../../world-storage-cpp-server/EtsiServerGen/model/GetRelocalizationInformation_200_response.cpp
index d6f90df..ce6079e 100644
--- a/EtsiServerGen/model/GetRelocalizationInformation_200_response.cpp
+++ b/../../world-storage-cpp-server/EtsiServerGen/model/GetRelocalizationInformation_200_response.cpp
@@ -47,6 +47,9 @@ std::string GetRelocalizationInformation_200_response::toJsonString(bool prettyJ
     // workaround inspired by: https://stackoverflow.com/a/56395440
     std::regex reg("\\\"([0-9]+\\.{0,1}[0-9]*)\\\"");
     std::string result = std::regex_replace(ss.str(), reg, "$1");
+
+    result.erase(std::remove(result.begin(), result.end(), '|'), result.end());
+
     return result;
 }
 
+7 −62
Original line number Diff line number Diff line
diff --git a/EtsiServerGen/api/RelocalizationInformationApi.cpp b/../../world-storage-cpp-server/EtsiServerGen/api/RelocalizationInformationApi.cpp
index f332ad2..6ba51b8 100644
--- a/EtsiServerGen/api/RelocalizationInformationApi.cpp
+++ b/../../world-storage-cpp-server/EtsiServerGen/api/RelocalizationInformationApi.cpp
@@ -22,7 +22,7 @@
 #include <boost/algorithm/string.hpp>
 
 #include "RelocalizationInformationApi.h"
-
+#include <iostream>
 namespace org {
 namespace openapitools {
 namespace server {
@@ -155,21 +155,28 @@ void RelocalizationInformationResource::defaultSessionClose(const std::shared_pt
 
 void RelocalizationInformationResource::handler_GET_internal(const std::shared_ptr<restbed::Session> session)
--- RelocalizationInformationApi.cpp	2024-09-19 22:57:54.664539447 +0200
+++ RelocalizationInformationApi_corrected.cpp	2024-09-19 22:57:22.213975949 +0200
@@ -157,16 +157,12 @@
 {
+
     const auto request = session->get_request();
     // Getting the query params
-    std::string uuids_raw = request->get_query_parameter("uuids");
+    std::multimap<std::string, std::string> uuids_raw = request->get_query_parameters("uuids");
     std::vector<RelocalizationInformationParam> uuids;
     std::vector<UuidAndMode> uuids;
-    std::vector<std::string> uuids_temp;
-    boost::split(uuids_temp, uuids_raw, boost::is_any_of(","));
-    std::transform(uuids_temp.begin(), uuids_temp.end(), std::back_inserter(uuids), [](const auto& i){ RelocalizationInformationParam ret; ret.fromString(i); return ret;});
-    std::transform(uuids_temp.begin(), uuids_temp.end(), std::back_inserter(uuids), [](const auto& i){ UuidAndMode ret; ret.fromString(i); return ret;});
-    std::string capabilities_raw = request->get_query_parameter("capabilities");
+    for (auto it = uuids_raw.begin(); it != uuids_raw.end(); it++)
+    {
+        RelocalizationInformationParam relocInformationParam;
+        relocInformationParam.fromJsonString(it->second);        
+        uuids.push_back(relocInformationParam);
+     }
+    std::transform(uuids_raw.begin(), uuids_raw.end(), std::back_inserter(uuids), [](const auto& i){ UuidAndMode ret; ret.fromJsonString(i.second); return ret;});
+    std::multimap<std::string, std::string> capabilities_raw = request->get_query_parameters("capabilities");
     std::vector<Capability> capabilities;
-    std::vector<std::string> capabilities_temp;
-    boost::split(capabilities_temp, capabilities_raw, boost::is_any_of(","));
-    std::transform(capabilities_temp.begin(), capabilities_temp.end(), std::back_inserter(capabilities), [](const auto& i){ Capability ret; ret.fromString(i); return ret;});
+    for (auto it = capabilities_raw.begin(); it != capabilities_raw.end(); it++)
+    {
+        Capability capability;
+        capability.fromJsonString(it->second);
+        capabilities.push_back(capability);
+     }
+    std::transform(capabilities_raw.begin(), capabilities_raw.end(), std::back_inserter(capabilities), [](const auto& i){ Capability ret; ret.fromJsonString(i.second); return ret;});
     // Getting the headers
     std::string token = request->get_header("token", "");
-    
+
     int status_code = 500;
     GetRelocalizationInformation_200_response resultObject = GetRelocalizationInformation_200_response{};
     std::string result = "";
@@ -202,22 +209,22 @@ void RelocalizationInformationResource::handler_GET_internal(const std::shared_p
         }
     
         result = resultObject.toJsonString();
-        returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders);
+        returnResponse(session, 200, result.empty() ? "empty" : result, responseHeaders);
         return;
     }
     if (status_code == 400) {
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Invalid UUID supplied.";
     
-        result = resultObject;
+        result = resultObject.toJsonString();
         returnResponse(session, 400, result.empty() ? "{}" : 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 = "Not found, could not find UUID or Supported content in database.";
     
-        result = resultObject;
+  
         returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders);
         return;
     }
Loading