13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License.
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License.
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "DmtJavaPluginTree.h"
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "DmtJavaPluginNode.h"
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "DmtJavaPluginManager.h"
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "DmtJavaPluginCommon.h"
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmtJavaPluginTree::DmtJavaPluginTree(const char* rootPath, DMMap<DMString, DMString>& mapParameters)
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   : DmtRWPluginTree(), mIsAtomic(FALSE)
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree constructor...\n");
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Init(rootPath);
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Finish init rootPath, and begin create new instance of DmtJavaPluginManager..\n");
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_pluginManager = new DmtJavaPluginManager(rootPath, mapParameters);
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Finish create new instance of DmtJavaPluginManager..\n");
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_parameters = mapParameters;
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmtJavaPluginTree::~DmtJavaPluginTree()
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_pluginManager = NULL;
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    m_parameters.clear();
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::DeleteNode(const char* path)
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::DeleteNode, path = %s\n", path);
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = DmtRWPluginTree::DeleteNode(path);
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("DmtJavaPluginTree::DeleteNode: DmtRWPluginTree::DeleteNode res = %d\n", res);
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (res == SYNCML_DM_SUCCESS)
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        res = m_pluginManager->DeleteNode(path);
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::DeleteNode, res = %d\n", res);
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::CreateInteriorNode(const char* path, PDmtNode& ptrCreatedNode)
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::CreateInteriorNode, path = %s \n", path);
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = DmtRWPluginTree::CreateInteriorNode(path, ptrCreatedNode);
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::CreateInteriorNode, res = %d\n", res);
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::CreateInteriorNodeInternal(const char* path,
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                                     PDmtNode& ptrCreatedNode,
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                                                     const DMStringVector& childNodeNames)
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::CreateInteriorNodeInternal, path = %s\n", path);
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = m_pluginManager->CreateInteriorNode(path);
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (res == SYNCML_DM_SUCCESS)
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        PDmtJavaPluginNode pNode = new DmtJavaPluginNode(this, path, childNodeNames);
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        res = this->SetNode(path, static_cast<PDmtNode>(pNode));
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (res != SYNCML_DM_SUCCESS)
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            m_pluginManager->DeleteNode(path);
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        ptrCreatedNode = pNode;
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::CreateInteriorNodeInternal, path = %s\n", path);
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::CreateLeafNode(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value)
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::CreateLeafNode, path = %s\n", path);
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = DmtRWPluginTree::CreateLeafNode(path, ptrCreatedNode, value);
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::CreateLeafNode, res = %d\n", res);
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::CreateLeafNode(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value, BOOLEAN isESN)
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::CreateLeafNode, path = %s\n", path);
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = DmtRWPluginTree::CreateLeafNode(path, ptrCreatedNode, value, isESN);
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::CreateLeafNode, res = %d\n", res);
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::CreateLeafNodeInternal(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value)
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::CreateLeafNodeInternal, path = %s\n", path);
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = m_pluginManager->CreateLeafNode(path, value);
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (res == SYNCML_DM_SUCCESS)
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        PDmtJavaPluginNode pNode = new DmtJavaPluginNode(this, path, value);
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        res = this->SetNode(path, static_cast<PDmtNode>(pNode));
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (res != SYNCML_DM_SUCCESS)
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        {
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            m_pluginManager->DeleteNode(path);
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        ptrCreatedNode = pNode;
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::CreateLeafNodeInternal, path = %s\n", path);
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::CreateLeafNodeInternal(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value, BOOLEAN isESN)
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::CreateLeafNodeInternal, path = %s, isESN = %d\n", path, isESN);
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return CreateLeafNodeInternal(path, ptrCreatedNode, value);
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::RenameNode(const char* path, const char* szNewNodeName)
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::RenameNode, path = %s\n", path);
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // This method is not supported by DmtPluginTree so we don't call java plug-in
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // SYNCML_DM_RET_STATUS_T res = m_pluginManager->RenameNode(path, szNewNodeName);
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_FEATURE_NOT_SUPPORTED;
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::GetNode(const char* szPath, PDmtNode& ptrNode)
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (!szPath)
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        szPath = "";
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("DmtJavaPluginTree::GetNode(%s)\n", szPath);
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return DmtPluginTree::GetNode(szPath, ptrNode);
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::BuildPluginTree()
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::BuildPluginTree\n");
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = m_pluginManager->BuildPluginTree(this);
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::BuildPluginTree, res = %d\n", res);
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMMap<DMString, DMString>& DmtJavaPluginTree::GetParameters()
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return m_parameters;
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDMString& DmtJavaPluginTree::GetRootPath()
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return m_strRootPath;
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::GetNodeValueInternal(const char* path, DmtData& value)
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::GetNodeValueInternal, path = %s\n", path);
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = m_pluginManager->GetNodeValue(path, value);
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::GetNodeValueInternal, res = %d\n", res);
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::SetNodeValueInternal(const char* path, const DmtData& value)
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::SetNodeValueInternal, path = %s\n", path);
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = m_pluginManager->SetNodeValue(path, value);
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::SetNodeValueInternal, res = %d\n", res);
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyBOOLEAN DmtJavaPluginTree::IsAtomic()
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("DmtJavaPluginTree::IsAtomic\n");
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return mIsAtomic;
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::Flush()
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::Flush\n");
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //TODO: Workaround. Commit will be called by engine in any case.
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Commit();
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // ehb005:should not set this NULL because tree could be accessed again after flush
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //m_pluginManager = NULL;
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = DmtRWPluginTree::Flush();
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::Flush, res = %d\n", res);
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::Commit()
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Inside: DmtJavaPluginTree::Commit\n");
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (m_pluginManager == NULL)
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        DmtJavaPlugin_Debug("Plugin manager is not created\n");
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    mIsAtomic = FALSE;
2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T res = m_pluginManager->Commit();
2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("Leave: DmtJavaPluginTree::Commit, res = %d\n", res);
2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return res;
2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::Begin()
2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("DmtJavaPluginTree::Begin\n");
2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    mIsAtomic = TRUE;
2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_SUCCESS;
2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T DmtJavaPluginTree::Rollback()
2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPlugin_Debug("DmtJavaPluginTree::Rollback\n");
2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    mIsAtomic = FALSE;
2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return SYNCML_DM_FEATURE_NOT_SUPPORTED;
2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
276