wrt-plugins-tizen_0.4.23
[framework/web/wrt-plugins-tizen.git] / src / Messaging / ConverterMessage.cpp
index 5bf5509..1818080 100644 (file)
@@ -32,6 +32,7 @@
 #include "JSMessageFolder.h"
 
 #include <JSWebAPIError.h>
+#include <Logger.h>
 
 #if 0 // MESSAGING ATTACHMENT IS BLOCKED
 #include <JSFile.h>
@@ -73,7 +74,7 @@ JSContextRef ConverterMessage::toJSGlobalContext(JSObjectRef arg)
         static_cast<WrtDeviceApis::CommonsJavaScript::PrivateObjectT<void>::Type*>(JSObjectGetPrivate(
                                                               arg));
     if (!priv) {
-        LogError("Private object not initialized");
+        LoggerE("Private object not initialized");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
     }
@@ -120,7 +121,7 @@ JSValueRef ConverterMessage::toJSValueRef(const IMessagePtr& arg)
         return JSMessage::createJSObject(m_context, arg);
 
     default:
-        LogError("unknown type");
+        LoggerE("unknown type");
         Throw(WrtDeviceApis::Commons::ConversionException);
     }
 }
@@ -136,7 +137,7 @@ JSValueRef ConverterMessage::toJSValueRef(const IMessagePtr& arg,
         return JSMessage::createJSObject(m_context, arg, listener);
 
     default:
-        LogError("unknown type");
+        LoggerE("unknown type");
         Throw(WrtDeviceApis::Commons::ConversionException);
     }
 }
@@ -207,19 +208,19 @@ JSValueRef ConverterMessage::keyToJSValue(JSValueRef value,
     JSValueRef retVal = NULL;
 
     if (NULL == value) {
-        LogError("jsValue null");
+        LoggerE("jsValue null");
         Throw(WrtDeviceApis::Commons::ConversionException);
     }
     JSObjectRef argObj = JSValueToObject(m_context, value, NULL);
     if (NULL == argObj) {
-        LogError("conversion to jsobject fail");
+        LoggerE("conversion to jsobject fail");
         Throw(WrtDeviceApis::Commons::ConversionException);
     }
     const JSStringRef keyJSStr = JSStringCreateWithUTF8CString(key.c_str());
     retVal = JSObjectGetProperty(m_context, argObj, keyJSStr, NULL);
     JSStringRelease(keyJSStr);
     if (NULL == retVal) {
-        LogWarning("key \"" << key << "\" not found in JSValue map");
+        LoggerW("key \"" << key << "\" not found in JSValue map");
     }
     // return NULL if no key in map
     return retVal;
@@ -232,9 +233,9 @@ IMessagePtr ConverterMessage::toIMessage(JSValueRef arg)
 
 IMessagePtr ConverterMessage::toIMessage(JSObjectRef arg)
 {
-    LogDebug("message object=" << arg);
+    LoggerD("message object=" << arg);
     if (!arg) {
-        LogError("Object is null");
+        LoggerE("Object is null");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
     }
@@ -243,13 +244,13 @@ IMessagePtr ConverterMessage::toIMessage(JSObjectRef arg)
     JSMessagePrivateObject* priv =
         static_cast<JSMessagePrivateObject*>(JSObjectGetPrivate(arg));
     if (!priv) {
-        LogError("Private object not initialized");
+        LoggerE("Private object not initialized");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
     }
     retVal = priv->getObject();
     if (!retVal) {
-        LogError("Message private object not initialized");
+        LoggerE("Message private object not initialized");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
     }
@@ -265,7 +266,7 @@ IAttachmentPtr ConverterMessage::toIAttachment(JSObjectRef arg)
 {
     if (!arg)
     {
-        LogError("Object is Null");
+        LoggerE("Object is Null");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException, "Private object not initialized");
     }
 
@@ -274,14 +275,14 @@ IAttachmentPtr ConverterMessage::toIAttachment(JSObjectRef arg)
         static_cast<JSMessageAttachmentPrivate*>(JSObjectGetPrivate(arg));
 
     if (!priv) {
-        LogError("Private object not initialized");
+        LoggerE("Private object not initialized");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
         }
 
     retVal = priv->getObject();
         if (!retVal) {
-        LogError("Message private object not initialized");
+        LoggerE("Message private object not initialized");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
         }
@@ -297,7 +298,7 @@ IMessageFolderPtr ConverterMessage::toIMessageFolder(JSObjectRef arg)
 {
     if (!arg)
     {
-        LogError("Object is Null");
+        LoggerE("Object is Null");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException, "Private object not initialized");
     }
 
@@ -306,14 +307,14 @@ IMessageFolderPtr ConverterMessage::toIMessageFolder(JSObjectRef arg)
         static_cast<JSMessageFolderPriv*>(JSObjectGetPrivate(arg));
 
     if (!priv) {
-        LogError("Private object not initialized");
+        LoggerE("Private object not initialized");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
         }
 
     retVal = priv->getObject();
         if (!retVal) {
-        LogError("Message private object not initialized");
+        LoggerE("Message private object not initialized");
         ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
                  "Private object not initialized");
         }
@@ -338,48 +339,58 @@ Recipients ConverterMessage::toRecipients(JSValueRef arg)
     return retVal;
 }
 
-OnMessagesChanged ConverterMessage::toMessageMultifunctions(JSValueRef argument)
-{
-    OnMessagesChanged result;
-    Validator validator(m_context);
-    JSObjectRef objectCallbacks = toJSObjectRef(argument);
-    std::string callbackName = toString(argument);
-    int index = 0;
-
-    LogDebug("Enter\n");
-
-    for (index = 0; index < MESSAGING_MULTI_FUNTION_MAX; index++)
-    {
-        ScopedJSStringRef propName(toJSStringRef(m_callbackNames[index].addedFunction));
-
-        if (JSObjectHasProperty(m_context, objectCallbacks, propName.get()))
-        {
-            LogDebug("Callback name :" << m_callbackNames[index].addedFunction << " "
-            << m_callbackNames[index].updatedFunction << " " << m_callbackNames[index].removedFunction);
-
-            result.messagesAdded = JSUtils::getJSPropertyOrUndefined(m_context, objectCallbacks, m_callbackNames[index].addedFunction);
-            result.messagesUpdated = JSUtils::getJSPropertyOrUndefined(m_context, objectCallbacks, m_callbackNames[index].updatedFunction);
-            result.messagesRemoved = JSUtils::getJSPropertyOrUndefined(m_context, objectCallbacks, m_callbackNames[index].removedFunction);
-            break;
-        }
-
-    }
-
-    if(result.messagesAdded == NULL || result.messagesUpdated == NULL || result.messagesRemoved == NULL)
-    {
-        LogError("OnMessagesChanged is not set");
-        Throw(WrtDeviceApis::Commons::ConversionException);
-    }
-
-    result.functionIndex = index;
-
-    if ((!validator.isNullOrUndefined(result.messagesAdded) && !validator.isCallback(result.messagesAdded)) ||
-    (!validator.isNullOrUndefined(result.messagesUpdated) && !validator.isCallback(result.messagesUpdated)) ||
-    (!validator.isNullOrUndefined(result.messagesRemoved) && !validator.isCallback(result.messagesRemoved)))
-    {
-        LogError("java script call back set error");
-        Throw(WrtDeviceApis::Commons::InvalidArgumentException);
-    }
+OnMessagesChanged ConverterMessage::toMessageMultifunctions(JSValueRef argument, int multiFuntionType)
+{
+       LoggerD("Enter");
+
+       LoggerD("multiFuntionType : " << multiFuntionType);
+
+       OnMessagesChanged result;
+       Validator validator(m_context);
+       JSObjectRef objectCallbacks = toJSObjectRef(argument);
+
+       ScopedJSStringRef propNameAdded(toJSStringRef(m_callbackNames[multiFuntionType].addedFunction));
+       ScopedJSStringRef propNameUpdated(toJSStringRef(m_callbackNames[multiFuntionType].updatedFunction));
+       ScopedJSStringRef propNameRemoved(toJSStringRef(m_callbackNames[multiFuntionType].removedFunction));
+
+       if(JSObjectHasProperty(m_context, objectCallbacks, propNameAdded.get()))
+       {
+               LoggerD("added exist");
+               result.messagesAdded = JSUtils::getJSPropertyOrUndefined(m_context, objectCallbacks, m_callbackNames[multiFuntionType].addedFunction);
+               if (validator.isNullOrUndefined(result.messagesAdded))
+           result.messagesAdded = NULL;
+       else if (!validator.isCallback(result.messagesAdded)) {
+                       LoggerD("is not Callback");
+           ThrowMsg(ConversionException, "1nd argument's onsuccess attribute is not a 'function'");
+       }
+       }
+       if(JSObjectHasProperty(m_context, objectCallbacks, propNameUpdated.get()))
+       {
+               LoggerD("updated exist");
+               result.messagesUpdated = JSUtils::getJSPropertyOrUndefined(m_context, objectCallbacks, m_callbackNames[multiFuntionType].updatedFunction);
+               if (validator.isNullOrUndefined(result.messagesUpdated))
+           result.messagesUpdated = NULL;
+       else if (!validator.isCallback(result.messagesUpdated)) {
+                       LoggerD("is not Callback");
+           ThrowMsg(ConversionException, "2nd argument's onsuccess attribute is not a 'function'");
+       }
+       }
+       if(JSObjectHasProperty(m_context, objectCallbacks, propNameRemoved.get()))
+       {
+               LoggerD("removed exist");
+               result.messagesRemoved = JSUtils::getJSPropertyOrUndefined(m_context, objectCallbacks, m_callbackNames[multiFuntionType].removedFunction);
+               if (validator.isNullOrUndefined(result.messagesRemoved))
+           result.messagesRemoved = NULL;
+       else if (!validator.isCallback(result.messagesRemoved)) {
+                       LoggerD("is not Callback");
+           ThrowMsg(ConversionException, "3nd argument's onsuccess attribute is not a 'function'");
+       }
+       }
+
+       if(result.messagesAdded != NULL || result.messagesUpdated != NULL || result.messagesRemoved != NULL)
+       {
+           result.functionIndex = multiFuntionType;
+       }
 
     return result;
 }
@@ -418,7 +429,7 @@ MessageType ConverterMessage::toMessageType(JSObjectRef arg)
 {
     // convert JSvalue to message type enum
     std::string strMsgType = toString(arg);
-    LogDebug("Messasge Type : " << strMsgType);
+    LoggerD("Messasge Type : " << strMsgType);
 
     if ( strMsgType.compare("messaging.sms") == 0 )
     {
@@ -441,7 +452,7 @@ MessageType ConverterMessage::toMessageType(JSObjectRef arg)
 
 std::string ConverterMessage::toMessageType( long msgtype )
 {
-    LogDebug("Messasge Type : " << msgtype);
+    LoggerD("Messasge Type : " << msgtype);
 
     switch (msgtype)
     {
@@ -458,7 +469,7 @@ std::string ConverterMessage::toMessageType( long msgtype )
 
 MessageType ConverterMessage::toMessageType(std::string arg)
 {
-    LogDebug("Messasge Type : " << arg);
+    LoggerD("Messasge Type : " << arg);
 
     if ( arg.compare("messaging.sms") == 0 )
     {
@@ -475,14 +486,14 @@ MessageType ConverterMessage::toMessageType(std::string arg)
     else
     {
         std::string message = "Message type " + arg + " not supported.";
-        throw DeviceAPI::Common::InvalidValuesException(message.c_str());
+        throw DeviceAPI::Common::TypeMismatchException(message.c_str());
     }
 
 }
 
 std::string ConverterMessage::toMessageStatusType( long msgstatus )
 {
-    LogDebug("Messasge Status : " << msgstatus);
+    LoggerD("Messasge Status : " << msgstatus);
 
     switch (msgstatus)
     {
@@ -504,7 +515,7 @@ std::string ConverterMessage::toMessageStatusType( long msgstatus )
 
 std::string ConverterMessage::convertIntToString( int msgInt )
 {
-    LogDebug("input int : " << msgInt);
+    LoggerD("input int : " << msgInt);
     std::stringstream stream;
     stream << msgInt;
     return stream.str();
@@ -523,7 +534,7 @@ std::vector<IConversationPtr> ConverterMessage::toVectorOfConversation(const JSV
 
     if(    JSGetArrayLength(m_context, jsObject) == 0)
     {
-        LogError("this is empty conversation");
+        LoggerE("this is empty conversation");
         Throw(WrtDeviceApis::Commons::ConversionException);
     }
 
@@ -547,7 +558,7 @@ AddressType ConverterMessage::toAddressType(JSValueRef arg)
     } else if ("bcc" == addressType) {
         return BCC_ADDRESS;
     } else {
-        LogError("unknown address type");
+        LoggerE("unknown address type");
         Throw(WrtDeviceApis::Commons::InvalidArgumentException);
     }
 }