diff --git a/services/distributeddataservice/service/data_share/common/seq_strategy.cpp b/services/distributeddataservice/service/data_share/common/seq_strategy.cpp index 08bb71eb536cfa612b5507fd94e1e06b416994e9..f9615e1c0e4235aa689d8aa2f44119e2073cfa10 100644 --- a/services/distributeddataservice/service/data_share/common/seq_strategy.cpp +++ b/services/distributeddataservice/service/data_share/common/seq_strategy.cpp @@ -26,18 +26,21 @@ bool SeqStrategy::operator()(std::shared_ptr context) } return true; } -bool SeqStrategy::Init(std::initializer_list strategies) + +void SeqStrategy::Init(std::initializer_list strategies) { - for (const auto &item: strategies) { - if (item == nullptr) { - return false; + std::initializer_list::iterator it = std::find(strategies.begin(), strategies.end(), nullptr); + if (it != strategies.end()) { + std::for_each(strategies.begin(), strategies.end(), [](Strategy *item) { + delete item; + }); + } else { + for (const auto &item: strategies) { + actions_.emplace_back(item); } } - for (const auto &item: strategies) { - actions_.emplace_back(item); - } - return true; } + bool SeqStrategy::IsEmpty() { return actions_.empty(); diff --git a/services/distributeddataservice/service/data_share/common/seq_strategy.h b/services/distributeddataservice/service/data_share/common/seq_strategy.h index 00095a673a4ab5b323c60c4397e62695e2763107..c86dc422335d2abd64eaef7938e464821e837c21 100644 --- a/services/distributeddataservice/service/data_share/common/seq_strategy.h +++ b/services/distributeddataservice/service/data_share/common/seq_strategy.h @@ -25,7 +25,7 @@ namespace OHOS::DataShare { class SeqStrategy : public Strategy { public: bool IsEmpty(); - bool Init(std::initializer_list strategies); + void Init(std::initializer_list strategies); bool operator()(std::shared_ptr context) override; private: diff --git a/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp index c32d5daff4c916213c3a2740683989dcf96b56a3..043e26c14072b5994d3b80ffa166917cf8799f41 100644 --- a/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/get_data_strategy.cpp @@ -62,13 +62,7 @@ SeqStrategy &GetDataStrategy::GetStrategy() new (std::nothrow) LoadConfigCommonStrategy(), new (std::nothrow) LoadConfigFromDataProxyNodeStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } diff --git a/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp index 26b116d48aa72f13b7cd02ef3adaa4d144e59bf7..4d908bf9a994bfb7717c2594bed280d29bb1ee60 100644 --- a/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/publish_strategy.cpp @@ -67,13 +67,7 @@ SeqStrategy &PublishStrategy::GetStrategy() new (std::nothrow) LoadConfigFromDataProxyNodeStrategy(), new (std::nothrow) PermissionStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file diff --git a/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp index a979a9d001d4f9d054a2f1fa9dc6a63e07d14b85..6d982e7d8212ea94af3482fb65b907b1147fc603 100644 --- a/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/rdb_notify_strategy.cpp @@ -54,13 +54,7 @@ SeqStrategy &RdbNotifyStrategy::GetStrategy() new (std::nothrow)LoadConfigFromBundleInfoStrategy(), new (std::nothrow)LoadConfigDataInfoStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file diff --git a/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp index 4b7314c88ba32cbdac295d6b30f14089464e8869..2bc613537383abc7ebf9136febeb22366f834851 100644 --- a/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/subscribe_strategy.cpp @@ -51,13 +51,7 @@ SeqStrategy &SubscribeStrategy::GetStrategy() new (std::nothrow)LoadConfigFromDataProxyNodeStrategy(), new (std::nothrow)PermissionStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file diff --git a/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp b/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp index fd33112a78621d6a1b38315cddd25083197b02af..da75f1b837b281d4d45de23d11452235035eef20 100644 --- a/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp +++ b/services/distributeddataservice/service/data_share/strategies/template_strategy.cpp @@ -48,13 +48,7 @@ SeqStrategy &TemplateStrategy::GetStrategy() new (std::nothrow) LoadConfigCommonStrategy(), new (std::nothrow) LoadConfigFromDataProxyNodeStrategy() }; - auto ret = strategies_.Init(list); - if (!ret) { - std::for_each(list.begin(), list.end(), [](Strategy *item) { - delete item; - }); - return strategies_; - } + strategies_.Init(list); return strategies_; } } // namespace OHOS::DataShare \ No newline at end of file