Change capabilities export/import in JSON
authorDaehyeon Jung <darrenh.jung@samsung.com>
Thu, 10 Jan 2019 04:31:47 +0000 (13:31 +0900)
committer정대현/Tizen Platform Lab(SR)/Staff Engineer/삼성전자 <darrenh.jung@samsung.com>
Fri, 11 Jan 2019 06:13:56 +0000 (15:13 +0900)
Change-Id: I89de9540ae5e82f0b919046c4829d67e09396662

src/common/capability.h
src/common/capability_manager.cc

index 79222c910c0abd3eb3bcaa7e11431f343f6ab978..01c0fa2e7ebf8d38c543d56c0511086a94974078 100644 (file)
@@ -49,14 +49,18 @@ class Capability {
   }
 
   std::string Serialize() const {
+    Json::StreamWriterBuilder builder;
+    return Json::writeString(builder, this->ToJson());
+  }
+
+  Json::Value ToJson() const {
     Json::Value root;
     root["operation"] = this->operation();
     root["uri"] = this->uri();
     root["mime"] = this->mime();
     root["appid"] = this->appid();
     root["pkgid"] = this->pkgid();
-    Json::StreamWriterBuilder builder;
-    return Json::writeString(builder, root);
+    return std::move(root);
   }
 
   bool IsValid() const { return valid_; }
index 3077db3601b5ec2931a041ec267e681766c198f2..7083702710b8b4cb64d3e42f48e958d28d60f89d 100644 (file)
@@ -93,7 +93,7 @@ void CapabilityManager::GetList(GVariant **params) {
         cap.pkgid().c_str(),
         cap.appid().c_str());
   }
-  *params = g_variant_new("a(sss)", builder);
+  *params = g_variant_new("a(sssss)", builder);
   g_variant_builder_unref(builder);
 }
 
@@ -121,7 +121,7 @@ std::string CapabilityManager::PackCapabilities() {
   Json::Value caps;
   LOG(INFO) << "Pack " << list_.size() << " capabilities";
   for (const auto& cap : list_)
-    caps.append(cap.Serialize());
+    caps.append(cap.ToJson());
   root["capabilities"] = caps;
   Json::StreamWriterBuilder builder;
   return Json::writeString(builder, root);
@@ -133,7 +133,6 @@ std::vector<Capability> CapabilityManager::UnpackCapabilities(
   std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
   Json::Value root;
   std::string err;
-
   if (!reader->parse(caps_str.c_str(), caps_str.c_str() + caps_str.size(),
           &root, &err)) {
     LOG(ERROR) << "Failed to parse JSON string of capabilities: " << err;
@@ -143,12 +142,9 @@ std::vector<Capability> CapabilityManager::UnpackCapabilities(
   std::vector<Capability> list;
   const Json::Value caps = root["capabilities"];
   for (unsigned int i = 0; i < caps.size(); ++i) {
-    Capability cap(caps[i].asString());
-    if (!cap.IsValid()) {
-      LOG(ERROR) << "Invalid capability! Ignore it";
-      continue;
-    }
-    list.emplace_back(caps[i].asString());
+    list.emplace_back(caps[i]["operation"].asString(), caps[i]["uri"].asString(),
+        caps[i]["mime"].asString(), caps[i]["appid"].asString(),
+        caps[i]["pkgid"].asString());
   }
 
   LOG(INFO) << "Unpacked " << list.size() << " capabilities";