summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schanda <schanda@itestra.de>2013-06-07 17:20:06 +0200
committerJohannes Schanda <schanda@itestra.de>2013-06-07 17:20:44 +0200
commit303b63fbd7bfbf71d519e735bcbd6b6566685afb (patch)
treedf77eddacd55c21f36163867f066eb7e5582eb7b
parentd9c34a751946950ad54360cff1ede66d073eb194 (diff)
downloadgenivi-common-api-dbus-runtime-303b63fbd7bfbf71d519e735bcbd6b6566685afb.tar.gz
Correct object path handling for nested trees
-rw-r--r--src/CommonAPI/DBus/DBusObjectManager.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/CommonAPI/DBus/DBusObjectManager.cpp b/src/CommonAPI/DBus/DBusObjectManager.cpp
index 6e78993..4104fcd 100644
--- a/src/CommonAPI/DBus/DBusObjectManager.cpp
+++ b/src/CommonAPI/DBus/DBusObjectManager.cpp
@@ -161,6 +161,7 @@ bool DBusObjectManager::onIntrospectableInterfaceDBusMessage(const DBusMessage&
const std::string& dbusObjectPath = handlerPath.first;
const std::string& dbusInterfaceName = handlerPath.second;
DBusStubAdapter* dbusStubAdapter = registeredObjectsIterator.second;
+ std::vector<std::string> elems = CommonAPI::DBus::split(dbusObjectPath, '/');
if (dbusMessage.hasObjectPath(dbusObjectPath)) {
foundRegisteredObjects = true;
@@ -168,8 +169,9 @@ bool DBusObjectManager::onIntrospectableInterfaceDBusMessage(const DBusMessage&
xmlData << "<interface name=\"" << dbusInterfaceName << "\">\n"
<< dbusStubAdapter->getMethodsDBusIntrospectionXmlData() << "\n"
"</interface>\n";
+ nodeSet.insert(elems.back());
+ //break;
} else {
- std::vector<std::string> elems = CommonAPI::DBus::split(dbusObjectPath, '/');
if (dbusMessage.hasObjectPath("/") && elems.size() > 1) {
if (nodeSet.find(elems[1]) == nodeSet.end()) {
if (nodeSet.size() == 0) {
@@ -187,7 +189,7 @@ bool DBusObjectManager::onIntrospectableInterfaceDBusMessage(const DBusMessage&
std::string build;
for (int j = 1; j <= i; j++) {
build = build + "/" + elems[j];
- if (dbusMessage.hasObjectPath(dbusObjectPath)) {
+ if (dbusMessage.hasObjectPath(build)) {
if (nodeSet.find(elems[j + 1]) == nodeSet.end()) {
if (nodeSet.size() == 0) {
xmlData.str("");