#include "JSConversation.h"
#include "JSMessageFolder.h"
+#include <JSWebAPIError.h>
+#include <Logger.h>
+
#if 0 // MESSAGING ATTACHMENT IS BLOCKED
#include <JSFile.h>
#endif
MessageFunctions ConverterMessage::m_callbackNames[MESSAGING_MULTI_FUNTION_MAX]
{
- {"messagesadded", "messagesupdated", "messagesremoved"},
- {"conversationsadded", "conversationsupdated", "conversationsremoved"},
- {"foldersadded", "foldersupdated", "foldersremoved"}
+ {"messagesadded", "messagesupdated", "messagesremoved"},
+ {"conversationsadded", "conversationsupdated", "conversationsremoved"},
+ {"foldersadded", "foldersupdated", "foldersremoved"}
};
ConverterMessage::ConverterMessage(JSContextRef context) :
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");
}
return JSMessage::createJSObject(m_context, arg);
default:
- LogError("unknown type");
+ LoggerE("unknown type");
Throw(WrtDeviceApis::Commons::ConversionException);
}
}
return JSMessage::createJSObject(m_context, arg, listener);
default:
- LogError("unknown type");
+ LoggerE("unknown type");
Throw(WrtDeviceApis::Commons::ConversionException);
}
}
{
vector<JSValueRef> conversationJS;
- for (size_t i = 0; i < conversations.size(); i++)
- {
- JSValueRef value = JSConversation::createJSObject(m_context, conversations[i]);
+ for (size_t i = 0; i < conversations.size(); i++)
+ {
+ JSValueRef value = JSConversation::createJSObject(m_context, conversations[i]);
conversationJS.push_back(value);
}
{
vector<JSValueRef> messagefolderJS;
- for (size_t i = 0; i < messagefolders.size(); i++)
- {
- JSValueRef value = JSMessageFolder::createJSObject(m_context, messagefolders[i]);
+ for (size_t i = 0; i < messagefolders.size(); i++)
+ {
+ JSValueRef value = JSMessageFolder::createJSObject(m_context, messagefolders[i]);
messagefolderJS.push_back(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;
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");
}
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");
}
IAttachmentPtr ConverterMessage::toIAttachment(JSValueRef arg)
{
- return toIAttachment(toJSObjectRef(arg));
+ return toIAttachment(toJSObjectRef(arg));
}
IAttachmentPtr ConverterMessage::toIAttachment(JSObjectRef arg)
{
- if (!arg)
- {
- LogError("Object is Null");
- ThrowMsg(WrtDeviceApis::Commons::NullPointerException, "Private object not initialized");
- }
+ if (!arg)
+ {
+ LoggerE("Object is Null");
+ ThrowMsg(WrtDeviceApis::Commons::NullPointerException, "Private object not initialized");
+ }
- IAttachmentPtr retVal;
- JSMessageAttachmentPrivate* priv =
+ IAttachmentPtr retVal;
+ JSMessageAttachmentPrivate* priv =
static_cast<JSMessageAttachmentPrivate*>(JSObjectGetPrivate(arg));
- if (!priv) {
- LogError("Private object not initialized");
+ if (!priv) {
+ LoggerE("Private object not initialized");
ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
"Private object not initialized");
- }
+ }
- retVal = priv->getObject();
- if (!retVal) {
- LogError("Message private object not initialized");
+ retVal = priv->getObject();
+ if (!retVal) {
+ LoggerE("Message private object not initialized");
ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
"Private object not initialized");
- }
- return retVal;
+ }
+ return retVal;
}
IMessageFolderPtr ConverterMessage::toIMessageFolder(JSValueRef arg)
{
- return toIMessageFolder(toJSObjectRef(arg));
+ return toIMessageFolder(toJSObjectRef(arg));
}
IMessageFolderPtr ConverterMessage::toIMessageFolder(JSObjectRef arg)
{
- if (!arg)
- {
- LogError("Object is Null");
- ThrowMsg(WrtDeviceApis::Commons::NullPointerException, "Private object not initialized");
- }
+ if (!arg)
+ {
+ LoggerE("Object is Null");
+ ThrowMsg(WrtDeviceApis::Commons::NullPointerException, "Private object not initialized");
+ }
- IMessageFolderPtr retVal;
- JSMessageFolderPriv* priv =
+ IMessageFolderPtr retVal;
+ JSMessageFolderPriv* priv =
static_cast<JSMessageFolderPriv*>(JSObjectGetPrivate(arg));
- if (!priv) {
- LogError("Private object not initialized");
+ if (!priv) {
+ LoggerE("Private object not initialized");
ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
"Private object not initialized");
- }
+ }
- retVal = priv->getObject();
- if (!retVal) {
- LogError("Message private object not initialized");
+ retVal = priv->getObject();
+ if (!retVal) {
+ LoggerE("Message private object not initialized");
ThrowMsg(WrtDeviceApis::Commons::NullPointerException,
"Private object not initialized");
- }
- return retVal;
+ }
+ return retVal;
}
Recipients ConverterMessage::toRecipients(JSValueRef arg)
return retVal;
}
-OnMessagesChanged ConverterMessage::toMessageMultifunctions(JSValueRef argument)
+OnMessagesChanged ConverterMessage::toMessageMultifunctions(JSValueRef argument, int multiFuntionType)
{
+ LoggerD("Enter");
+
+ LoggerD("multiFuntionType : " << multiFuntionType);
+
OnMessagesChanged result;
Validator validator(m_context);
JSObjectRef objectCallbacks = toJSObjectRef(argument);
- std::string callbackName = toString(argument);
- int index = 0;
- LogDebug("Enter\n");
+ ScopedJSStringRef propNameAdded(toJSStringRef(m_callbackNames[multiFuntionType].addedFunction));
+ ScopedJSStringRef propNameUpdated(toJSStringRef(m_callbackNames[multiFuntionType].updatedFunction));
+ ScopedJSStringRef propNameRemoved(toJSStringRef(m_callbackNames[multiFuntionType].removedFunction));
- for (index = 0; index < MESSAGING_MULTI_FUNTION_MAX; index++)
+ if(JSObjectHasProperty(m_context, objectCallbacks, propNameAdded.get()))
{
- 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;
- }
-
+ 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(result.messagesAdded == NULL || result.messagesUpdated == NULL || result.messagesRemoved == NULL)
+ if(JSObjectHasProperty(m_context, objectCallbacks, propNameUpdated.get()))
{
- LogError("OnMessagesChanged is not set");
- Throw(WrtDeviceApis::Commons::ConversionException);
+ 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'");
+ }
}
- 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)))
+ if(result.messagesAdded != NULL || result.messagesUpdated != NULL || result.messagesRemoved != NULL)
{
- LogError("java script call back set error");
- Throw(WrtDeviceApis::Commons::InvalidArgumentException);
+ result.functionIndex = multiFuntionType;
}
- return result;
+ return result;
}
MessageType ConverterMessage::toMessageType(JSValueRef arg)
{
- return toMessageType(toJSObjectRef(arg));
+ return toMessageType(toJSObjectRef(arg));
}
MessageType ConverterMessage::toMessageType(JSObjectRef arg)
{
// convert JSvalue to message type enum
- std::string strMsgType = toString(arg);
- LogDebug("Messasge Type : " << strMsgType);
+ std::string strMsgType = toString(arg);
+ LoggerD("Messasge Type : " << strMsgType);
- if ( strMsgType.compare("messaging.sms") == 0 )
- {
- return SMS;
- }
- else if ( strMsgType.compare("messaging.mms") == 0 )
- {
- return MMS;
- }
- else if ( strMsgType.compare("messaging.email") == 0 )
- {
- return EMAIL;
- }
- else
- {
- ThrowMsg(WrtDeviceApis::Commons::ConversionException, "message type not supported");
- }
+ if ( strMsgType.compare("messaging.sms") == 0 )
+ {
+ return SMS;
+ }
+ else if ( strMsgType.compare("messaging.mms") == 0 )
+ {
+ return MMS;
+ }
+ else if ( strMsgType.compare("messaging.email") == 0 )
+ {
+ return EMAIL;
+ }
+ else
+ {
+ ThrowMsg(WrtDeviceApis::Commons::ConversionException, "message type not supported");
+ }
}
std::string ConverterMessage::toMessageType( long msgtype )
{
- LogDebug("Messasge Type : " << msgtype);
+ LoggerD("Messasge Type : " << msgtype);
+
+ switch (msgtype)
+ {
+ case SMS:
+ return "messaging.sms";
+ case MMS:
+ return "messaging.mms";
+ case EMAIL:
+ return "messaging.email";
+ default :
+ ThrowMsg(WrtDeviceApis::Commons::ConversionException, "message type not supported");
+ }
+}
+
+MessageType ConverterMessage::toMessageType(std::string arg)
+{
+ LoggerD("Messasge Type : " << arg);
+
+ if ( arg.compare("messaging.sms") == 0 )
+ {
+ return SMS;
+ }
+ else if ( arg.compare("messaging.mms") == 0 )
+ {
+ return MMS;
+ }
+ else if ( arg.compare("messaging.email") == 0 )
+ {
+ return EMAIL;
+ }
+ else
+ {
+ std::string message = "Message type " + arg + " not supported.";
+ throw DeviceAPI::Common::TypeMismatchException(message.c_str());
+ }
- switch (msgtype)
- {
- case SMS:
- return "messaging.sms";
- case MMS:
- return "messaging.mms";
- case EMAIL:
- return "messaging.email";
- default :
- ThrowMsg(WrtDeviceApis::Commons::ConversionException, "message type not supported");
- }
}
std::string ConverterMessage::toMessageStatusType( long msgstatus )
{
- LogDebug("Messasge Status : " << msgstatus);
-
- switch (msgstatus)
- {
- case MESSAGE_STATUS_SENT:
- return "SENT";
- case MESSAGE_STATUS_SENDING:
- return "SENDING";
- case MESSAGE_STATUS_FAILED:
- return "FAILED";
- case MESSAGE_STATUS_DRAFT:
- return "DRAFT";
- case MESSAGE_STATUS_CREATED:
- case MESSAGE_STATUS_LOADED:
- return "";
- default :
- ThrowMsg(WrtDeviceApis::Commons::ConversionException, "message status not supported");
- }
+ LoggerD("Messasge Status : " << msgstatus);
+
+ switch (msgstatus)
+ {
+ case MESSAGE_STATUS_SENT:
+ return "SENT";
+ case MESSAGE_STATUS_SENDING:
+ return "SENDING";
+ case MESSAGE_STATUS_FAILED:
+ return "FAILED";
+ case MESSAGE_STATUS_DRAFT:
+ return "DRAFT";
+ case MESSAGE_STATUS_CREATED:
+ case MESSAGE_STATUS_LOADED:
+ return "";
+ default :
+ ThrowMsg(WrtDeviceApis::Commons::ConversionException, "message status not supported");
+ }
}
std::string ConverterMessage::convertIntToString( int msgInt )
{
- LogDebug("input int : " << msgInt);
- std::stringstream stream;
- stream << msgInt;
- return stream.str();
+ LoggerD("input int : " << msgInt);
+ std::stringstream stream;
+ stream << msgInt;
+ return stream.str();
}
IConversationPtr ConverterMessage::toConversation(const JSValueRef& arg)
{
- return JSConversation::getConversation(m_context, arg);
+ return JSConversation::getConversation(m_context, arg);
}
std::vector<IConversationPtr> ConverterMessage::toVectorOfConversation(const JSValueRef& arg)
{
- std::vector<IConversationPtr> result;
+ std::vector<IConversationPtr> result;
- JSObjectRef jsObject = toJSObjectRef(arg);
+ JSObjectRef jsObject = toJSObjectRef(arg);
- if( JSGetArrayLength(m_context, jsObject) == 0)
- {
- LogError("this is empty conversation");
- Throw(WrtDeviceApis::Commons::ConversionException);
- }
+ if( JSGetArrayLength(m_context, jsObject) == 0)
+ {
+ LoggerE("this is empty conversation");
+ Throw(WrtDeviceApis::Commons::ConversionException);
+ }
- for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i)
- {
+ for (std::size_t i = 0; i < JSGetArrayLength(m_context, jsObject); ++i)
+ {
JSValueRef element = JSGetArrayElement(m_context, jsObject, i);
result.push_back(toConversation(element));
}
} else if ("bcc" == addressType) {
return BCC_ADDRESS;
} else {
- LogError("unknown address type");
+ LoggerE("unknown address type");
Throw(WrtDeviceApis::Commons::InvalidArgumentException);
}
}
if (Validator(m_context).isCallback(arg)) {
return arg;
} else if (JSValueIsNull(m_context,
- arg) || JSValueIsUndefined(m_context, arg)) {
+ arg) || JSValueIsUndefined(m_context, arg)) {
ThrowMsg(InvalidArgumentException, "JS null passed as function.");
}
ThrowMsg(ConversionException, "Not a function nor JS null.");