Fix initializing logic of remote scene list
authorMinji Park <minjii.park@samsung.com>
Fri, 26 Feb 2016 07:04:02 +0000 (16:04 +0900)
committerUze Choi <uzchoi@samsung.com>
Mon, 29 Feb 2016 04:52:25 +0000 (04:52 +0000)
- modify initialization of existing remote scenes
(get scene information from member resource -> from collection resource)

Change-Id: I0dfde1199950ef799ba620ed392608eeb5ae4a35
Signed-off-by: Minji Park <minjii.park@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/5219
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Hun-je Yeon <hunje.yeon@samsung.com>
Reviewed-by: Uze Choi <uzchoi@samsung.com>
service/scene-manager/include/RemoteSceneCollection.h
service/scene-manager/src/RemoteSceneCollection.cpp
service/scene-manager/src/RemoteSceneList.cpp

index f09d90d..f4b7436 100644 (file)
@@ -68,7 +68,9 @@ namespace OIC
                     std::shared_ptr< SceneCollectionResourceRequestor >,
                     const std::string &id, const std::string &name);
 
-                void initializeRemoteSceneCollection(const std::vector< RCSResourceAttributes > &,
+                void addExistingRemoteScenes(const std::vector< std::string > &);
+
+                void initializeRemoteScenes(const std::vector< RCSResourceAttributes > &,
                                                      const std::string &);
 
                 RemoteScene::Ptr createRemoteSceneInstance(const std::string &);
index de932a5..79642a0 100644 (file)
@@ -47,7 +47,7 @@ namespace OIC
             {
                 throw RCSInvalidParameterException("Scene name is an empty string");
             }
-            
+
             SceneCollectionResourceRequestor::InternalSceneRequestCallback internalCB
                 = std::bind(&RemoteSceneCollection::onSceneAddedRemoved, this,
                             std::placeholders::_1, std::placeholders::_2,
@@ -100,7 +100,15 @@ namespace OIC
             return m_id;
         }
 
-        void RemoteSceneCollection::initializeRemoteSceneCollection(
+        void RemoteSceneCollection::addExistingRemoteScenes(const std::vector< std::string > &scenes)
+        {
+            for (const auto &scenename : scenes)
+            {
+                createRemoteSceneInstance(scenename);
+            }
+        }
+
+        void RemoteSceneCollection::initializeRemoteScenes(
             const std::vector< RCSResourceAttributes > &MemberReps, const std::string &host)
         {
             try
@@ -118,14 +126,9 @@ namespace OIC
                         RemoteScene::Ptr pRemoteScene = nullptr;
 
                         auto remoteScene = m_remoteScenes.find(sceneName);
-                        if (remoteScene == m_remoteScenes.end())
-                        {
-                            pRemoteScene = createRemoteSceneInstance(sceneName);
-                        }
-                        else
-                        {
-                            pRemoteScene = m_remoteScenes.at(sceneName);
-                        }
+                        if (remoteScene == m_remoteScenes.end()) return;
+
+                        pRemoteScene = m_remoteScenes.at(sceneName);
 
                         std::string targetHref
                             = attrs.at(SCENE_KEY_PAYLOAD_LINK).get< RCSResourceAttributes >().
@@ -155,7 +158,7 @@ namespace OIC
             RemoteScene::Ptr pNewRemoteScene(new RemoteScene(name, m_requestor));
 
             m_remoteScenes[name] = pNewRemoteScene;
-            
+
             return pNewRemoteScene;
         }
 
index 8802bdc..54378d9 100644 (file)
@@ -144,7 +144,10 @@ namespace OIC
                                     collection.at(SCENE_KEY_ID).get< std::string >(),
                                     collection.at(SCENE_KEY_NAME).get< std::string >());
 
-                    newCollection->initializeRemoteSceneCollection(itr.second, host);
+                    newCollection->addExistingRemoteScenes(
+                        collection.at(SCENE_KEY_SCENEVALUES).get< std::vector< std::string > >());
+
+                    newCollection->initializeRemoteScenes(itr.second, host);
                 }
             }
             catch (const std::exception &e)
@@ -360,7 +363,7 @@ namespace OIC
                 });
 
                 collection->
-                    initializeRemoteSceneCollection(childrenAttr, host);
+                    initializeRemoteScenes(childrenAttr, host);
             }
             else
             {