[Alarm] Changed alarm.id property to be read only.
authorTomasz Marciniak <t.marciniak@samsung.com>
Tue, 10 Mar 2015 13:27:53 +0000 (14:27 +0100)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Wed, 11 Mar 2015 10:02:45 +0000 (19:02 +0900)
[Verification] Code compiles without errors.
alarm.id property cannot be changed now.

Change-Id: I5284361905945749a313bdb92c7bb965d855b4db
Signed-off-by: Tomasz Marciniak <t.marciniak@samsung.com>
src/alarm/alarm_api.js
src/alarm/alarm_manager.cc

index 85c3b487e355336bef9456203741716f6764c973..156808faedb6767e376b10847182bd417f203cd3 100644 (file)
@@ -17,10 +17,26 @@ var AlarmManager = function () {
     });
 };
 
-//internal /////////////////////////////////////////////////////////////
-//this function should be kept in internal scope
-function InternalData(id) {
-    this.id = id;
+function InternalData_(data) {
+    if (!(this instanceof InternalData_)) {
+        return new InternalData_(data);
+    }
+
+    for(var key in data) {
+        if (data.hasOwnProperty(key)) {
+            this[key] = data[key];
+        }
+    }
+}
+
+function UpdateInternalData_(internal, data) {
+    var values = InternalData_(data);
+
+    for(var key in data) {
+        if (values.hasOwnProperty(key) && internal.hasOwnProperty(key)) {
+            internal[key] = values;
+        }
+    }
 }
 
 //class AlarmManager ////////////////////////////////////////////////////
@@ -66,11 +82,7 @@ AlarmManager.prototype.add = function () {
     if (native.isFailure(result)) {
         throw native.getErrorObject(result);
     } else {
-        Object.defineProperties(args.alarm, {
-            id: {
-                value: Converter.toString(native.getResultObject(result).alarm_id),
-                writable: false, enumerable: true, configurable: true}
-        });
+        UpdateInternalData_(args.alarm, native.getResultObject(result));
     }
 };
 
@@ -112,14 +124,12 @@ AlarmManager.prototype.get = function () {
     } else {
         result = native.getResultObject(result);
         if ('AlarmRelative' === result.type) {
-            return new tizen.AlarmRelative(result.delay, result.period,
-                    new InternalData(result.id));
+            return new tizen.AlarmRelative(result.delay, result.period, InternalData_(result));
         } else {
             var date = new Date(result.year, result.month, result.day,
                     result.hour, result.min, result.sec);
 
-            return new tizen.AlarmAbsolute(date, result.second,
-                    new InternalData(result.id));
+            return new tizen.AlarmAbsolute(date, result.second, InternalData_(result));
         }
     }
 };
@@ -134,13 +144,11 @@ AlarmManager.prototype.getAll = function () {
         var md = [];
         data.forEach(function (i) {
             if ('AlarmRelative'=== i.type) {
-                md.push(new tizen.AlarmRelative(i.delay, i.period,
-                        new InternalData(i.id)));
+                md.push(new tizen.AlarmRelative(i.delay, i.period, InternalData_(i)));
             } else {
                 var date = new Date(i.year, i.month, i.day,
                         i.hour, i.min, i.sec);
-                md.push(new tizen.AlarmAbsolute(date, i.second,
-                        new InternalData(i.id)));
+                md.push(new tizen.AlarmAbsolute(date, i.second, InternalData_(i)));
             }
         });
         return md;
@@ -151,12 +159,24 @@ AlarmManager.prototype.getAll = function () {
 function Alarm(id) {
     var m_id = null;
 
-    if (!T.isNullOrUndefined(id)) {
-        m_id = Converter.toString(id);
+    if (!T.isNullOrUndefined(id) && id instanceof InternalData_) {
+        m_id = id.id;
     }
 
+    var _internal = {
+        'id' : m_id
+    };
+
     Object.defineProperties(this, {
-        id:    { value: m_id, writable: false, enumerable: true, configurable: true}
+        id: {
+            get: function () {return _internal.id;},
+            set: function (value) {
+                if (value instanceof InternalData_) {
+                    _internal.id = value.id;
+                }
+            },
+            enumerable: true
+        }
     });
 }
 //class AlarmRelative //////////////////////////////////////////////////
@@ -171,9 +191,8 @@ tizen.AlarmRelative = function(delay, period, internal) {
     if (arguments.length >= 2) {
         m_period = Converter.toLong(period, true);
     }
-    if (internal instanceof InternalData) {
-        Alarm.call(this, internal.id);
-    }
+
+    Alarm.call(this, internal);
 
     Object.defineProperties(this, {
         delay:     { value: m_delay, writable: false, enumerable: true},
@@ -233,9 +252,7 @@ tizen.AlarmAbsolute = function(date, second, internal) {
             }
         }
 
-        if (internal instanceof InternalData) {
-            Alarm.call(this, internal.id);
-        }
+        Alarm.call(this, internal);
     } else {
         m_period = undefined;
     }
index 838cf9a6ae46956971607c2f9962eb85ce407db4..e32ae5096bb28fd400120d76282e4fefd2ecad90 100644 (file)
@@ -210,7 +210,7 @@ void AlarmManager::Add(const picojson::value& args, picojson::object& out) {
   picojson::value result = picojson::value(picojson::object());
   picojson::object& result_obj = result.get<picojson::object>();
 
-  result_obj.insert(std::make_pair("alarm_id", picojson::value(std::to_string(alarm_id))));
+  result_obj.insert(std::make_pair("id", picojson::value(std::to_string(alarm_id))));
   ReportSuccess(result, out);
 }