Implement missing CreateExecutor() method
authorChanggyu Choi <changyu.choi@samsung.com>
Tue, 11 Mar 2025 07:09:35 +0000 (16:09 +0900)
committerChanggyu Choi <changyu.choi@samsung.com>
Tue, 11 Mar 2025 07:09:35 +0000 (16:09 +0900)
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
src/action/action_executor_factory.cc
src/action/action_executor_factory.hh
src/action/action_request_handler.cc
src/action/plugin_executor.cc
src/action/plugin_executor.hh

index f641bd7783c50666579a91fdac5f288a6f80454c..334443053de61dfdf7d3466ee116fd5e154e8434 100644 (file)
@@ -1,6 +1,31 @@
 #include "action_executor_factory.hh"
 
+#include "app_control_executor.hh"
+#include "plugin_executor.hh"
+
+namespace action {
+
+class DefaultActionExecutor : public common::AbstractActionExecutor {
+ public:
+  explicit DefaultActionExecutor() : AbstractActionExecutor("") {}
+  ~DefaultActionExecutor() = default;
+
+  int Execute(const common::ActionModel& model) override { return -1; }
+  void SetResultHandler(common::IResultHandler* handler) override {}
+};
+
 std::unique_ptr<common::AbstractActionExecutor>
-action::ActionExecutorFactory::CreateExecutor(common::ActionType type) {
-  return std::unique_ptr<common::AbstractActionExecutor>();
+ActionExecutorFactory::CreateExecutor(std::string instance,
+                                      const common::ActionModel& model) {
+  switch (model.GetType()) {
+    case common::ActionType::AppControl:
+      return std::make_unique<action::AppControlExecutor>(std::move(instance),
+                                                          model);
+    case common::ActionType::Plugin:
+      return std::make_unique<action::PluginExecutor>(std::move(instance));
+    default:
+      return std::unique_ptr<common::AbstractActionExecutor>();
+  }
 }
+
+}  // namespace action
index 85b40da20a95ad17c913d78474602c4ca6da5760..572e31173284c7ba3db78d40129fb1e38e6bc506 100644 (file)
@@ -17,7 +17,9 @@
 #ifndef ACTION_ACTION_EXECUTOR_FACTORY_HH_
 #define ACTION_ACTION_EXECUTOR_FACTORY_HH_
 
+#include <string>
 #include <memory>
+
 #include "common/action_executor.hh"
 
 namespace action {
@@ -25,7 +27,8 @@ namespace action {
 class ActionExecutorFactory {
  public:
   static std::unique_ptr<common::AbstractActionExecutor> CreateExecutor(
-      common::ActionType type);
+      std::string instance,
+      const common::ActionModel& model);
 };
 
 }  // namespace action
index db1b5b9ffe8a763f3da1c98f55538942e76fba1e..d042198d274f728a6e9b435a06754d2c0c14c0de 100644 (file)
@@ -49,16 +49,12 @@ void ActionRequestHandler::OnGetActionId(const std::string& user_description,
                                          int top_k,
                                          float search_threshold) {}
 
-void ActionRequestHandler::OnExecute(const std::string& requester,
+void ActionRequestHandler::OnExecute(const std::string& instance,
                                      common::ActionModel& model) {
   LOG(DEBUG) << "OnExecute action : " << model.GetActionId()
              << ", appid : " << model.GetAppId();
 
-  LOG(DEBUG) << "execute action type: "
-             << (model.GetType() == common::ActionType::AppControl
-                     ? "AppControl"
-                     : "Plugin");
-  auto executor = ActionExecutorFactory::CreateExecutor(model.GetType());
+  auto executor = ActionExecutorFactory::CreateExecutor(instance, model);
   executor->SetResultHandler(this);
   executor->Execute(model);
   executors_.emplace_back(std::move(executor));
index 7dd82f71e8830e937cf17ca9ea94d549ccbd33b2..08921c7c399dd41084b710430b1939323a497ffa 100644 (file)
@@ -44,9 +44,8 @@ class ResultHandler : public rpc_port::plugin_manager_proxy::proxy::
   PluginExecutor* executor_ = nullptr;
 };
 
-PluginExecutor::PluginExecutor(std::string id, const common::ActionModel& model)
+PluginExecutor::PluginExecutor(std::string id)
     : AbstractActionExecutor(std::move(id)),
-      model_(model),
       plugin_manager_(
           this,
           "d::org.tizen.appfw.service.tizen_action_plugin_manager") {}
@@ -57,6 +56,11 @@ PluginExecutor::~PluginExecutor() {
 }
 
 int PluginExecutor::Execute(const common::ActionModel& model) {
+  if (model.GetType() != common::ActionType::Plugin) {
+    LOG(ERROR) << "Invalid action type";
+    return -1;
+  }
+
   LOG(ERROR) << "Plugin Execute : " << model.GetUri();
 
   if (!Connect())
index 089505e5372f8e38481703ea3be4d06a31eccc87..ac9777dac0753b2260687e57c9d69e99202e1b18 100644 (file)
@@ -29,7 +29,7 @@ class PluginExecutor : public common::AbstractActionExecutor,
                        public rpc_port::plugin_manager_proxy::proxy::
                            PluginManager::IEventListener {
  public:
-  explicit PluginExecutor(std::string id, const common::ActionModel& model);
+  explicit PluginExecutor(std::string instance);
   ~PluginExecutor();
   int Execute(const common::ActionModel& model) override;
   void SetResultHandler(common::IResultHandler* handler) override;
@@ -43,7 +43,6 @@ class PluginExecutor : public common::AbstractActionExecutor,
   void OnRejected() override;
 
  private:
-  common::ActionModel model_;
   rpc_port::plugin_manager_proxy::proxy::PluginManager plugin_manager_;
   common::IResultHandler* result_handler_ = nullptr;
   bool connected_ = false;