Update change log and spec for wrt-plugins-tizen_0.4.59
[framework/web/wrt-plugins-tizen.git] / src / Contact / JSContactManager.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 8e1555e..601d06d
@@ -30,8 +30,6 @@
 #include <CommonsJavaScript/Converter.h>
 #include <CommonsJavaScript/JSUtils.h>
 #include <CommonsJavaScript/JSPendingOperation.h>
-#include <JSTizenExceptionFactory.h>
-#include <JSTizenException.h>
 #include <SecurityExceptions.h>
 #include <FilterConverter.h>
 #include "ContactFactory.h"
 #include "JSContactManagerChangeCallbackManager.h"
 #include "ContactFilterConverter.h"
 #include <ArgumentValidator.h>
-#include <JSWebAPIError.h>
+#include <JSWebAPIErrorFactory.h>
 #include <TimeTracer.h>
 #include <Logger.h>
+#include <Export.h>
+#include "ContactUtility.h"
 
 namespace DeviceAPI {
 namespace Contact {
@@ -102,7 +102,7 @@ JSStaticFunction JSContactManager::m_function[] = {
        { 0, 0, 0 }
 };
 
-JSClassRef JSContactManager::getClassRef()
+JSClassRef DLL_EXPORT JSContactManager::getClassRef()
 {
        if (!m_classRef) {
                m_classRef = JSClassCreate(&m_classInfo);
@@ -155,7 +155,7 @@ JSValueRef JSContactManager::getAddressBooks(JSContextRef context,
                gContext = controller->getContext();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_ADDRESS_BOOKS);
@@ -169,13 +169,13 @@ JSValueRef JSContactManager::getAddressBooks(JSContextRef context,
                if(errorObj)
                        js2ndParamIsFunction = true;
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
        JSCallbackManagerPtr callbackManager = JSCallbackManager::createObject(gContext);
@@ -201,7 +201,7 @@ JSValueRef JSContactManager::getAddressBooks(JSContextRef context,
                ContactAsyncCallbackManagerSingleton::Instance().registerCallbackManager(callbackManager, gContext);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -222,7 +222,7 @@ JSValueRef JSContactManager::getDefaultAddressBook(JSContextRef context,
                static_cast<ContactManagerController*>(JSObjectGetPrivate(thisObject));
        if (!priv) {
                LoggerE("private object is null");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_DEFAULT_ADDRESS_BOOK);
@@ -235,7 +235,7 @@ JSValueRef JSContactManager::getDefaultAddressBook(JSContextRef context,
                gContext = priv->getContext();
        } Catch(Exception) {
                LoggerE("contact manager or context is null");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(gContext);
@@ -248,7 +248,7 @@ JSValueRef JSContactManager::getDefaultAddressBook(JSContextRef context,
                contactManager->getDefaultAddressBook(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        if (!dplEvent->getResult() || !dplEvent->getDefaultAddressBookIsSet())
@@ -260,13 +260,13 @@ JSValueRef JSContactManager::getDefaultAddressBook(JSContextRef context,
                case ExceptionCodes::InvalidArgumentException:
                        LoggerE("Not Found error");
                        oss << "No default address book";
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::NOT_FOUND_ERROR, oss.str());
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }
@@ -278,7 +278,7 @@ JSValueRef JSContactManager::getDefaultAddressBook(JSContextRef context,
                resultValue = converter->toJSValueRef(defaultAddressBook);
        } Catch(Exception){
                LoggerE("Conversion error.");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -298,7 +298,7 @@ JSValueRef JSContactManager::getUnifiedAddressBook(JSContextRef context,
                static_cast<ContactManagerController*>(JSObjectGetPrivate(thisObject));
        if (!priv) {
                LoggerE("private object is null");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_UNIFIED_ADDRESS_BOOK);
@@ -311,7 +311,7 @@ JSValueRef JSContactManager::getUnifiedAddressBook(JSContextRef context,
                gContext = priv->getContext();
        } Catch(Exception) {
                LoggerE("contact manager or context is null");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(gContext);
@@ -324,7 +324,7 @@ JSValueRef JSContactManager::getUnifiedAddressBook(JSContextRef context,
                contactManager->getUnifiedAddressBook(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        if (!dplEvent->getResult() || !dplEvent->getUnifiedAddressBookIsSet())
@@ -336,13 +336,13 @@ JSValueRef JSContactManager::getUnifiedAddressBook(JSContextRef context,
                case ExceptionCodes::InvalidArgumentException:
                        LoggerE("Not Found error");
                        oss << "No default address book";
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::NOT_FOUND_ERROR, oss.str());
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }
@@ -354,7 +354,7 @@ JSValueRef JSContactManager::getUnifiedAddressBook(JSContextRef context,
                resultValue = converter->toJSValueRef(unifiedAddressBook);
        } Catch(Exception){
                LoggerE("Conversion error.");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -374,7 +374,7 @@ JSValueRef JSContactManager::getAddressBook(JSContextRef context,
                static_cast<ContactManagerController*>(JSObjectGetPrivate(thisObject));
        if (!priv) {
                LoggerE("private object is null");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_GET_ADDRESS_BOOK);
@@ -387,7 +387,7 @@ JSValueRef JSContactManager::getAddressBook(JSContextRef context,
                gContext = priv->getContext();
        } Catch(Exception) {
                LoggerE("contact manager or context is null");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(gContext);
@@ -397,13 +397,13 @@ JSValueRef JSContactManager::getAddressBook(JSContextRef context,
                ArgumentValidator validator(context, argumentCount, arguments);
                addressBookId = validator.toString(0, false);
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
        EventContactManagerGetAddressBookPtr dplEvent(new EventContactManagerGetAddressBook());
@@ -415,7 +415,7 @@ JSValueRef JSContactManager::getAddressBook(JSContextRef context,
                contactManager->getAddressBook(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        if (!dplEvent->getResult() || !dplEvent->getAddressBookIsSet())
@@ -426,14 +426,14 @@ JSValueRef JSContactManager::getAddressBook(JSContextRef context,
                case ExceptionCodes::NotFoundException:
                case ExceptionCodes::InvalidArgumentException:
                        LoggerE("Not Found error : " << addressBookId);
-                       oss << "No Contact id '" << addressBookId << "'";
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::NOT_FOUND_ERROR, oss.str());
+                       oss << "No addressBookId id '" << addressBookId << "'";
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }
@@ -445,7 +445,7 @@ JSValueRef JSContactManager::getAddressBook(JSContextRef context,
                resultValue = converter->toJSValueRef(addressBook);
        } Catch(Exception){
                LoggerE("Conversion error.");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -472,18 +472,12 @@ JSValueRef JSContactManager::get(JSContextRef context,
                addressBook = controller->getObject();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_GET);
        TIZEN_SYNC_ACCESS_HANDLER(status, context, exception);
 
-       if (argumentCount < 1) {
-               /* 1st Argument must be string. */
-               LoggerE("1st argument must not be undefined.");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::NOT_FOUND_ERROR, "No Contact id 'undefined'");
-       }
-
        std::string id;
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(context);
@@ -491,15 +485,18 @@ JSValueRef JSContactManager::get(JSContextRef context,
                ArgumentValidator validator(context, argumentCount, arguments);
                id = validator.toString(0, false);
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
+       if(!ContactUtility::checkStrIsUInt(id))
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::INVALID_VALUES_ERROR, "");
+
        EventContactManagerGetPtr dplEvent(new EventContactManagerGet());
 
        dplEvent->setId(id);
@@ -509,7 +506,7 @@ JSValueRef JSContactManager::get(JSContextRef context,
                addressBook->get(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        if (!dplEvent->getResult() || !dplEvent->getPersonIsSet())
@@ -521,13 +518,13 @@ JSValueRef JSContactManager::get(JSContextRef context,
                case ExceptionCodes::InvalidArgumentException:
                        LoggerE("Not Found error : " << id);
                        oss << "No Person id '" << id << "'";
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::NOT_FOUND_ERROR, oss.str());
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }
@@ -539,7 +536,7 @@ JSValueRef JSContactManager::get(JSContextRef context,
                result = converter->toJSValueRef(person);
        } Catch(Exception) {
                LoggerE("Error on conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -566,7 +563,7 @@ JSValueRef JSContactManager::update(JSContextRef context,
                addressBook = controller->getObject();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_UPDATE);
@@ -576,13 +573,13 @@ JSValueRef JSContactManager::update(JSContextRef context,
                ArgumentValidator validator(context, argumentCount, arguments);
                validator.toObject(0, false);
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
        PersonPtr person(NULL);
@@ -594,7 +591,7 @@ JSValueRef JSContactManager::update(JSContextRef context,
                person = converter->toPerson(arguments[0]);
        } Catch(Exception) {
                LoggerE("Error on conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "1st argument is not a 'Contact object'");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "1st argument is not a 'Contact object'");
        }
 
        EventContactManagerUpdatePtr dplEvent(new EventContactManagerUpdate());
@@ -606,7 +603,7 @@ JSValueRef JSContactManager::update(JSContextRef context,
                addressBook->update(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        if (!dplEvent->getResult())
@@ -616,14 +613,14 @@ JSValueRef JSContactManager::update(JSContextRef context,
                {
                case ExceptionCodes::NotFoundException:
                case ExceptionCodes::InvalidArgumentException:
-                       oss << "No Contact id '" << person->getId() << "'";
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::NOT_FOUND_ERROR, oss.str());
+                       oss << "No id '" << person->getId() << "'";
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }
@@ -657,8 +654,8 @@ JSValueRef JSContactManager::updateBatch(JSContextRef context,
                gContext = controller->getContext();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception,
-                               JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception,
+                               JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_UPDATE_BATCH);
@@ -676,13 +673,13 @@ JSValueRef JSContactManager::updateBatch(JSContextRef context,
                if(errorObj)
                        js3rdParamIsFunction = true;
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(context);
@@ -702,8 +699,8 @@ JSValueRef JSContactManager::updateBatch(JSContextRef context,
                dplEvent->setPersons(converter->toPersonArray(arguments[0]));
        } Catch(ConversionException) {
                LoggerE("Error on conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception,
-                               JSTizenException::TYPE_MISMATCH_ERROR, "3rd argument must be a 'function' or a 'null'");
+               return JSWebAPIErrorFactory::postException(context, exception,
+                               JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "3rd argument must be a 'function' or a 'null'");
        }
 
        // set event handler's data
@@ -718,8 +715,8 @@ JSValueRef JSContactManager::updateBatch(JSContextRef context,
                ContactAsyncCallbackManagerSingleton::Instance().registerCallbackManager(callbackManager, gContext);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception,
-                               JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception,
+                               JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -747,7 +744,7 @@ JSValueRef JSContactManager::remove(JSContextRef context,
                addressBook = controller->getObject();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE);
@@ -760,14 +757,16 @@ JSValueRef JSContactManager::remove(JSContextRef context,
                ArgumentValidator validator(context, argumentCount, arguments);
                personId = validator.toString(0, false);
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
+       if(!ContactUtility::checkStrIsUInt(personId))
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::INVALID_VALUES_ERROR, "");
 
        EventContactManagerRemovePtr dplEvent(new EventContactManagerRemove());
 
@@ -778,8 +777,8 @@ JSValueRef JSContactManager::remove(JSContextRef context,
                addressBook->remove(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception,
-                               JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception,
+                               JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        if (!dplEvent->getResult())
@@ -790,17 +789,17 @@ JSValueRef JSContactManager::remove(JSContextRef context,
                case ExceptionCodes::NotFoundException:
                case ExceptionCodes::InvalidArgumentException:
                        LoggerE("Not Found error : " << personId);
-                       oss << "No Contact id '" << personId << "'";
-                       return JSTizenExceptionFactory::postException(context, exception,
-                                       JSTizenException::NOT_FOUND_ERROR, oss.str());
+                       oss << "No id '" << personId << "'";
+                       return JSWebAPIErrorFactory::postException(context, exception,
+                                       JSWebAPIErrorFactory::NOT_FOUND_ERROR, oss.str());
                        break;
                case ExceptionCodes::PlatformException:
-                       return JSTizenExceptionFactory::postException(context, exception,
-                                       JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception,
+                                       JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception,
-                                       JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception,
+                                       JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }
@@ -834,7 +833,7 @@ JSValueRef JSContactManager::removeBatch(JSContextRef context,
                gContext = controller->getContext();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE_BATCH);
@@ -852,13 +851,13 @@ JSValueRef JSContactManager::removeBatch(JSContextRef context,
                if(errorObj)
                        js3rdParamIsFunction = true;
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(context);
@@ -878,7 +877,7 @@ JSValueRef JSContactManager::removeBatch(JSContextRef context,
                dplEvent->setPersonIds(converter->toStringArray(arguments[0]));
        } Catch(ConversionException) {
                LoggerE("Error on conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "3rd argument must be an array of 'Contact id'");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "3rd argument must be an array of 'Contact id'");
        }
 
        // set event handler's data
@@ -893,7 +892,7 @@ JSValueRef JSContactManager::removeBatch(JSContextRef context,
                ContactAsyncCallbackManagerSingleton::Instance().registerCallbackManager(callbackManager, gContext);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -927,7 +926,7 @@ JSValueRef JSContactManager::find(JSContextRef context,
                gContext = controller->getContext();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_FIND);
@@ -950,13 +949,13 @@ JSValueRef JSContactManager::find(JSContextRef context,
                        js4thParamIsObject = true;
 
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
        JSCallbackManagerPtr callbackManager = JSCallbackManager::createObject(gContext);
@@ -973,19 +972,26 @@ JSValueRef JSContactManager::find(JSContextRef context,
 
        EventContactManagerFindPtr dplEvent(new EventContactManagerFind());
        Try {
-               if (js3rdParamIsObject)
-                       dplEvent->setFilter(filterConverter->toFilter(arguments[2]));
+               if (js3rdParamIsObject){
+                       FilterPtr filter = filterConverter->toFilter(arguments[2]);
+                       if(filter)
+                               dplEvent->setFilter(filter);
+                       else
+                               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "3rd argument must be an Correct 'Filter object' or 'null'");
+               }
        } Catch(Exception) {
                LoggerE("Error on 3rd parameter conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "3rd argument must be an 'Filter object' or 'null'");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "3rd argument must be an 'Filter object' or 'null'");
        }
 
        Try {
-               if (js4thParamIsObject)
-                       dplEvent->setSortMode(filterConverter->toSortMode(arguments[3]));
+               if (js4thParamIsObject){
+                       SortModePtr sortMode = filterConverter->toSortMode(arguments[3]);
+                       dplEvent->setSortMode(sortMode);
+               }
        } Catch(Exception) {
                LoggerE("Error on 4th parameter conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "4th argument must be an 'SortMode object' or 'null'");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "4th argument must be an 'SortMode object' or 'null'");
        }
 
        // set event handler's data
@@ -1000,7 +1006,7 @@ JSValueRef JSContactManager::find(JSContextRef context,
                ContactAsyncCallbackManagerSingleton::Instance().registerCallbackManager(callbackManager, gContext);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
@@ -1032,7 +1038,7 @@ JSValueRef JSContactManager::addChangeListener(JSContextRef context,
                gContext = controller->getContext();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_ADD_CHANGE_LISTENER);
@@ -1048,13 +1054,13 @@ JSValueRef JSContactManager::addChangeListener(JSContextRef context,
                        js2ndParamIsFunction = true;
 
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
 
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(context);
@@ -1087,11 +1093,11 @@ JSValueRef JSContactManager::addChangeListener(JSContextRef context,
                }
 
                if (onpersonsadded == NULL && onpersonsupdated == NULL && onpersonsdeleted == NULL)
-                       ThrowMsg(ConversionException, "2nd argument must have at least one function");
+                       ThrowMsg(ConversionException, "invalid 2nd argument");
 
        } Catch(ConversionException) {
                LoggerE("Error on conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, _rethrown_exception.GetMessage());
        }
 
        JSContactManagerChangeCallbackManagerPtr callbackManager = JSContactManagerChangeCallbackManager::createObject(gContext);
@@ -1116,7 +1122,7 @@ JSValueRef JSContactManager::addChangeListener(JSContextRef context,
                addressBook->addChangeListener(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        if (!dplEvent->getResult() || !dplEvent->getIdIsSet())
@@ -1125,10 +1131,10 @@ JSValueRef JSContactManager::addChangeListener(JSContextRef context,
                {
                case ExceptionCodes::InvalidArgumentException:
                case ExceptionCodes::PlatformException:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }
@@ -1144,7 +1150,7 @@ JSValueRef JSContactManager::addChangeListener(JSContextRef context,
                result = converter->toJSValueRefLong(watchId);
        } Catch(Exception) {
                LoggerE("Error on conversion : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
        TIME_TRACER_ITEM_END(__FUNCTION__, 0);
        return result;
@@ -1172,7 +1178,7 @@ JSValueRef JSContactManager::removeChangeListener(JSContextRef context,
                gContext = controller->getContext();
        } Catch(Exception) {
                LoggerE("No private object");
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "Wrong object");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "Wrong object");
        }
 
        AceSecurityStatus status = CONTACT_CHECK_ACCESS(CONTACT_FUNCTION_API_CONTACT_MANAGER_REMOVE_CHANGE_LISTENER);
@@ -1181,18 +1187,23 @@ JSValueRef JSContactManager::removeChangeListener(JSContextRef context,
        ContactConverterFactory::ConverterType converter = ContactConverterFactory::getConverter(context);
 
        long watchId = 0;
+       std::string id;
+
        try {
                ArgumentValidator validator(context, argumentCount, arguments);
                watchId = validator.toLong(0, false, 0);
+               id = validator.toString(0, false);
        } catch (const TypeMismatchException& err ) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const BasePlatformException& err) {
-               return JSWebAPIError::throwException(context, exception, err);
+               return JSWebAPIErrorFactory::postException(context, exception, err);
        } catch(const ConversionException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        } catch(const NullPointerException& err) {
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::TYPE_MISMATCH_ERROR, "");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::TYPE_MISMATCH_ERROR, "");
        }
+       if(!ContactUtility::checkStrIsUInt(id))
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::INVALID_VALUES_ERROR, "");
 
        EventContactManagerRemoveChangeListenerPtr dplEvent(new EventContactManagerRemoveChangeListener());
 
@@ -1203,7 +1214,7 @@ JSValueRef JSContactManager::removeChangeListener(JSContextRef context,
                addressBook->removeChangeListener(dplEvent);
        } Catch(Exception) {
                LoggerE("Error on platform : " << _rethrown_exception.GetMessage());
-               return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+               return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
        }
 
        PersonsChangeListenerCancellerPtr canceller = PersonsChangeListenerCancellerPtr(new PersonsChangeListenerCanceller(gContext, thisObject, watchId));
@@ -1216,10 +1227,10 @@ JSValueRef JSContactManager::removeChangeListener(JSContextRef context,
                {
                case ExceptionCodes::InvalidArgumentException:
                case ExceptionCodes::NotFoundException:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::NOT_FOUND_ERROR, "Watch id not found");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::NOT_FOUND_ERROR, "Watch id not found");
                        break;
                default:
-                       return JSTizenExceptionFactory::postException(context, exception, JSTizenException::UNKNOWN_ERROR, "Internal error");
+                       return JSWebAPIErrorFactory::postException(context, exception, JSWebAPIErrorFactory::UNKNOWN_ERROR, "Internal error");
                        break;
                }
        }