Class NotificationService

java.lang.Object
alpine.notification.NotificationService
All Implemented Interfaces:
INotificationService

public final class NotificationService extends Object implements INotificationService
The NotificationService provides a way to dispatch (publish) notifications to zero or more subscribers. Architecturally, the NotificationService is similar to IEventService but the objectives and logic of notification processing vary enough to warrant implementations specific to notifications.
Since:
1.3.0
Author:
Steve Springett
  • Method Details

    • getInstance

      public static NotificationService getInstance()
    • publish

      public void publish(Notification notification)
      Publishes Notification. Published notifications will get dispatched to all subscribers in the order in which they subscribed. Subscribers are informed asynchronously one after the next.
      Specified by:
      publish in interface INotificationService
      Parameters:
      notification - A Notification to publish
      Since:
      1.3.0
    • subscribe

      public void subscribe(Class<? extends Notification> notificationClass, Subscription subscription)
      Subscribes to a Notification. Subscribes are automatically notified of all notifications for which they are subscribed.
      Specified by:
      subscribe in interface INotificationService
      Parameters:
      notificationClass - The notification class to subscribe to
      subscription - The Subscription (containing the subscriber) that gets informed
      Since:
      1.3.0
    • subscribe

      public void subscribe(Subscription subscription)
      Subscribes to a Notification. Subscribes are automatically notified of all notifications for which they are subscribed.
      Specified by:
      subscribe in interface INotificationService
      Parameters:
      subscription - The Subscription (containing the subscriber) that gets informed
      Since:
      1.3.0
    • unsubscribe

      public void unsubscribe(Subscription subscription)
      Unsubscribes a subscriber. All notifications the subscriber has subscribed to will be unsubscribed. Once unsubscribed, the subscriber will no longer be informed of published notifications.
      Specified by:
      unsubscribe in interface INotificationService
      Parameters:
      subscription - The Subscription to unsubscribe.
      Since:
      1.3.0
    • hasSubscriptions

      public boolean hasSubscriptions(Notification notification)
      Determines if the specified notification is able to be processed by the NotificationService. If a subscriber exists for the notification, this method will return true, otherwise false.
      Specified by:
      hasSubscriptions in interface INotificationService
      Parameters:
      notification - the notification to query if subscribers exist
      Returns:
      true if the notification has subscribers, false if not
      Since:
      1.3.0
    • shutdown

      public void shutdown()
      Shuts down the executioner. Once shut down, future work will not be performed. This should only be called prior to the application being shut down.
      Specified by:
      shutdown in interface INotificationService
      Since:
      1.3.0
    • shutdown

      public boolean shutdown(Duration timeout)
      Shuts down this INotificationService, and waits for already queued notifications to be processed until a given timeout elapses.

      Notifications enqueued during shutdown will not be processed.

      Specified by:
      shutdown in interface INotificationService
      Parameters:
      timeout - The Duration to wait for notification processing to complete
      Returns:
      true when all queued notifications were processed prior to timeout elapsing, otherwise false