Interface DmtAdmin
DmtAdmin
should register itself in the OSGi service
registry as a service. DmtAdmin
is the entry point for applications
to use the DMT API.
The getSession
methods are used to open a session on a specified
subtree of the DMT. A typical way of usage:
serviceRef = context.getServiceReference(DmtAdmin.class.getName()); DmtAdmin admin = (DmtAdmin) context.getService(serviceRef); DmtSession session = admin.getSession("./OSGi/Configuration"); session.createInteriorNode("./OSGi/Configuration/my.table");
The methods for opening a session take a node URI (the session root) as a parameter. All segments of the given URI must be within the segment length limit of the implementation, and the special characters '/' and '\' must be escaped (preceded by a '\').
See the Uri.encode(String)
method for support on escaping invalid
characters in a URI.
It is possible to specify a lock mode when opening the session (see lock type
constants in DmtSession
). This determines whether the session can run
in parallel with other sessions, and the kinds of operations that can be
performed in the session. All Management Objects constituting the device
management tree must support read operations on their nodes, while support
for write operations depends on the Management Object. Management Objects
supporting write access may support transactional write, non-transactional
write or both. Users of DmtAdmin
should consult the Management Object
specification and implementation for the supported update modes. If
Management Object definition permits, implementations are encouraged to
support both update modes.
-
Method Summary
Modifier and TypeMethodDescriptiongetSession
(String subtreeUri) Opens aDmtSession
for local usage on a given subtree of the DMT with non transactional write lock.getSession
(String subtreeUri, int lockMode) Opens aDmtSession
for local usage on a specific DMT subtree with a given lock mode.getSession
(String principal, String subtreeUri, int lockMode) Opens aDmtSession
on a specific DMT subtree using a specific lock mode on behalf of a remote principal.
-
Method Details
-
getSession
Opens aDmtSession
for local usage on a given subtree of the DMT with non transactional write lock. This call is equivalent to the following:getSession(null, subtreeUri, DmtSession.LOCK_TYPE_EXCLUSIVE)
The
subtreeUri
parameter must contain an absolute URI. It can also benull
, in this case the session is opened with the default session root, ".", that gives access to the whole tree.To perform this operation the caller must have
DmtPermission
for thesubtreeUri
node with the Get action present.- Parameters:
subtreeUri
- the subtree on which DMT manipulations can be performed within the returned session- Returns:
- a
DmtSession
object for the requested subtree - Throws:
DmtException
- with the following possible error codes:INVALID_URI
ifsubtreeUri
is syntactically invalidURI_TOO_LONG
ifsubtreeUri
is longer than accepted by theDmtAdmin
implementation (especially on systems with limited resources)-
NODE_NOT_FOUND
ifsubtreeUri
specifies a non-existing node -
SESSION_CREATION_TIMEOUT
if the operation timed out because of another ongoing session COMMAND_FAILED
ifsubtreeUri
specifies a relative URI, or some unspecified error is encountered while attempting to complete the command
SecurityException
- if the caller does not haveDmtPermission
for the given root node with the Get action present
-
getSession
Opens aDmtSession
for local usage on a specific DMT subtree with a given lock mode. This call is equivalent to the following:getSession(null, subtreeUri, lockMode)
The
subtreeUri
parameter must contain an absolute URI. It can also benull
, in this case the session is opened with the default session root, ".", that gives access to the whole tree.To perform this operation the caller must have
DmtPermission
for thesubtreeUri
node with the Get action present.- Parameters:
subtreeUri
- the subtree on which DMT manipulations can be performed within the returned sessionlockMode
- one of the lock modes specified inDmtSession
- Returns:
- a
DmtSession
object for the requested subtree - Throws:
DmtException
- with the following possible error codes:INVALID_URI
ifsubtreeUri
is syntactically invalidURI_TOO_LONG
ifsubtreeUri
is longer than accepted by theDmtAdmin
implementation (especially on systems with limited resources)-
NODE_NOT_FOUND
ifsubtreeUri
specifies a non-existing node -
FEATURE_NOT_SUPPORTED
if atomic sessions are not supported by the implementation andlockMode
requests an atomic session -
SESSION_CREATION_TIMEOUT
if the operation timed out because of another ongoing session -
COMMAND_FAILED
ifsubtreeUri
specifies a relative URI, iflockMode
is unknown, or some unspecified error is encountered while attempting to complete the command
SecurityException
- if the caller does not haveDmtPermission
for the given root node with the Get action present
-
getSession
Opens aDmtSession
on a specific DMT subtree using a specific lock mode on behalf of a remote principal. If local management applications are using this method then they should providenull
as the first parameter. Alternatively they can use other forms of this method without providing a principal string.The
subtreeUri
parameter must contain an absolute URI. It can also benull
, in this case the session is opened with the default session root, ".", that gives access to the whole tree.This method is guarded by
DmtPrincipalPermission
in case of remote sessions. In addition, the caller must have Get access rights (ACL in case of remote sessions,DmtPermission
in case of local sessions) on thesubtreeUri
node to perform this operation.- Parameters:
principal
- the identifier of the remote server on whose behalf the data manipulation is performed, ornull
for local sessionssubtreeUri
- the subtree on which DMT manipulations can be performed within the returned sessionlockMode
- one of the lock modes specified inDmtSession
- Returns:
- a
DmtSession
object for the requested subtree - Throws:
DmtException
- with the following possible error codes:INVALID_URI
ifsubtreeUri
is syntactically invalidURI_TOO_LONG
ifsubtreeUri
is longer than accepted by theDmtAdmin
implementation (especially on systems with limited resources)-
NODE_NOT_FOUND
ifsubtreeUri
specifies a non-existing node -
PERMISSION_DENIED
ifprincipal
is notnull
and the ACL of the node does not allow theGet
operation for the principal on the given root node FEATURE_NOT_SUPPORTED
if atomic sessions are not supported by the implementation andlockMode
requests an atomic session-
SESSION_CREATION_TIMEOUT
if the operation timed out because of another ongoing session -
COMMAND_FAILED
ifsubtreeUri
specifies a relative URI, iflockMode
is unknown, or some unspecified error is encountered while attempting to complete the command
SecurityException
- in case of remote sessions, if the caller does not have the requiredDmtPrincipalPermission
with a target matching theprincipal
parameter, or in case of local sessions, if the caller does not haveDmtPermission
for the given root node with the Get action present
-