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 * @file plugin_objects.h
18 * @author Grzegorz Krawczyk (g.krawczyk@samgsung.com)
23 #include <dpl/log/log.h>
24 #include "plugin_objects.h"
28 const char* SEPARATOR = ".";
29 const std::string GLOBAL_OBJECT_NAME = WrtPluginsApi::IObject::WINDOW_OBJECT();
30 const std::string OLD_GLOBAL_OBJECT_NAME = "GLOBAL_OBJECT";
32 std::string normalizeName(const std::string& objectName)
34 if (objectName.empty()) {
35 LogError("Normalize name, name size is 0");
39 if (!objectName.compare(0, GLOBAL_OBJECT_NAME.size(),
44 if (!objectName.compare(0, OLD_GLOBAL_OBJECT_NAME.size(),
45 OLD_GLOBAL_OBJECT_NAME))
47 return GLOBAL_OBJECT_NAME;
50 //each object in storage has name started from $GLOBAL_OBJECT_NAME$
51 return GLOBAL_OBJECT_NAME + std::string(SEPARATOR) + objectName;
54 std::string normalizeName(const std::string& objectName,
55 const std::string& parentName)
57 if (objectName.empty() || parentName.empty()) {
58 LogError("Normalize name, name size or parent name size is 0");
62 std::string normalizedName;
63 normalizedName = normalizeName(parentName) +
64 std::string(SEPARATOR) + objectName;
66 return normalizedName;
70 PluginObjects::PluginObjects()
72 m_implemented = ObjectsPtr(new Objects());
73 m_dependent = ObjectsPtr(new Objects());
76 PluginObjects::ObjectsPtr PluginObjects::getImplementedObject() const
81 PluginObjects::ObjectsPtr PluginObjects::getDependentObjects() const
86 void PluginObjects::addObjects(const std::string& parentName,
87 const std::string& name)
89 LogDebug("\n Parent: " << parentName
90 << "\n Name: " << name
91 << "\n After: Implemented: " <<
92 normalizeName(name, parentName)
93 << "\n After Dependent: " <<
94 normalizeName(parentName)
97 addImplementedObject(normalizeName(name, parentName));
98 addDependentObject(normalizeName(parentName));
101 void PluginObjects::addDependentObject(const std::string& value)
103 if (!value.compare(GLOBAL_OBJECT_NAME)) {
104 //dont add dependency to GLOBAL_OBJECT
107 m_dependent->insert(value);
110 bool PluginObjects::hasObject(const std::string& name) const
112 return m_implemented->find(name) != m_implemented->end();
115 void PluginObjects::addImplementedObject(const std::string& value)
117 m_implemented->insert(value);