All Downloads are FREE. Search and download functionalities are using the official Maven repository.

info.dmtree.notification.NotificationService Maven / Gradle / Ivy

/*
 * Copyright (c) OSGi Alliance (2004, 2008). All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package info.dmtree.notification;

import info.dmtree.DmtException;
import info.dmtree.DmtSession;

/**
 * NotificationService enables sending aynchronous notifications to a management
 * server. The implementation of NotificationService should
 * register itself in the OSGi service registry as a service.
 * 
 * @version $Revision: 5673 $
 */
public interface NotificationService {

    /**
     * Sends a notification to a named principal. It is the responsibility of
     * the NotificationService to route the notification to the 
     * given principal using the registered
     * {@link info.dmtree.notification.spi.RemoteAlertSender} services.
     * 

* In remotely initiated sessions the principal name identifies the remote * server that created the session, this can be obtained using the session's * {@link DmtSession#getPrincipal getPrincipal} call. *

* The principal name may be omitted if the client does not know the * principal name. Even in this case the routing might be possible if the * Notification Service finds an appropriate default destination (for * example if it is only connected to one protocol adapter, which is only * connected to one management server). *

* Since sending the notification and receiving acknowledgment for it is * potentially a very time-consuming operation, notifications are sent * asynchronously. This method should attempt to ensure that the * notification can be sent successfully, and should throw an exception if * it detects any problems. If the method returns without error, the * notification is accepted for sending and the implementation must make a * best-effort attempt to deliver it. *

* In case the notification is an asynchronous response to a previous * {@link DmtSession#execute(String, String, String) execute} command, a * correlation identifier can be specified to provide the association * between the execute and the notification. *

* In order to send a notification using this method, the caller must have * an AlertPermission with a target string matching the * specified principal name. If the principal parameter is * null (the principal name is not known), the target of the * AlertPermission must be "*". *

* When this method is called with all its parameters null or 0 * (except principal), it should send a protocol * specific default notification to initiate a management session. For * example, in case of OMA DM this is alert 1201 "Client Initiated Session". * The principal parameter can be used to determine the * recipient of the session initiation request. * * @param principal the principal name which is the recipient of this * notification, can be null * @param code the alert code, can be 0 if not needed * @param correlator optional field that contains the correlation identifier * of an associated exec command, can be null if not * needed * @param items the data of the alert items carried in this alert, can be * null or empty if not needed * @throws DmtException with the following possible error codes: *

    *
  • UNAUTHORIZED when the remote server rejected * the request due to insufficient authorization *
  • ALERT_NOT_ROUTED when the alert can not be * routed to the given principal *
  • REMOTE_ERROR in case of communication * problems between the device and the destination *
  • COMMAND_FAILED for unspecified errors * encountered while attempting to complete the command *
  • FEATURE_NOT_SUPPORTED if the underlying * management protocol doesn't support asynchronous notifications *
* @throws SecurityException if the caller does not have the required * AlertPermission with a target matching the * principal parameter, as described above */ void sendNotification(String principal, int code, String correlator, AlertItem[] items) throws DmtException; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy