X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fapi%2FDOMNotificationPublishService.java;h=f6dcf4789010ab1792b5844cced59b757bbf8b8d;hb=7909da61772157584348aabc15a2cf4aa8aa78e9;hp=03332d4837a6c70023b161baf4b76326643ab86e;hpb=43e28da95d3511cf73882c16368c88295df7d35d;p=mdsal.git diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMNotificationPublishService.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMNotificationPublishService.java index 03332d4837..f6dcf47890 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMNotificationPublishService.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMNotificationPublishService.java @@ -7,53 +7,49 @@ */ package org.opendaylight.mdsal.dom.api; -import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import java.util.concurrent.TimeUnit; -import javax.annotation.Nonnegative; -import javax.annotation.Nonnull; +import org.checkerframework.checker.index.qual.NonNegative; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; /** - * A {@link DOMService} which allows its user to send {@link DOMNotification}s. It - * provides two styles of initiating the notification delivery, similar to - * {@link java.util.concurrent.BlockingQueue}: - * - a put-style method which waits until the implementation can accept the notification - * for delivery, and - * - an offer-style method, which attempts to enqueue the notification, but allows - * the caller to specify that it should never wait, or put an upper bound on how - * long it is going to wait. + * A {@link DOMService} which allows its user to publish top-level (YANG 1.0) {@link DOMNotification}s. It provides two + * styles of initiating the notification delivery, similar to {@link java.util.concurrent.BlockingQueue}: + * */ public interface DOMNotificationPublishService extends DOMService { /** * Well-known value indicating that the implementation is currently not * able to accept a notification. */ - ListenableFuture REJECTED = Futures.immediateFailedFuture(new DOMNotificationRejectedException("Unacceptable blocking conditions encountered")); + ListenableFuture REJECTED = FluentFutures.immediateFailedFluentFuture( + new DOMNotificationRejectedException("Unacceptable blocking conditions encountered")); /** * Publish a notification. The result of this method is a {@link ListenableFuture} which will * complete once the notification has been delivered to all immediate registrants. The type of * the object resulting from the future is not defined and implementations may use it to convey * additional information related to the publishing process. - * * Abstract subclasses can refine the return type as returning a promise of a more specific * type, e.g.: - * * public interface DeliveryStatus { int getListenerCount(); } ListenableFuture<? extends * DeliveryStatus>[ putNotification(DOMNotification notification); - * * Once the Future succeeds, the resulting object can be queried for traits using instanceof, * e.g: - * * // Can block when (for example) the implemention's ThreadPool queue is full Object o = * service.putNotification(notif).get(); if (o instanceof DeliveryStatus) { DeliveryStatus ds = * (DeliveryStatus)o; LOG.debug("Notification was received by {} listeners", * ds.getListenerCount();); } } - * * In case an implementation is running out of resources, it can block the calling thread until * enough resources become available to accept the notification for processing, or it is * interrupted. * + *

* Caution: completion here means that the implementation has completed processing of the * notification. This does not mean that all existing registrants have seen the notification. * Most importantly, the delivery process at other cluster nodes may have not begun yet. @@ -64,7 +60,8 @@ public interface DOMNotificationPublishService extends DOMService { * @throws InterruptedException if interrupted while waiting * @throws NullPointerException if notification is null. */ - @Nonnull ListenableFuture putNotification(@Nonnull DOMNotification notification) throws InterruptedException; + @NonNull ListenableFuture putNotification(@NonNull DOMNotification notification) + throws InterruptedException; /** * Attempt to publish a notification. The result of this method is a {@link ListenableFuture} @@ -81,7 +78,7 @@ public interface DOMNotificationPublishService extends DOMService { * delivery. * @throws NullPointerException if notification is null. */ - @Nonnull ListenableFuture offerNotification(@Nonnull DOMNotification notification); + @NonNull ListenableFuture offerNotification(@NonNull DOMNotification notification); /** * Attempt to publish a notification. The result of this method is a {@link ListenableFuture} @@ -102,6 +99,6 @@ public interface DOMNotificationPublishService extends DOMService { * @throws NullPointerException if notification or unit is null. * @throws IllegalArgumentException if timeout is negative. */ - @Nonnull ListenableFuture offerNotification(@Nonnull DOMNotification notification, - @Nonnegative long timeout, @Nonnull TimeUnit unit) throws InterruptedException; + @NonNull ListenableFuture offerNotification(@NonNull DOMNotification notification, + @NonNegative long timeout, @NonNull TimeUnit unit) throws InterruptedException; }