diff options
author | jacobkeeler <jacob.keeler@livioradio.com> | 2019-03-07 17:20:16 -0500 |
---|---|---|
committer | jacobkeeler <jacob.keeler@livioradio.com> | 2019-03-07 17:20:16 -0500 |
commit | b49f662b54b5be8a67140fca1e8f55f87bef13d2 (patch) | |
tree | 8ed93cbfe6cb6c19f7fe4c09d19fb570c923e876 | |
parent | 0849c4b4de0fa54408a2d353afb4d4de242ef544 (diff) | |
download | sdl_core-b49f662b54b5be8a67140fca1e8f55f87bef13d2.tar.gz |
Address review commentsfeature/cloud_app_hybrid_preference
Also fix bug where an app name could coincide with several apps vr synonyms
2 files changed, 19 insertions, 12 deletions
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h index a6bfdec209..91ee8ea813 100644 --- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h +++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/commands/mobile/register_app_interface_request.h @@ -144,12 +144,14 @@ class RegisterAppInterfaceRequest /* * @brief Check new application parameters (name, tts, vr) for * coincidence with already known parameters of registered applications + * @param out_duplicate_apps In the case other apps was found with duplicate + * names, this field will be filled with a list of said apps * * return SUCCESS if there is no coincidence of app.name/TTS/VR synonyms, * otherwise appropriate error code returns - */ + */ mobile_apis::Result::eType CheckCoincidence( - app_mngr::ApplicationSharedPtr& app); + std::vector<app_mngr::ApplicationSharedPtr>& out_duplicate_apps); /* * @brief Predicate for using with CheckCoincidence method to compare with VR 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 e4540fe888..924705f82b 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 @@ -281,11 +281,13 @@ void RegisterAppInterfaceRequest::Run() { return; } - ApplicationSharedPtr duplicate_app; + std::vector<ApplicationSharedPtr> duplicate_apps; mobile_apis::Result::eType coincidence_result = - CheckCoincidence(duplicate_app); + CheckCoincidence(duplicate_apps); - if (mobile_apis::Result::DUPLICATE_NAME == coincidence_result) { + if (mobile_apis::Result::DUPLICATE_NAME == coincidence_result && + duplicate_apps.size() == 1) { + ApplicationSharedPtr duplicate_app = duplicate_apps.front(); bool error_response = true; if (duplicate_app->is_cloud_app()) { if (duplicate_app->hybrid_app_preference() == @@ -955,7 +957,7 @@ void RegisterAppInterfaceRequest::SendOnAppRegisteredNotificationToHMI( } mobile_apis::Result::eType RegisterAppInterfaceRequest::CheckCoincidence( - ApplicationSharedPtr& out_app) { + std::vector<ApplicationSharedPtr>& out_duplicate_apps) { LOG4CXX_AUTO_TRACE(logger_); const smart_objects::SmartObject& msg_params = (*message_)[strings::msg_params]; @@ -971,8 +973,8 @@ mobile_apis::Result::eType RegisterAppInterfaceRequest::CheckCoincidence( const custom_str::CustomString& cur_name = (*it)->name(); if (app_name.CompareIgnoreCase(cur_name)) { LOG4CXX_ERROR(logger_, "Application name is known already."); - out_app = *it; - return mobile_apis::Result::DUPLICATE_NAME; + out_duplicate_apps.push_back(*it); + continue; } const smart_objects::SmartObject* vr = (*it)->vr_synonyms(); @@ -983,8 +985,8 @@ mobile_apis::Result::eType RegisterAppInterfaceRequest::CheckCoincidence( if (0 != std::count_if(curr_vr->begin(), curr_vr->end(), v)) { LOG4CXX_ERROR(logger_, "Application name is known already."); - out_app = *it; - return mobile_apis::Result::DUPLICATE_NAME; + out_duplicate_apps.push_back(*it); + continue; } } @@ -996,13 +998,16 @@ mobile_apis::Result::eType RegisterAppInterfaceRequest::CheckCoincidence( CoincidencePredicateVR v(cur_name); if (0 != std::count_if(new_vr->begin(), new_vr->end(), v)) { LOG4CXX_ERROR(logger_, "vr_synonyms duplicated with app_name ."); - out_app = *it; - return mobile_apis::Result::DUPLICATE_NAME; + out_duplicate_apps.push_back(*it); + continue; } } // end vr check } // application for end + if (!out_duplicate_apps.empty()) { + return mobile_apis::Result::DUPLICATE_NAME; + } return mobile_apis::Result::SUCCESS; } // method end |