summaryrefslogtreecommitdiff
path: root/configmgr/source/data.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'configmgr/source/data.cxx')
-rw-r--r--configmgr/source/data.cxx18
1 files changed, 15 insertions, 3 deletions
diff --git a/configmgr/source/data.cxx b/configmgr/source/data.cxx
index 0fdc1e5eba92..fcc42e97cecc 100644
--- a/configmgr/source/data.cxx
+++ b/configmgr/source/data.cxx
@@ -48,6 +48,7 @@
#include "groupnode.hxx"
#include "node.hxx"
#include "nodemap.hxx"
+#include "rootnode.hxx"
#include "setnode.hxx"
namespace configmgr {
@@ -207,6 +208,8 @@ rtl::Reference< Node > Data::findNode(
? rtl::Reference< Node >() : i->second;
}
+Data::Data(): root_(new RootNode(components)) {}
+
rtl::Reference< Node > Data::resolvePathRepresentation(
rtl::OUString const & pathRepresentation,
rtl::OUString * canonicRepresentation, Path * path, int * finalizedLayer)
@@ -218,6 +221,18 @@ rtl::Reference< Node > Data::resolvePathRepresentation(
pathRepresentation),
css::uno::Reference< css::uno::XInterface >());
}
+ if (path != 0) {
+ path->clear();
+ }
+ if (pathRepresentation.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("/"))) {
+ if (canonicRepresentation != 0) {
+ *canonicRepresentation = pathRepresentation;
+ }
+ if (finalizedLayer != 0) {
+ *finalizedLayer = NO_LAYER;
+ }
+ return root_;
+ }
rtl::OUString seg;
bool setElement;
rtl::OUString templateName;
@@ -231,9 +246,6 @@ rtl::Reference< Node > Data::resolvePathRepresentation(
}
NodeMap::const_iterator i(components.find(seg));
rtl::OUStringBuffer canonic;
- if (path != 0) {
- path->clear();
- }
rtl::Reference< Node > parent;
int finalized = NO_LAYER;
for (rtl::Reference< Node > p(i == components.end() ? 0 : i->second);;) {