Update change log and spec for wrt-plugins-tizen_0.4.70
[platform/framework/web/wrt-plugins-tizen.git] / src / Calendar / CalendarResponseDispatcher.cpp
index c991530..23264d2 100755 (executable)
 // limitations under the License.
 //
 
-
 #include "CalendarResponseDispatcher.h"
-#include <dpl/log/log.h>
 #include <CommonsJavaScript/JSCallbackManager.h>
-#include <JSTizenException.h>
-#include <JSTizenExceptionFactory.h>
+#include <JSWebAPIErrorFactory.h>
 #include "CalendarConverter.h"
 #include "JSCalendarEventId.h"
 #include "CalendarMultiCallback.h"
 #include "EventId.h"
 
-#include "CalendarAsyncCallbackManager.h"
-
+#include <Logger.h>
+#include <GlobalContextManager.h>
 
 using namespace WrtDeviceApis::Commons;
 using namespace WrtDeviceApis::CommonsJavaScript;
+using namespace DeviceAPI::Common;
 
 namespace DeviceAPI {
 namespace Calendar {
@@ -60,18 +58,21 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventGetCalendarsPtr &e
 {
     JSCallbackManagerPtr cbm = DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
     if (!cbm) {
-        LogError("no callback manager");
-        return;
+               LoggerE("no callback manager");
+               return;
+    }
+
+    if( !GlobalContextManager::getInstance()->isAliveGlobalContext(cbm->getContext())){
+        LoggerW("Global context invalidated.");
+           return;
     }
 
     Try
     {  
-               CalendarAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
-
         if (event->getResult()) {
-            CalendarConverter converter(cbm->getContext());
+            CalendarConverter converter(cbm->getContext(), event.Get());
             const std::vector<ICalendarPtr> &results = event->getCalendars();
-            LogDebug("found calendars: " << results.size());
+            LoggerD("found calendars: " << results.size());
             JSValueRef result = converter.toJSValueRef(results);
             cbm->callOnSuccess(result);
             return;
@@ -79,10 +80,10 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventGetCalendarsPtr &e
     }
     Catch(Exception)
     {
-        LogError("error during processing answer");
+        LoggerE("error during processing answer");
     }
-    JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-            cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+    JSValueRef errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+            cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
     cbm->callOnError(errorObject);
 }
 
@@ -92,15 +93,18 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventAddEventsPtr &even
     Try
     {
         if (!cbm) {
-            LogDebug("no callback manager");
-            return;
+                       LoggerD("no callback manager");
+                       return;
         }
 
-               CalendarAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
+           if( !GlobalContextManager::getInstance()->isAliveGlobalContext(cbm->getContext())){
+               LoggerW("Global context invalidated.");
+                   return;
+           }
 
         if (event->getResult()) {
-            LogDebug("result success");
-            CalendarConverter converter(cbm->getContext());
+            LoggerD("result success");
+            CalendarConverter converter(cbm->getContext(), event.Get());
 
             JSValueRef result;
             if (CalendarEvent::TASK_TYPE==event->getCalendarType()) {
@@ -112,14 +116,14 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventAddEventsPtr &even
             cbm->callOnSuccess(result);
             return;
         }
-        LogDebug("result fail");
+        LoggerD("result fail");
     }
     Catch(ConversionException)
     {
-        LogError("cannot convert event");
+        LoggerE("cannot convert event");
     }
-    JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-            cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+    JSValueRef errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+            cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
     cbm->callOnError(errorObject);
 }
 
@@ -127,17 +131,20 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventUpdateEventsPtr &e
 {
     JSCallbackManagerPtr cbm = DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
     if (!cbm) {
-        LogDebug("no callback manager");
+        LoggerD("no callback manager");
         return;
     }
 
-       CalendarAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
+    if( !GlobalContextManager::getInstance()->isAliveGlobalContext(cbm->getContext())){
+               LoggerW("Global context invalidated.");
+               return;
+    }
 
     if (event->getResult()) {
         cbm->callOnSuccess();
     } else {
-        JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+        JSValueRef errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
         cbm->callOnError(errorObject);
     }
 }
@@ -146,11 +153,14 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventDeleteEventsPtr &e
 {
     JSCallbackManagerPtr cbm = DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
     if (!cbm) {
-        LogDebug("no callback manager");
+        LoggerD("no callback manager");
         return;
     }
 
-       CalendarAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
+    if( !GlobalContextManager::getInstance()->isAliveGlobalContext(cbm->getContext())){
+               LoggerW("Global context invalidated.");
+               return;
+    }
 
     if (event->getResult()) {
         cbm->callOnSuccess();
@@ -158,11 +168,11 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventDeleteEventsPtr &e
         JSValueRef errorObject;
         if (event->getExceptionCode() ==
             ExceptionCodes::NotFoundException) {
-            errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                    cbm->getContext(), DeviceAPI::Common::JSTizenException::NOT_FOUND_ERROR);
+            errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                    cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::NOT_FOUND_ERROR);
         } else {
-            errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                    cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+            errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                    cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
         }
         cbm->callOnError(errorObject);
     }
@@ -172,15 +182,19 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventFindEventsPtr &eve
 {
     JSCallbackManagerPtr cbm = DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
     if (!cbm) {
-        LogError("no callback manager");
-        return;
+               LoggerE("no callback manager");
+               return;
     }
+
+    if( !GlobalContextManager::getInstance()->isAliveGlobalContext(cbm->getContext())){
+        LoggerW("Global context invalidated.");
+           return;
+    }
+
     Try
     {
-               CalendarAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
-
         if (event->getResult()) {
-            CalendarConverter converter(cbm->getContext());
+            CalendarConverter converter(cbm->getContext(), event.Get());
 
             JSValueRef result;
             if (CalendarEvent::TASK_TYPE==event->getCalendarType()) {
@@ -193,14 +207,14 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventFindEventsPtr &eve
         } else {
             JSValueRef errorObject;
             if (event->getExceptionCode() == ExceptionCodes::InvalidArgumentException) {
-                errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                        cbm->getContext(), DeviceAPI::Common::JSTizenException::INVALID_VALUES_ERROR);
+                errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                        cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::INVALID_VALUES_ERROR);
             } else if (event->getExceptionCode() == ExceptionCodes::NotFoundException) {
-                errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                        cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+                errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                        cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
             } else {
-                errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                        cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+                errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                        cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
             }
             cbm->callOnError(errorObject);
             return;
@@ -208,9 +222,9 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventFindEventsPtr &eve
     }
     Catch(Exception)
     {
-        LogError("error during processing answer");
-        JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+        LoggerE("error during processing answer");
+        JSValueRef errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
         cbm->callOnError(errorObject);
     }
 }
@@ -221,27 +235,30 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventExpandEventRecurre
     Try
     {
         if (!cbm) {
-            LogDebug("no callback manager");
+            LoggerD("no callback manager");
             return;
         }
 
-               CalendarAsyncCallbackManagerSingleton::Instance().unregisterCallbackManager(cbm);
+           if( !GlobalContextManager::getInstance()->isAliveGlobalContext(cbm->getContext())){
+                       LoggerW("Global context invalidated.");
+                       return;
+           }
 
         if (event->getResult()) {
-            CalendarConverter converter(cbm->getContext());
+            CalendarConverter converter(cbm->getContext(), event.Get());
             cbm->callOnSuccess(converter.toJSValueRefEventArray(event->getExpandedEventList()));
             return;
         } else {
             JSValueRef errorObject;
             if (event->getExceptionCode()==ExceptionCodes::InvalidArgumentException) {
-                errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                        cbm->getContext(), DeviceAPI::Common::JSTizenException::INVALID_VALUES_ERROR);
+                errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                        cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::INVALID_VALUES_ERROR);
             } else if (event->getExceptionCode()==ExceptionCodes::NotFoundException) {
-                errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                        cbm->getContext(), DeviceAPI::Common::JSTizenException::NOT_FOUND_ERROR);
+                errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                        cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::NOT_FOUND_ERROR);
             } else {
-                errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                        cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+                errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                        cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
             }
             cbm->callOnError(errorObject);
             return;
@@ -249,9 +266,9 @@ void CalendarResponseDispatcher::OnAnswerReceived(const IEventExpandEventRecurre
     }
     Catch(Exception)
     {
-        LogError("error during processing answer");
-        JSValueRef errorObject = DeviceAPI::Common::JSTizenExceptionFactory::makeErrorObject(
-                cbm->getContext(), DeviceAPI::Common::JSTizenException::UNKNOWN_ERROR);
+        LoggerE("error during processing answer");
+        JSValueRef errorObject = DeviceAPI::Common::JSWebAPIErrorFactory::makeErrorObject(
+                cbm->getContext(), DeviceAPI::Common::JSWebAPIErrorFactory::UNKNOWN_ERROR);
         cbm->callOnError(errorObject);
     }
 }
@@ -262,7 +279,7 @@ void CalendarResponseDispatcher::onAnswerReceived(const OnEventsChangedPtr& even
         DPL::StaticPointerCast<CalendarChangeCallbackPrivateData>(event->getPrivateData());
     JSContextRef context = multiCallbacks->getOnAdded()->getContext();
 
-    CalendarConverter converter(context);
+    CalendarConverter converter(context, multiCallbacks.Get());
     JSValueRef result;
 
     Try
@@ -318,18 +335,18 @@ void CalendarResponseDispatcher::onAnswerReceived(const OnEventsChangedPtr& even
             //case OnEventsChanged::ON_CALENDAR_RESET:
             default:
             {
-                LogDebug("Invalid status!");
+                LoggerD("Invalid status!");
                 break;
             }
         }
     }
     Catch(ConversionException)
     {
-        LogError("cannot convert change event");
+        LoggerE("cannot convert change event");
     }
     Catch(Exception)
     {
-        LogError("exception occurred while handling change noti callback!");
+        LoggerE("exception occurred while handling change noti callback!");
     }
 }