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#ifndef __DMTJAVAPLUGINTREE_H__
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#define __DMTJAVAPLUGINTREE_H__
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmt.hpp"
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "jem_defs.hpp"
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "plugin/dmtRWPlugin.hpp"
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass DmtJavaPluginManager;
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyclass DmtJavaPluginTree : public DmtRWPluginTree
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypublic:
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DmtJavaPluginTree(const char* rootPath, DMMap<DMString, DMString>& mapParameters);
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T DeleteNode(const char* path);
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T CreateInteriorNode(const char* path, PDmtNode& ptrCreatedNode);
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T CreateLeafNode(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value);
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T CreateLeafNode(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value, BOOLEAN isESN);
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T CreateInteriorNodeInternal(const char* path, PDmtNode& ptrCreatedNode, const DMStringVector& childNodeNames);
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T CreateLeafNodeInternal(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value);
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T CreateLeafNodeInternal(const char* path, PDmtNode& ptrCreatedNode, const DmtData& value, BOOLEAN isESN);
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T RenameNode(const char* path, const char* szNewNodeName);
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T GetNode(const char* path, PDmtNode& ptrNode);
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T BuildPluginTree();
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMMap<DMString, DMString>& GetParameters();
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMString& GetRootPath();
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T GetNodeValueInternal(const char* path, DmtData& value);
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T SetNodeValueInternal(const char* path, const DmtData& value);
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual BOOLEAN IsAtomic();
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T Flush();
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T Commit();
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T Begin();
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual SYNCML_DM_RET_STATUS_T Rollback();
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyprotected:
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    virtual ~DmtJavaPluginTree();
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyprivate:
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    JemSmartPtr<DmtJavaPluginManager> m_pluginManager;
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    DMMap<DMString, DMString> m_parameters;
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BOOLEAN mIsAtomic;
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby};
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambytypedef JemSmartPtr<DmtJavaPluginTree> PDmtJavaPluginTree;
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif //__DMTJAVAPLUGINTREE_H__
62