[Convergence] Return copy of the array. 41/100041/1
authorTomasz Marciniak <t.marciniak@samsung.com>
Fri, 25 Nov 2016 01:50:42 +0000 (10:50 +0900)
committerTomasz Marciniak <t.marciniak@samsung.com>
Fri, 25 Nov 2016 01:50:42 +0000 (10:50 +0900)
[Verification] Code compiles.
service array element can not be changed now.

Change-Id: Ic121e12c29df5875f3fcd2e7f081746291a8d2e0
Signed-off-by: Tomasz Marciniak <t.marciniak@samsung.com>
src/convergence/convergence_api.js

index 022cb659c44ef46c439dc4c4fc2cd5227a3150ed..34ea05c1a01b280321daabf6db89c1f44bc37f14 100644 (file)
@@ -85,6 +85,12 @@ function getServiceConnectionStateName(connectionStateNumber) {
 
 function Device(id_, name_, type_, services_) {
   validator_.isConstructorCall(this, Device);
+
+  var services = [];
+  if (services_) {
+    services = services_;
+  }
+
   Object.defineProperties(this, {
     id: {
       value: id_,
@@ -102,9 +108,9 @@ function Device(id_, name_, type_, services_) {
       enumerable: true
     },
     services: {
-      value: services_,
-      writable: false,
-      enumerable: true
+      enumerable: true,
+      set : function(){},
+      get : function(){ return services.slice(); }
     },
   });
 }
@@ -146,10 +152,9 @@ ConvergenceManager.prototype.startDiscovery = function(successCallback,
           return;
         }
 
-        // Create an instance of the device
-        var d = new Device(result.device.id, result.device.name, result.device.type, []);
-
         console.log('Service number: ' + result.device.services.length);
+        var services = [];
+        var id = result.device.id;
         for (var i = 0; i < result.device.services.length; ++i) {
           var service_data = result.device.services[i];
           var s;
@@ -166,10 +171,13 @@ ConvergenceManager.prototype.startDiscovery = function(successCallback,
 
           s.connectionState = getServiceConnectionStateName(
             result.device.services[i].connectionState);
-          s._deviceId = d.id;
-          d.services.push(s);
+          s._deviceId = id;
+          services.push(s);
         }
 
+        // Create an instance of the device
+        var d = new Device(id, result.device.name, result.device.type, services);
+
         // Store newly found device internally
         convergenceDevices.push(d);