Class RetryableAmLink

java.lang.Object
org.forgerock.openig.tools.notifications.ws.link.RetryableAmLink
All Implemented Interfaces:
AmLink, AmLinkListener

public final class RetryableAmLink extends Object implements AmLink, AmLinkListener
Retry the AmLink start according to criterion. This class is also responsible for getting the SSO token needed by AM for WebSocket authentication and refreshing it upon authorization failure.
See Also:
  • Method Details

    • start

      public Promise<Void,Exception> start()
      Description copied from interface: AmLink
      Start the AmLink. The AmLink is considered ready for use only when the resulting promise has successfully completed. In case of a failed promise, the instance is considered as already closed.

      Note that notifications are guaranteed to be received AT LEAST once. Duplicate notification may occur.

      Specified by:
      start in interface AmLink
      Returns:
      A promise of this AmLink's start completion.
    • close

      public Promise<Void,Exception> close()
      Description copied from interface: AmLink
      Close the AmLink and its associated resources. The instance can't be reused afterward.
      Specified by:
      close in interface AmLink
      Returns:
      A promise indicating the AmLink has been closed
    • subscribe

      public Promise<Void,Exception> subscribe(String topic)
      Description copied from interface: AmLink
      Subscribe to an AM topic. After successful subscription, the notification consumer (supplied in will begin receiving notifications on this topic.
      Specified by:
      subscribe in interface AmLink
      Parameters:
      topic - The AM topic to subscribe to.
      Returns:
      A promise of a successful subscription to the AM topic.
    • unsubscribe

      public Promise<Void,Exception> unsubscribe(String topic)
      Description copied from interface: AmLink
      Unsubscribe from an AM topic. After successful unsubscribe request, the notification consumer will stop receiving notifications on this topic.
      Specified by:
      unsubscribe in interface AmLink
      Parameters:
      topic - The AM topic to un-subscribe from.
      Returns:
      A promise of a successful un-subscription to the AM topic.
    • onDisconnection

      public void onDisconnection()
      Description copied from interface: AmLinkListener
      The handler to call in case of a disconnection. When this handler is called, the instance is considered as closed. Can only be called after the start promise successful completion, and before every ongoing (un)subscribe promise failure.
      Specified by:
      onDisconnection in interface AmLinkListener
    • onNotification

      public void onNotification(Notification notification)
      Description copied from interface: AmLinkListener
      The notification handler, will receive all notifications sent by AM. Duplicate notifications may occur.
      Specified by:
      onNotification in interface AmLinkListener
      Parameters:
      notification - the received notification
    • asSupplier

      public static AmLink.AmLinkSupplier asSupplier(boolean stopOnSslFailure, int retryLimit, Duration delay, AsyncRefreshableSupplier<SsoToken,AuthenticationException> tokenProvider, RetryableAmLink.AmLinkSupplierFromToken amLinkSupplierFromToken, ScheduledExecutorService executor, org.forgerock.openig.tracing.TracingProvider tracingProvider)
      Builds a supplier of RetryableAmLink.
      Parameters:
      stopOnSslFailure - Whether the AmLink should retry or not on SSL Failure
      retryLimit - The maximum number of retries
      delay - The delay between retries
      tokenProvider - The Token provider to use to refresh tokens
      amLinkSupplierFromToken - A supplier of AmLinkSuppliers based on token
      executor - The ExecutorService to use to schedule retries
      tracingProvider - the TracingProvider to use when working with AM.
      Returns:
      a supplier of RetryableAmLink.
    • asInfiniteRetrySupplier

      public static AmLink.AmLinkSupplier asInfiniteRetrySupplier(Duration delay, AsyncRefreshableSupplier<SsoToken,AuthenticationException> tokenProvider, RetryableAmLink.AmLinkSupplierFromToken amLinkSupplierFromToken, ScheduledExecutorService executor, org.forgerock.openig.tracing.TracingProvider tracingProvider)
      Builds a supplier of RetryableAmLink without any retry limit.
      Parameters:
      delay - The delay between retries
      tokenProvider - The Token provider to use to refresh tokens
      amLinkSupplierFromToken - A supplier of AmLinkSuppliers based on token
      executor - The ExecutorService to use to schedule retries
      tracingProvider - the TracingProvider to use when working with AM.
      Returns:
      a supplier of RetryableAmLink.