summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-08-07 11:44:44 -0400
committerJackLivio <jack@livio.io>2018-08-07 11:44:44 -0400
commit8a5be2b85c5c37b5b2d2b304f0816eda6f05352b (patch)
tree2381fc762ca9d0713caa7141dfac7e77a4af85af
parent72db7065480b1596cf8c04065ef066944ead4a2f (diff)
downloadsdl_core-8a5be2b85c5c37b5b2d2b304f0816eda6f05352b.tar.gz
Update based on comments
-rw-r--r--src/components/application_manager/include/application_manager/application.h4
-rw-r--r--src/components/application_manager/include/application_manager/application_data_impl.h4
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc18
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc2
-rw-r--r--src/components/application_manager/src/application_data_impl.cc9
-rw-r--r--src/components/application_manager/test/include/application_manager/mock_application.h5
-rw-r--r--src/components/formatters/include/formatters/CSmartFactory.h3
-rw-r--r--src/components/include/utils/semantic_version.h10
-rw-r--r--src/components/smart_objects/src/object_schema_item.cc20
-rw-r--r--src/components/smart_objects/test/CObjectSchemaItem_test.cc39
10 files changed, 56 insertions, 58 deletions
diff --git a/src/components/application_manager/include/application_manager/application.h b/src/components/application_manager/include/application_manager/application.h
index 0681761b5a..da5860f06b 100644
--- a/src/components/application_manager/include/application_manager/application.h
+++ b/src/components/application_manager/include/application_manager/application.h
@@ -127,9 +127,7 @@ class InitialApplicationData {
virtual void set_language(const mobile_api::Language::eType& language) = 0;
virtual void set_ui_language(
const mobile_api::Language::eType& ui_language) = 0;
- virtual void set_msg_version(const uint16_t major,
- const uint16_t minor,
- const uint16_t patch) = 0;
+ virtual void set_msg_version(const utils::SemanticVersion& version) = 0;
};
/*
diff --git a/src/components/application_manager/include/application_manager/application_data_impl.h b/src/components/application_manager/include/application_manager/application_data_impl.h
index c1056123ea..05091dbfbd 100644
--- a/src/components/application_manager/include/application_manager/application_data_impl.h
+++ b/src/components/application_manager/include/application_manager/application_data_impl.h
@@ -65,9 +65,7 @@ class InitialApplicationDataImpl : public virtual Application {
void set_ngn_media_screen_name(const smart_objects::SmartObject& ngn_name);
void set_language(const mobile_api::Language::eType& language);
void set_ui_language(const mobile_api::Language::eType& ui_language);
- void set_msg_version(const uint16_t major,
- const uint16_t minor,
- const uint16_t patch);
+ void set_msg_version(const utils::SemanticVersion& version);
void set_perform_interaction_layout(
mobile_api::LayoutMode::eType layout) OVERRIDE;
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc
index 9b546a1340..4284b97786 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/commands/mobile/register_app_interface_request.cc
@@ -298,14 +298,19 @@ void RegisterAppInterfaceRequest::Run() {
uint16_t minor =
msg_params[strings::sync_msg_version][strings::minor_version].asUInt();
uint16_t patch = 0;
+ // Check if patch exists since it is not mandatory.
if (msg_params[strings::sync_msg_version].keyExists(strings::patch_version)) {
patch =
msg_params[strings::sync_msg_version][strings::patch_version].asUInt();
}
- if (major < minimum_major_version ||
- (major == minimum_major_version && minor < minimum_minor_version) ||
- (major == minimum_major_version && minor == minimum_minor_version &&
- patch < minimum_patch_version)) {
+
+ utils::SemanticVersion mobile_version(major, minor, patch);
+ utils::SemanticVersion min_module_version(
+ minimum_major_version, minimum_minor_version, minimum_patch_version);
+
+ if (mobile_version < min_module_version) {
+ LOG4CXX_WARN(logger_,
+ "Application RPC Version does not meet minimum requirement");
SendResponse(false, mobile_apis::Result::REJECTED);
}
@@ -317,15 +322,14 @@ void RegisterAppInterfaceRequest::Run() {
}
// Version negotiation
- utils::SemanticVersion mobile_version(major, minor, patch);
utils::SemanticVersion module_version(
major_version, minor_version, patch_version);
if (mobile_version < module_version) {
// Use mobile RPC version as negotiated version
- application->set_msg_version(major, minor, patch);
+ application->set_msg_version(mobile_version);
} else {
// Use module version as negotiated version
- application->set_msg_version(major_version, minor_version, patch_version);
+ application->set_msg_version(module_version);
}
// For resuming application need to restore hmi_app_id from resumeCtrl
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc
index 0fcc1866ae..2518e9c7fd 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/commands/mobile/register_app_interface_request_test.cc
@@ -135,8 +135,6 @@ class RegisterAppInterfaceRequestTest
ON_CALL(*mock_app, policy_app_id()).WillByDefault(Return(kAppId));
ON_CALL(*mock_app, msg_version())
.WillByDefault(ReturnRef(mock_semantic_version));
- // EXPECT_CALL(*mock_app,
- // msg_version()).WillOnce(Return(mock_semantic_version));
return mock_app;
}
diff --git a/src/components/application_manager/src/application_data_impl.cc b/src/components/application_manager/src/application_data_impl.cc
index 951acb68e9..ea7893ddc5 100644
--- a/src/components/application_manager/src/application_data_impl.cc
+++ b/src/components/application_manager/src/application_data_impl.cc
@@ -157,12 +157,9 @@ void InitialApplicationDataImpl::set_ui_language(
ui_language_ = ui_language;
}
-void InitialApplicationDataImpl::set_msg_version(const uint16_t major,
- const uint16_t minor,
- const uint16_t patch) {
- msg_version_.major_version = major;
- msg_version_.minor_version = minor;
- msg_version_.patch_version = patch;
+void InitialApplicationDataImpl::set_msg_version(
+ const utils::SemanticVersion& version) {
+ msg_version_ = version;
}
void InitialApplicationDataImpl::set_perform_interaction_layout(
diff --git a/src/components/application_manager/test/include/application_manager/mock_application.h b/src/components/application_manager/test/include/application_manager/mock_application.h
index 79a268530a..602d228147 100644
--- a/src/components/application_manager/test/include/application_manager/mock_application.h
+++ b/src/components/application_manager/test/include/application_manager/mock_application.h
@@ -205,10 +205,7 @@ class MockApplication : public ::application_manager::Application {
void(const mobile_apis::Language::eType& language));
MOCK_METHOD1(set_ui_language,
void(const mobile_apis::Language::eType& ui_language));
- MOCK_METHOD3(set_msg_version,
- void(const uint16_t major,
- const uint16_t minor,
- const uint16_t patch));
+ MOCK_METHOD1(set_msg_version, void(const utils::SemanticVersion& version));
// DynamicApplicationData methods
MOCK_CONST_METHOD0(help_prompt, const smart_objects::SmartObject*());
MOCK_CONST_METHOD0(timeout_prompt, const smart_objects::SmartObject*());
diff --git a/src/components/formatters/include/formatters/CSmartFactory.h b/src/components/formatters/include/formatters/CSmartFactory.h
index e7eb91912f..d66dc56d8b 100644
--- a/src/components/formatters/include/formatters/CSmartFactory.h
+++ b/src/components/formatters/include/formatters/CSmartFactory.h
@@ -300,7 +300,8 @@ bool CSmartFactory<FunctionIdEnum, MessageTypeEnum, StructIdEnum>::attachSchema(
object.setSchema(schemaIterator->second);
- utils::SemanticVersion msg_version;
+ // Initialize msg_version to 0.0.0, an invalid value until properly set.
+ utils::SemanticVersion msg_version(0, 0, 0);
if (object[NsSmartDeviceLink::NsJSONHandler::strings::S_PARAMS].keyExists(
NsSmartDeviceLink::NsJSONHandler::strings::S_RPC_MSG_VERSION)) {
msg_version =
diff --git a/src/components/include/utils/semantic_version.h b/src/components/include/utils/semantic_version.h
index 66cedc2bc5..a67cf6d2d1 100644
--- a/src/components/include/utils/semantic_version.h
+++ b/src/components/include/utils/semantic_version.h
@@ -60,13 +60,9 @@ struct SemanticVersion {
}
bool operator==(const SemanticVersion& version) const {
- if (major_version == version.major_version &&
- minor_version == version.minor_version &&
- patch_version == version.patch_version) {
- return true;
- } else {
- return false;
- }
+ return (major_version == version.major_version &&
+ minor_version == version.minor_version &&
+ patch_version == version.patch_version);
}
bool operator<(const SemanticVersion& version) const {
diff --git a/src/components/smart_objects/src/object_schema_item.cc b/src/components/smart_objects/src/object_schema_item.cc
index 1eea823013..def0c0aceb 100644
--- a/src/components/smart_objects/src/object_schema_item.cc
+++ b/src/components/smart_objects/src/object_schema_item.cc
@@ -33,8 +33,6 @@
#include <algorithm>
-#include <boost/algorithm/string.hpp>
-
#include "smart_objects/always_false_schema_item.h"
#include "smart_objects/smart_object.h"
@@ -59,24 +57,14 @@ CObjectSchemaItem::SMember::SMember(
const std::vector<CObjectSchemaItem::SMember>& history_vector)
: mSchemaItem(SchemaItem), mIsMandatory(IsMandatory) {
if (Since.size() > 0) {
- utils::SemanticVersion since_struct;
- std::vector<std::string> since_fields;
- boost::split(since_fields, Since, boost::is_any_of("."));
- if (since_fields.size() == 3) {
- since_struct.major_version = atoi(since_fields[0].c_str());
- since_struct.minor_version = atoi(since_fields[1].c_str());
- since_struct.patch_version = atoi(since_fields[2].c_str());
+ utils::SemanticVersion since_struct(Since);
+ if (since_struct.isValid()) {
mSince = since_struct;
}
}
if (Until.size() > 0) {
- utils::SemanticVersion until_struct;
- std::vector<std::string> until_fields;
- boost::split(until_fields, Until, boost::is_any_of("."));
- if (until_fields.size() == 3) {
- until_struct.major_version = atoi(until_fields[0].c_str());
- until_struct.minor_version = atoi(until_fields[1].c_str());
- until_struct.patch_version = atoi(until_fields[2].c_str());
+ utils::SemanticVersion until_struct(Until);
+ if (until_struct.isValid()) {
mUntil = until_struct;
}
}
diff --git a/src/components/smart_objects/test/CObjectSchemaItem_test.cc b/src/components/smart_objects/test/CObjectSchemaItem_test.cc
index c49a1bb302..5a0dcefa10 100644
--- a/src/components/smart_objects/test/CObjectSchemaItem_test.cc
+++ b/src/components/smart_objects/test/CObjectSchemaItem_test.cc
@@ -140,12 +140,32 @@ class ObjectSchemaItemTest : public ::testing::Test {
// Create fake param that has breaking history changes
std::vector<CObjectSchemaItem::SMember> fake_param_history_vector;
- std::shared_ptr<ISchemaItem> fake_param_SchemaItem = CArraySchemaItem::create(CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(99), TSchemaItemParameter<std::string>()), TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(100));
-
- std::shared_ptr<ISchemaItem> fake_param_history_v1_SchemaItem = CArraySchemaItem::create(CStringSchemaItem::create(TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(99), TSchemaItemParameter<std::string>()), TSchemaItemParameter<size_t>(1), TSchemaItemParameter<size_t>(100));
-
- fake_param_history_vector.push_back(CObjectSchemaItem::SMember(fake_param_history_v1_SchemaItem, true, "", "4.5.0", false, false));
- schemaMembersMap["fakeParam"] = CObjectSchemaItem::SMember(fake_param_SchemaItem, false, "4.5.0", "", false, false, fake_param_history_vector);
+ std::shared_ptr<ISchemaItem> fake_param_SchemaItem =
+ CArraySchemaItem::create(
+ CStringSchemaItem::create(TSchemaItemParameter<size_t>(1),
+ TSchemaItemParameter<size_t>(99),
+ TSchemaItemParameter<std::string>()),
+ TSchemaItemParameter<size_t>(1),
+ TSchemaItemParameter<size_t>(100));
+
+ std::shared_ptr<ISchemaItem> fake_param_history_v1_SchemaItem =
+ CArraySchemaItem::create(
+ CStringSchemaItem::create(TSchemaItemParameter<size_t>(1),
+ TSchemaItemParameter<size_t>(99),
+ TSchemaItemParameter<std::string>()),
+ TSchemaItemParameter<size_t>(1),
+ TSchemaItemParameter<size_t>(100));
+
+ fake_param_history_vector.push_back(CObjectSchemaItem::SMember(
+ fake_param_history_v1_SchemaItem, true, "", "4.5.0", false, false));
+ schemaMembersMap["fakeParam"] =
+ CObjectSchemaItem::SMember(fake_param_SchemaItem,
+ false,
+ "4.5.0",
+ "",
+ false,
+ false,
+ fake_param_history_vector);
CObjectSchemaItem::Members rootMembersMap;
rootMembersMap[S_PARAMS] = CObjectSchemaItem::SMember(
@@ -180,7 +200,7 @@ TEST_F(ObjectSchemaItemTest, validation_correct_with_new_version) {
obj[S_MSG_PARAMS][Keys::INFO] = "0123456789";
obj[S_MSG_PARAMS][Keys::SUCCESS] = true;
- utils::SemanticVersion messageVersion(4,5,0);
+ utils::SemanticVersion messageVersion(4, 5, 0);
rpc::ValidationReport report("RPC");
EXPECT_EQ(Errors::OK, schema_item->validate(obj, &report, messageVersion));
EXPECT_EQ(std::string(""), rpc::PrettyFormat(report));
@@ -195,9 +215,10 @@ TEST_F(ObjectSchemaItemTest, validation_invalid_data_with_old_version) {
obj[S_MSG_PARAMS][Keys::INFO] = "0123456789";
obj[S_MSG_PARAMS][Keys::SUCCESS] = true;
- utils::SemanticVersion messageVersion(3,0,0);
+ utils::SemanticVersion messageVersion(3, 0, 0);
rpc::ValidationReport report("RPC");
- EXPECT_EQ(Errors::MISSING_MANDATORY_PARAMETER, schema_item->validate(obj, &report, messageVersion));
+ EXPECT_EQ(Errors::MISSING_MANDATORY_PARAMETER,
+ schema_item->validate(obj, &report, messageVersion));
}
TEST_F(ObjectSchemaItemTest, validation_correct_skip_not_mandatory) {