2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "ResponseDispatcher.h"
19 #include <dpl/log/log.h>
20 #include <CommonsJavaScript/JSCallbackManager.h>
21 #include <CommonsJavaScript/JSDOMExceptionFactory.h>
22 #include "AccountConverter.h"
25 using namespace TizenApis::Api::Account;
26 using namespace WrtDeviceApis::Commons;
27 using namespace WrtDeviceApis::CommonsJavaScript;
32 AccountResponseDispatcher& AccountResponseDispatcher::getInstance()
34 static AccountResponseDispatcher instance;
38 AccountResponseDispatcher::AccountResponseDispatcher() :
39 AccountEventAnswerReceiverCreate(ThreadEnum::NULL_THREAD),
40 AccountEventAnswerReceiverAdd(ThreadEnum::NULL_THREAD),
41 AccountEventAnswerReceiverDelete(ThreadEnum::NULL_THREAD),
42 AccountEventAnswerReceiverUpdate(ThreadEnum::NULL_THREAD),
43 AccountEventAnswerReceiverFind(ThreadEnum::NULL_THREAD),
44 GetAccountServicesEventAnswerReceiver(ThreadEnum::NULL_THREAD)
49 AccountResponseDispatcher::~AccountResponseDispatcher()
54 void AccountResponseDispatcher::OnAnswerReceived(
55 const IEventCreateAccountPtr &event)
58 JSCallbackManagerPtr cbm =
59 DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
63 LogDebug("no callback manager");
66 if (event->getResult()) {
67 LogDebug("result success");
68 AccountConverterFactory::ConverterType converter =
69 AccountConverterFactory::getConverter(cbm->getContext());
70 cbm->callOnSuccess(converter->toJSValueRefAccount(event->getEvent()));
73 LogDebug("result fail");
75 Catch(ConversionException)
77 LogError("cannot convert event");
79 JSValueRef errorObject = JSDOMExceptionFactory::UnknownException.make(
81 cbm->callOnError(errorObject);
86 void AccountResponseDispatcher::OnAnswerReceived(
87 const IEventAddAccountPtr &event)
90 JSCallbackManagerPtr cbm =
91 DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
95 LogDebug("no callback manager");
98 if (event->getResult()) {
99 LogDebug("result success");
100 AccountConverterFactory::ConverterType converter =
101 AccountConverterFactory::getConverter(cbm->getContext());
102 cbm->callOnSuccess(converter->toJSValueRefAccount(event->getEvent()));
105 LogDebug("result fail");
107 Catch(ConversionException)
109 LogError("cannot convert event");
111 JSValueRef errorObject = JSDOMExceptionFactory::UnknownException.make(
113 cbm->callOnError(errorObject);
116 void AccountResponseDispatcher::OnAnswerReceived(
117 const IEventDeleteAccountPtr &event)
120 JSCallbackManagerPtr cbm =
121 DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
123 LogDebug("no callback manager");
126 if (event->getResult()) {
127 cbm->callOnSuccess();
129 JSValueRef errorObject;
130 if (event->getExceptionCode() ==
131 ExceptionCodes::NotFoundException) {
132 errorObject = JSDOMExceptionFactory::NotFoundException.make(
135 errorObject = JSDOMExceptionFactory::UnknownException.make(
138 cbm->callOnError(errorObject);
144 void AccountResponseDispatcher::OnAnswerReceived(
145 const IEventUpdateAccountPtr &event)
148 JSCallbackManagerPtr cbm =
149 DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
151 LogDebug("no callback manager");
154 if (event->getResult()) {
155 cbm->callOnSuccess();
157 JSValueRef errorObject = JSDOMExceptionFactory::UnknownException.make(
159 cbm->callOnError(errorObject);
165 void AccountResponseDispatcher::OnAnswerReceived(
166 const IEventFindAccountsPtr &event)
169 JSCallbackManagerPtr cbm =
170 DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
172 LogError("no callback manager");
177 if (event->getResult()) {
178 AccountConverterFactory::ConverterType converter =
179 AccountConverterFactory::getConverter(cbm->getContext());
180 const std::vector<EventAccountPtr> &results = event->getEvents();
181 JSValueRef result = converter->toJSValueRef(results);
182 cbm->callOnSuccess(result);
188 LogError("error during processing answer");
190 JSValueRef errorObject =
191 JSDOMExceptionFactory::UnknownException.make(cbm->getContext());
192 cbm->callOnError(errorObject);
195 void AccountResponseDispatcher::OnAnswerReceived(
196 const IEventGetAccountServicesPtr &event)
199 JSCallbackManagerPtr cbm =
200 DPL::StaticPointerCast<JSCallbackManager>(event->getPrivateData());
202 LogError("no callback manager");
207 // if (event->getResult()) {
209 // LogDebug("event->getResult() entered");
210 // AccountConverterFactory::ConverterType converter =
211 // AccountConverterFactory::getConverter(cbm->getContext());
212 // const std::vector<IAccountServicePtr> &results = event->getAccountServices();
213 // LogDebug("found AccountServices: " << results.size());
214 // JSValueRef result = converter->toJSValueRef(results);
215 // cbm->callOnSuccess(result);
221 // LogError("error during processing answer");
223 JSValueRef errorObject = JSDOMExceptionFactory::UnknownException.make(
225 cbm->callOnError(errorObject);