RESTCONF notification fixes
This submission contains the restconf portion of the changes of the follwoing
submission:
https://gerrit.onosproject.org/#/c/12310/
Change-Id: I7534c8491633f0e9a6062b337a6fd79013202940
diff --git a/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java
index 7866587..31b3298 100644
--- a/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java
+++ b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java
@@ -25,8 +25,8 @@
/**
* Handles the notification event.
*
- * @param deviceId restconf device identifier
- * @param eventJsonString the json string representation of the event
+ * @param deviceId restconf device identifier
+ * @param event event payload
*/
- void handleNotificationEvent(DeviceId deviceId, T eventJsonString);
+ void handleNotificationEvent(DeviceId deviceId, T event);
}
diff --git a/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfSBController.java b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfSBController.java
index 772aaea..4cf9fe0 100644
--- a/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfSBController.java
+++ b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfSBController.java
@@ -31,29 +31,48 @@
* callBackListener upon receiving notifications to notify the requester
* about notifications.
*
- *
- * @param device device to make the request to
- * @param request url of the request
- * @param mediaType format to retrieve the content in
+ * @param device device to make the request to
+ * @param request url of the request
+ * @param mediaType format to retrieve the content in
* @param callBackListener method to call when notifications arrives
*/
void enableNotifications(DeviceId device, String request, String mediaType,
- RestConfNotificationEventListener callBackListener);
+ RestconfNotificationEventListener callBackListener);
+
+ //TODO: To be removed once the caller to this API is updated.
+ @Deprecated void enableNotifications(DeviceId device, String request, String mediaType,
+ RestConfNotificationEventListener callBackListener);
/**
- * Register a listener for notification events that occur to restconf
+ * Registers a listener for notification events that occur to restconf
* devices.
*
- * @param deviceId the deviceId
+ * @param deviceId identifier of the device to which the listener is attached
* @param listener the listener to notify
*/
void addNotificationListener(DeviceId deviceId,
- RestConfNotificationEventListener listener);
+ RestconfNotificationEventListener listener);
/**
- * Unregister the listener for the device.
+ * Unregisters the listener for the device.
*
- * @param deviceId the deviceId
+ * @param deviceId identifier of the device for which the listener
+ * is to be removed
+ * @param listener listener to be removed
*/
- void removeNotificationListener(DeviceId deviceId);
+ void removeNotificationListener(DeviceId deviceId,
+ RestconfNotificationEventListener listener);
+
+ //TODO: temporarily keep this API for backward compatibility.
+ @Deprecated void removeNotificationListener(DeviceId deviceId);
+
+ /**
+ * Returns true if a listener has been installed to listen to RESTCONF
+ * notifications sent from a particular device.
+ *
+ * @param deviceId identifier of the device from which the notifications
+ * are generated
+ * @return true if listener is installed; false otherwise
+ */
+ boolean isNotificationEnabled(DeviceId deviceId);
}
diff --git a/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestconfNotificationEventListener.java b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestconfNotificationEventListener.java
new file mode 100644
index 0000000..230724b
--- /dev/null
+++ b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestconfNotificationEventListener.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * 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 org.onosproject.protocol.restconf;
+
+import org.onosproject.net.DeviceId;
+
+/**
+ * Notifies providers about incoming RESTCONF notification events.
+ */
+public interface RestconfNotificationEventListener<T> {
+
+ /**
+ * Handles the notification event.
+ *
+ * @param deviceId restconf device identifier
+ * @param event event payload
+ */
+ void handleNotificationEvent(DeviceId deviceId, T event);
+}