Add DOMInstanceNotificationService
[mdsal.git] / dom / mdsal-dom-api / src / main / java / org / opendaylight / mdsal / dom / api / DOMNotificationService.java
index 3bbff670a8f53d948d18b8edce85115ad1e106a6..fd6891671c38158bebd12819fc1079ae8ccb3935 100644 (file)
@@ -7,14 +7,14 @@
  */
 package org.opendaylight.mdsal.dom.api;
 
+import java.util.Arrays;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 
 /**
- * A {@link DOMService} which allows its users to subscribe to receive
- * {@link DOMNotification}s.
+ * A {@link DOMService} which allows its users to subscribe to receive top-level (YANG 1.0) {@link DOMNotification}s.
  */
 public interface DOMNotificationService extends DOMService {
     /**
@@ -28,11 +28,11 @@ public interface DOMNotificationService extends DOMService {
      * @return Registration handle. Invoking {@link ListenerRegistration#close()} will stop the
      *         delivery of notifications to the listener
      * @throws IllegalArgumentException if types is empty or contains an invalid element, such as
-     *         null or a SchemaPath which does not represent a valid {@link DOMNotification} type.
+     *         null or a schema node identifier which does not represent a valid {@link DOMNotification} type.
      * @throws NullPointerException if either of the arguments is null
      */
     <T extends DOMNotificationListener> ListenerRegistration<T>
-            registerNotificationListener(@NonNull T listener, @NonNull Collection<SchemaPath> types);
+            registerNotificationListener(@NonNull T listener, @NonNull Collection<Absolute> types);
 
     /**
      * Register a {@link DOMNotificationListener} to receive a set of notifications. As with other
@@ -45,10 +45,11 @@ public interface DOMNotificationService extends DOMService {
      * @return Registration handle. Invoking {@link ListenerRegistration#close()} will stop the
      *         delivery of notifications to the listener
      * @throws IllegalArgumentException if types is empty or contains an invalid element, such as
-     *         null or a SchemaPath which does not represent a valid {@link DOMNotification} type.
+     *         null or a schema node identifier which does not represent a valid {@link DOMNotification} type.
      * @throws NullPointerException if listener is null
      */
-    // FIXME: Java 8: provide a default implementation of this method.
-    <T extends DOMNotificationListener> ListenerRegistration<T>
-            registerNotificationListener(@NonNull T listener, SchemaPath... types);
+    default <T extends DOMNotificationListener> ListenerRegistration<T>
+            registerNotificationListener(@NonNull final T listener, final Absolute... types) {
+        return registerNotificationListener(listener, Arrays.asList(types));
+    }
 }