[Datacontrol] Added missing conversion in insert method
authorPiotr Kosko <p.kosko@samsung.com>
Thu, 26 Nov 2015 12:14:09 +0000 (13:14 +0100)
committerPiotr Kosko <p.kosko@samsung.com>
Tue, 12 Apr 2016 10:26:40 +0000 (19:26 +0900)
[Verification] Code compiles withou errors.
  TCT passrate is 100%.

 //Code below works as expected (return errorCallback)
 //Gets SQL type DataControlConsumerObject
 globalReqId=0;
 var globalSQLConsumer = tizen.datacontrol.getDataControlConsumer(
     "http://tizen.org/datacontrol/provider/DictionaryDataControlProvider", "Dictionary", "SQL");

// insert
 var rowData = { columns : ["WORD", "WORD_DESC"] ,  values  : [undefined, "'tizen2'"] };
 globalReqId++;
 globalSQLConsumer.insert(globalReqId, rowData,
    function(id){console.log("ok : reqid " + id);}, function errorcb(id, error){console.log("error id : " + id + ", error msg : " + error.message);});

Change-Id: I85f827d9208fe680cd6c94e7f6c2092f64d5b0e5
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
src/datacontrol/datacontrol_api.js
src/datacontrol/datacontrol_instance.cc

index 98b755954b313f2e6e554a00b2b3ba029be8e404..5583184ce48a128648598482805d6d3e8436e5bb 100755 (executable)
@@ -112,7 +112,6 @@ DataControlManager.prototype.getDataControlConsumer = function(providerId, dataI
   return getDataControlConsumer.apply(null, arguments);
 };
 
-
 function DataControlConsumerObject() {
   // constructor of DataControlConsumerObject
 }
@@ -134,11 +133,17 @@ SQLDataControlConsumer.prototype.insert = function(reqId, insertionData) {
     {'name': 'errorCallback', 'type': types_.FUNCTION, optional: true, nullable: true}
   ]);
 
+  // doing conversion of all elements to string
+  var ins = validator_.validateArgs([args.insertionData.columns, args.insertionData.values], [
+    {name : 'columns', type : types_.ARRAY, values : types_.STRING},
+    {name : 'values', type : types_.ARRAY, values : types_.STRING}
+  ]);
+
   var nativeParam = {
     'providerId': this.providerId,
     'dataId': this.dataId,
     'reqId': args.reqId,
-    'insertionData': insertionData
+    'insertionData': args.insertionData
   };
   try {
     var syncResult =
index 8e6c258e1972379c32cfd28f519506053aaa2292..7e71cebda416e3542a13e9962e27917143a78b44 100755 (executable)
@@ -565,10 +565,13 @@ void DatacontrolInstance::SQLDataControlConsumerInsert(
         break;
       }
 
-      std::string& columnName = column.get<std::string>();
-      std::string valueString = value.get<std::string>();
+      const std::string& columnName = column.get<std::string>();
+      const std::string& valueString = value.get<std::string>();
 
-      bundle_add_str(b, columnName.c_str(), valueString.c_str());
+      int result = bundle_add_str(b, columnName.c_str(), valueString.c_str());
+      if (BUNDLE_ERROR_NONE != result) {
+        return result;
+      }
     }
 
     return ::data_control_sql_insert(handle, b, requestId);