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 '\'). Any string can be converted to a valid URI
segment using the Uri.mangle(String) method.
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.
This interface also contains methods for manipulating the set of
DmtEventListener objects that are called when the structure or
content of the tree is changed. These methods are not needed in an OSGi
environment, clients should register listeners through the Event Admin
service.
- Version:
- $Revision: 5673 $
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddEventListener(int type, String uri, DmtEventListener listener) Registers an event listener on behalf of a local application.voidaddEventListener(String principal, int type, String uri, DmtEventListener listener) Registers an event listener on behalf of a remote principal.getSession(String subtreeUri) Opens aDmtSessionfor local usage on a given subtree of the DMT with non transactional write lock.getSession(String subtreeUri, int lockMode) Opens aDmtSessionfor local usage on a specific DMT subtree with a given lock mode.getSession(String principal, String subtreeUri, int lockMode) Opens aDmtSessionon a specific DMT subtree using a specific lock mode on behalf of a remote principal.voidremoveEventListener(DmtEventListener listener) Remove a previously registered listener.
-
Method Details
-
getSession
Opens aDmtSessionfor 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
subtreeUriparameter 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
DmtPermissionfor thesubtreeUrinode with the Get action present.- Parameters:
subtreeUri- the subtree on which DMT manipulations can be performed within the returned session- Returns:
- a
DmtSessionobject for the requested subtree - Throws:
DmtException- with the following possible error codes:URI_TOO_LONGifsubtreeUrior a segment of it is too long, or if it has too many segmentsINVALID_URIifsubtreeUriis syntactically invalidNODE_NOT_FOUNDifsubtreeUrispecifies a non-existing nodeSESSION_CREATION_TIMEOUTif the operation timed out because of another ongoing sessionCOMMAND_FAILEDifsubtreeUrispecifies a relative URI, or some unspecified error is encountered while attempting to complete the command
SecurityException- if the caller does not haveDmtPermissionfor the given root node with the Get action present
-
getSession
Opens aDmtSessionfor local usage on a specific DMT subtree with a given lock mode. This call is equivalent to the following:getSession(null, subtreeUri, lockMode)The
subtreeUriparameter 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
DmtPermissionfor thesubtreeUrinode 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
DmtSessionobject for the requested subtree - Throws:
DmtException- with the following possible error codes:URI_TOO_LONGifsubtreeUrior a segment of it is too long, or if it has too many segmentsINVALID_URIifsubtreeUriis syntactically invalidNODE_NOT_FOUNDifsubtreeUrispecifies a non-existing nodeFEATURE_NOT_SUPPORTEDif atomic sessions are not supported by the implementation andlockModerequests an atomic sessionSESSION_CREATION_TIMEOUTif the operation timed out because of another ongoing sessionCOMMAND_FAILEDifsubtreeUrispecifies a relative URI, iflockModeis unknown, or some unspecified error is encountered while attempting to complete the command
SecurityException- if the caller does not haveDmtPermissionfor the given root node with the Get action present
-
getSession
Opens aDmtSessionon 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 providenullas the first parameter. Alternatively they can use other forms of this method without providing a principal string.The
subtreeUriparameter 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
DmtPrincipalPermissionin case of remote sessions. In addition, the caller must have Get access rights (ACL in case of remote sessions,DmtPermissionin case of local sessions) on thesubtreeUrinode to perform this operation.- Parameters:
principal- the identifier of the remote server on whose behalf the data manipulation is performed, ornullfor local sessionssubtreeUri- the subtree on which DMT manipulations can be performed within the returned sessionlockMode- one of the lock modes specified inDmtSession- Returns:
- a
DmtSessionobject for the requested subtree - Throws:
DmtException- with the following possible error codes:URI_TOO_LONGifsubtreeUrior a segment of it is too long, or if it has too many segmentsINVALID_URIifsubtreeUriis syntactically invalidNODE_NOT_FOUNDifsubtreeUrispecifies a non-existing nodePERMISSION_DENIEDifprincipalis notnulland the ACL of the node does not allow theGetoperation for the principal on the given root nodeFEATURE_NOT_SUPPORTEDif atomic sessions are not supported by the implementation andlockModerequests an atomic sessionSESSION_CREATION_TIMEOUTif the operation timed out because of another ongoing sessionCOMMAND_FAILEDifsubtreeUrispecifies a relative URI, iflockModeis 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 requiredDmtPrincipalPermissionwith a target matching theprincipalparameter, or in case of local sessions, if the caller does not haveDmtPermissionfor the given root node with the Get action present
-
addEventListener
Registers an event listener on behalf of a local application. The given listener will receive notification on all changes affecting the specified subtree. The subtree is specified by its root node URI. An event is delivered to the registered listener if at least one affected node is within this subtree. The events can also be filtered by specifying a bitmask of relevant event types (e.g.DmtEvent.ADDED | DmtEvent.REPLACED | DmtEvent.SESSION_CLOSED). Only event types included in the bitmask will be delivered to the listener.The listener will only receive the change notifications of nodes for which the registering application has the appropriate GET
DmtPermission.If the specified
listenerwas already registered, calling this method will update the registration.- Parameters:
type- a bitmask of event types the caller is interested inuri- the URI of the root node of a subtree, must not benulllistener- the listener to be registered, must not benull- Throws:
SecurityException- if the caller doesn't have the necessary GETDmtPermissionfor the given URINullPointerException- if theuriorlistenerparameter isnullIllegalArgumentException- if thetypeparameter contains invalid bits (not corresponding to any event type defined inDmtEvent), or if theuriparameter is invalid (is not an absolute URI or is syntactically incorrect)
-
addEventListener
Registers an event listener on behalf of a remote principal. The given listener will receive notification on all changes affecting the specified subtree. The subtree is specified by its root node URI. An event is delivered to the registered listener if at least one affected node is within this subtree. The events can also be filtered by specifying a bitmask of relevant event types (e.g.DmtEvent.ADDED | DmtEvent.REPLACED | DmtEvent.SESSION_CLOSED). Only event types included in the bitmask will be delivered to the listener.The listener will only receive the change notifications of nodes for which the node ACL grants GET access to the specified principal.
If the specified
listenerwas already registered, calling this method will update the registration.- Parameters:
principal- the management server identity the caller is acting on behalf of, must not benulltype- a bitmask of event types the caller is interested inuri- the URI of the root node of a subtree, must not benulllistener- the listener to be registered, must not benull- Throws:
SecurityException- if the caller doesn't have the necessaryDmtPrincipalPermissionto use the specified principalNullPointerException- if theprincipal,uriorlistenerparameter isnullIllegalArgumentException- if thetypeparameter contains invalid bits (not corresponding to any event type defined inDmtEvent), or if theuriparameter is invalid (is not an absolute URI or is syntactically incorrect)
-
removeEventListener
Remove a previously registered listener. After this call, the listener will not receive change notifications.- Parameters:
listener- the listener to be unregistered, must not benull- Throws:
NullPointerException- if thelistenerparameter isnull
-