Add exception handling 76/242076/3
authorChanggyu Choi <changyu.choi@samsung.com>
Mon, 24 Aug 2020 04:28:32 +0000 (13:28 +0900)
committerChanggyu Choi <changyu.choi@samsung.com>
Mon, 24 Aug 2020 05:25:09 +0000 (14:25 +0900)
Change-Id: If10942309d555809833b28441ed6ff24994e1635
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
parser/metadata/alias-appid/plugin_manager.cc

index 65dc817..44e13df 100644 (file)
@@ -35,6 +35,11 @@ PluginManager& PluginManager::GetInst() {
 
 bool PluginManager::StepInstall(const std::unique_ptr<AppEventArgs>& args) {
   auto* db = dynamic_cast<AppSvcDB*>(GetDB());
+
+  if (db == nullptr) {
+    _E("MetadataPlugin is not prepared");
+    return false;
+  }
   for (auto& metadata : args->GetMetadataList()) {
     try {
       db->Insert(metadata->GetValue(), args->GetAppId());
@@ -46,9 +51,14 @@ bool PluginManager::StepInstall(const std::unique_ptr<AppEventArgs>& args) {
 }
 
 bool PluginManager::StepUninstall(const std::unique_ptr<AppEventArgs>& args) {
+  auto* db = dynamic_cast<AppSvcDB*>(GetDB());
+
+  if (db == nullptr) {
+    _E("MetadataPlugin is not prepared");
+    return false;
+  }
   if (args->GetMetadataList().empty()) {
     try {
-      auto* db = dynamic_cast<AppSvcDB*>(GetDB());
       db->Delete(args->GetAppId());
     } catch (Exception& e) {
       _W("Failed to delete alias info. appid(%s)", args->GetAppId().c_str());
@@ -58,7 +68,6 @@ bool PluginManager::StepUninstall(const std::unique_ptr<AppEventArgs>& args) {
 
   for (auto& metadata : args->GetMetadataList()) {
     try {
-      auto* db = dynamic_cast<AppSvcDB*>(GetDB());
       db->Delete(metadata->GetValue(), args->GetAppId());
     } catch (Exception& e) {
       return false;
@@ -68,8 +77,13 @@ bool PluginManager::StepUninstall(const std::unique_ptr<AppEventArgs>& args) {
 }
 
 bool PluginManager::StepUpgrade(const std::unique_ptr<AppEventArgs>& args) {
+  auto* db = dynamic_cast<AppSvcDB*>(GetDB());
+
+  if (db == nullptr) {
+    _E("MetadataPlugin is not prepared");
+    return false;
+  }
   try {
-    auto* db = dynamic_cast<AppSvcDB*>(GetDB());
     db->Delete(args->GetAppId());
   } catch (Exception& e) {
     _W("Failed to delete alias info. appid(%s)", args->GetAppId().c_str());