[Messaging] Fix method getValueFromJSONObject
authorRobert Karolak <r.karolak@samsung.com>
Tue, 30 Dec 2014 14:55:53 +0000 (15:55 +0100)
committerRobert Karolak <r.karolak@samsung.com>
Tue, 30 Dec 2014 15:01:03 +0000 (00:01 +0900)
[Verification] more tests passes

Change-Id: Id49bba51fe937f5514e6c37ab1da63c2acfd3d30
Signed-off-by: Robert Karolak <r.karolak@samsung.com>
src/messaging/messaging_instance.cc
src/messaging/messaging_util.cc
src/messaging/messaging_util.h

index b361981e6f6d5137d7b62d09c2725b6309e918ad..eb2d4fe3ef606911030698f73eb255c78ef065e5 100644 (file)
@@ -374,6 +374,7 @@ void MessagingInstance::MessageStorageFindMessages(const picojson::value& args,
     callback->setLimit(limit);
     callback->setOffset(offset);
     callback->setAccountId(serviceId);
+    callback->setSortMode(sortMode);
 
     auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
     picojson::object& obj = json->get<picojson::object>();
@@ -461,6 +462,7 @@ void MessagingInstance::MessageStorageFindConversations(const picojson::value& a
     callback->setLimit(limit);
     callback->setOffset(offset);
     callback->setAccountId(serviceId);
+    callback->setSortMode(sortMode);
 
     auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
     picojson::object& obj = json->get<picojson::object>();
index af0ca6b9d7f2e2db0c34f76a13ed0490987bb088..74a3287f22dae7be676b9d3fa3bcb56a130cb913 100644 (file)
@@ -557,6 +557,13 @@ tizen::SortModePtr MessagingUtil::jsonToSortMode(const picojson::object& json)
     LoggerD("Entered");
     using namespace tizen;
 
+    picojson::value value;
+    try{
+        value = json.at(JSON_TO_SORT);
+    } catch(const std::out_of_range& e){
+        return SortModePtr();
+    }
+
     auto dataSort = getValueFromJSONObject<picojson::object>(json, JSON_TO_SORT);
     auto name = getValueFromJSONObject<std::string>(dataSort, JSON_TO_ATTRIBUTE_NAME);
     auto ord = getValueFromJSONObject<std::string>(dataSort, JSON_TO_ORDER);
@@ -602,7 +609,6 @@ tizen::AttributeFilterPtr MessagingUtil::jsonToAttributeFilter(const picojson::o
     auto attributePtr = AttributeFilterPtr(new AttributeFilter(name));
     attributePtr->setMatchFlag(filterMatch);
     attributePtr->setMatchValue(AnyPtr(new Any(filter.at(JSON_TO_MATCH_VALUE))));
-
     return attributePtr;
 }
 
index 5f6490c1142058ddd8179f6f3675a31208df53ac..53e67e75ee0433b51e5b097b4bd157a032250b9f 100644 (file)
@@ -8,6 +8,7 @@
 #include <string>
 #include <vector>
 #include <memory>
+#include <stdexcept>
 #include "common/logger.h"
 #include "common/picojson.h"
 
@@ -122,8 +123,15 @@ public:
     template <class T>
     static T getValueFromJSONObject(const picojson::object& v, const std::string& key)
     {
-        if (v.at(key).is<T>()) {
-            return v.at(key).get<T>();
+        picojson::value value;
+        try{
+            value = v.at(key);
+        } catch(const std::out_of_range& e){
+            return T();
+        }
+
+        if (value.is<T>()) {
+            return value.get<T>();
         } else {
             return T();
         }