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.
17 * @author Grzegorz Krawczyk (g.krawczyk@samsung.com)
22 #include <dpl/log/log.h>
23 #include <Commons/Exception.h>
24 #include "WrtWrapper.h"
25 #include "WrtWrappersMgr.h"
27 namespace WrtDeviceApis {
30 WrtWrappersMgr::WrtWrappersMgr()
32 DPL::Log::LogSystemSingleton::Instance().SetTag("WRT_PLUGINS");
35 WrtWrappersMgr::~WrtWrappersMgr()
39 IWrtWrapperPtr WrtWrappersMgr::registerWrapper(
41 JavaScriptContext context,
42 const engine_interface_t* interface)
45 if (!context || !interface) {
46 Throw(InvalidArgumentException);
49 if (isWrapperRegistered(context)) {
50 return getWrtWrapper(context);
53 LogDebug("creation wrapper for id: " << widgetId);
54 IWrtWrapperPtr wrapper(new WrtWrapper(widgetId, interface));
56 addWrapper(context, wrapper);
61 void WrtWrappersMgr::removeWrapper(int widgetId)
64 RegisteredWrappersIterator it = m_wrappers.begin();
66 for (; it != m_wrappers.end(); ++it) {
67 if (it->second->getWidgetId() == widgetId) {
72 Throw(InvalidArgumentException);
75 void WrtWrappersMgr::removeWrapper(JavaScriptContext context)
78 RegisteredWrappersIterator it = m_wrappers.find(context);
80 if (it == m_wrappers.end()) {
81 Throw(InvalidArgumentException);
87 WrtWrappersMgr& WrtWrappersMgr::getInstance()
91 static WrtWrappersMgr instance;
95 IWrtWrapperPtr WrtWrappersMgr::getWrapper(const JavaScriptContext context)
99 RegisteredWrappersConstIterator it = m_wrappers.find(context);
101 if (it == m_wrappers.end()) {
102 Throw(OutOfRangeException);
108 IWrtWrapperPtr WrtWrappersMgr::getWrtWrapper(const JavaScriptContext context)
113 IWrtWrapperPtr wrapper;
116 wrapper = getWrapper(context);
118 Catch(OutOfRangeException){
119 Throw(InvalidArgumentException);
125 void WrtWrappersMgr::addWrapper(JavaScriptContext context,
126 IWrtWrapperPtr wrapper)
129 m_wrappers.insert(std::make_pair(context, wrapper));
132 bool WrtWrappersMgr::isWrapperRegistered(JavaScriptContext context) const
135 RegisteredWrappersConstIterator it = m_wrappers.find(context);
137 if (it == m_wrappers.end()) {
144 } // WrtDeviceApisCommon