Update example daemons to use the new component/trait APIs

Using AddStateDefinitionsFromJson/AddComponent instead of old and
deprecated AddCommandDefinitions.../AddStateDefinitions... methods.

BUG: 26070118, 25917541
Change-Id: I1f264c737cc19a577a0026e6d6212d63bdc480cf
Reviewed-on: https://weave-review.googlesource.com/1802
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/examples/daemon/lock/lock.cc b/examples/daemon/lock/lock.cc
index 10bea00..a4bd213 100644
--- a/examples/daemon/lock/lock.cc
+++ b/examples/daemon/lock/lock.cc
@@ -25,6 +25,39 @@
     : EnumToStringMap(lockstate::kLockMapMethod) {}
 }  // namespace weave
 
+namespace {
+
+const char kTraits[] = R"({
+  "lock": {
+    "commands": {
+      "setConfig": {
+        "minimalRole": "user",
+        "parameters": {
+          "lockedState": {
+            "type": "string",
+            "enum": [ "locked", "unlocked" ]
+          }
+        }
+      }
+    },
+    "state": {
+      "lockedState": {
+        "type": "string",
+        "enum": [ "locked", "unlocked", "partiallyLocked" ]
+      },
+      "isLockingSupported": { "type": "boolean" }
+    }
+  }
+})";
+
+const char kDefaultState[] = R"({
+  "lock":{"isLockingSupported": true}
+})";
+
+const char kComponent[] = "lock";
+
+}  // anonymous namespace
+
 // LockHandler is a command handler example that shows
 // how to handle commands for a Weave lock.
 class LockHandler {
@@ -33,35 +66,13 @@
   void Register(weave::Device* device) {
     device_ = device;
 
-    device->AddStateDefinitionsFromJson(R"({
-      "lock": {
-        "lockedState": {
-          "type": "string",
-          "enum": ["locked", "unlocked", "partiallyLocked"]
-        },
-        "isLockingSupported": {"type": "boolean"}
-      }
-    })");
+    device->AddTraitDefinitionsFromJson(kTraits);
+    CHECK(device->AddComponent(kComponent, {"lock"}, nullptr));
+    CHECK(device->SetStatePropertiesFromJson(kComponent, kDefaultState,
+                                             nullptr));
+    UpdateLockState();
 
-    device->SetStatePropertiesFromJson(R"({
-      "lock":{
-        "lockedState": "locked",
-        "isLockingSupported": true
-      }
-    })",
-                                       nullptr);
-
-    device->AddCommandDefinitionsFromJson(R"({
-      "lock": {
-        "setConfig":{
-          "minimalRole": "user",
-          "parameters": {
-            "lockedState": {"type": "string", "enum":["locked", "unlocked"]}
-          }
-        }
-      }
-    })");
-    device->AddCommandHandler("lock.setConfig",
+    device->AddCommandHandler(kComponent, "lock.setConfig",
                               base::Bind(&LockHandler::OnLockSetConfig,
                                          weak_ptr_factory_.GetWeakPtr()));
   }
@@ -104,10 +115,9 @@
   }
 
   void UpdateLockState() {
-    base::DictionaryValue state;
     std::string updated_state = weave::EnumToString(lock_state_);
-    state.SetString("lock.lockedState", updated_state);
-    device_->SetStateProperties(state, nullptr);
+    device_->SetStateProperty(kComponent, "lock.lockedState",
+                              base::StringValue{updated_state}, nullptr);
   }
 
   weave::Device* device_{nullptr};