diff options
author | Yaroslav Mamykin (GitHub) <ymamykin@luxoft.com> | 2019-10-07 15:11:02 +0300 |
---|---|---|
committer | Yarik <ymamykin@gmail.com> | 2019-11-15 15:16:38 +0200 |
commit | 9faf9bff565c824e2bf277d69873770f870f38e5 (patch) | |
tree | 3d3f82abc081bb89fc813039cec5277bb3c7a292 | |
parent | 9b0afe47c6aaa1bb723857e630a38a88194e4f18 (diff) | |
download | sdl_core-9faf9bff565c824e2bf277d69873770f870f38e5.tar.gz |
fixup! Fix versioning appliance for vehicle data
3 files changed, 49 insertions, 16 deletions
diff --git a/src/components/smart_objects/CMakeLists.txt b/src/components/smart_objects/CMakeLists.txt index ef84c52ab9..3ffdedd275 100644 --- a/src/components/smart_objects/CMakeLists.txt +++ b/src/components/smart_objects/CMakeLists.txt @@ -34,6 +34,7 @@ include_directories( ${COMPONENTS_DIR}/include ${COMPONENTS_DIR}/smart_objects/include ${COMPONENTS_DIR}/utils/include + ${CMAKE_BINARY_DIR}/src/components/interfaces ${BOOST_INCLUDE_DIR} ) diff --git a/src/components/smart_objects/include/smart_objects/object_schema_item.h b/src/components/smart_objects/include/smart_objects/object_schema_item.h index ed2c8fbd8a..cdd5368b76 100644 --- a/src/components/smart_objects/include/smart_objects/object_schema_item.h +++ b/src/components/smart_objects/include/smart_objects/object_schema_item.h @@ -76,6 +76,13 @@ struct SMember { bool CheckHistoryFieldVersion( const utils::SemanticVersion& MessageVersion) const; + private: + bool CheckCustomVehicleData( + const utils::SemanticVersion& MessageVersion) const; + + bool CheckAPIVehicleData(const utils::SemanticVersion& MessageVersion) const; + + public: /** * @brief Member schema item. **/ diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc index cb277f2844..02ba989ea0 100644 --- a/src/components/smart_objects/src/object_schema_item.cc +++ b/src/components/smart_objects/src/object_schema_item.cc @@ -33,6 +33,7 @@ #include <algorithm> +#include "generated_msg_version.h" #include "smart_objects/always_false_schema_item.h" #include "smart_objects/smart_object.h" @@ -40,9 +41,13 @@ namespace { const char connection_key[] = "connection_key"; const char binary_data[] = "binary_data"; const char app_id[] = "appID"; +const utils::SemanticVersion kModuleVersion(application_manager::major_version, + application_manager::minor_version, + application_manager::patch_version); } // namespace namespace ns_smart_device_link { namespace ns_smart_objects { +CREATE_LOGGERPTR_LOCAL(vehicle_log, "VEHICLELOG") SMember::SMember() : mSchemaItem(CAlwaysFalseSchemaItem::create()) @@ -84,29 +89,46 @@ SMember::SMember(const ISchemaItemPtr SchemaItem, bool SMember::CheckHistoryFieldVersion( const utils::SemanticVersion& MessageVersion) const { if (MessageVersion.isValid()) { - if (mSince != boost::none) { - if (MessageVersion < mSince.get() && !mIsCustom) { - return false; // Msg version predates `since` field - } else { - if (mUntil != boost::none && (MessageVersion >= mUntil.get())) { - return false; // Msg version newer than `until` field - } else { - return true; // Mobile msg version falls within specified version - // range - } - } - } - - if (mUntil != boost::none && (MessageVersion >= mUntil.get())) { - return false; // Msg version newer than `until` field + if (mIsCustom) { + return CheckCustomVehicleData(MessageVersion); } else { - return true; // Mobile msg version falls within specified version range + return CheckAPIVehicleData(MessageVersion); } } return true; // Not enough version information. Default true. } +bool SMember::CheckCustomVehicleData( + const utils::SemanticVersion& MessageVersion) const { + if (mSince != boost::none) { + if (MessageVersion < mSince.get() && MessageVersion < kModuleVersion) { + return false; // Msg version predates `since` field + } + } + + if (mUntil != boost::none && (MessageVersion >= mUntil.get())) { + return false; // Msg version newer than `until` field + } + + return true; +} + +bool SMember::CheckAPIVehicleData( + const utils::SemanticVersion& MessageVersion) const { + if (mSince != boost::none) { + if (MessageVersion < mSince.get()) { + return false; // Msg version predates `since` field + } + } + + if (mUntil != boost::none && (MessageVersion >= mUntil.get())) { + return false; // Msg version newer than `until` field + } + + return true; +} + std::shared_ptr<CObjectSchemaItem> CObjectSchemaItem::create( const Members& members) { return std::shared_ptr<CObjectSchemaItem>(new CObjectSchemaItem(members)); @@ -261,6 +283,9 @@ void CObjectSchemaItem::RemoveFakeParams( std::map<std::string, SMember>::const_iterator members_it = mMembers.find(key); + LOG4CXX_ERROR(vehicle_log, "PROCESSING " << key); + LOG4CXX_ERROR(vehicle_log, + "MESSAGE VERSION: " << MessageVersion.toString()); if (mMembers.end() != members_it) { const SMember& member = GetCorrectMember(members_it->second, MessageVersion); |