Interface RetryPolicy

  • All Superinterfaces:
    Supplier<RetryPolicy>
    All Known Implementing Classes:
    SimpleRetryPolicy
    Functional Interface:
    This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @FunctionalInterface
    public interface RetryPolicy
    extends Supplier<RetryPolicy>
    Mechanism for controlling retry of attempts to load data by a ConfigSource.

    When a Config attempts to load the underlying data of a ConfigSource it uses a RetryPolicy to govern if and how it retries the load operation in case of errors.

    The execute(java.util.function.Supplier) method of each policy implementation must perform at least one attempt to load the data, even if it chooses not to retry in case of errors.

    • Method Detail

      • execute

        <T> T execute​(Supplier<T> call)
        Invokes the provided Supplier to read the source data and returns that data.

        The implementation of this method incorporates the retry logic.

        Type Parameters:
        T - result type
        Parameters:
        call - supplier of T
        Returns:
        loaded data returned by the provided Supplier
      • cancel

        default boolean cancel​(boolean mayInterruptIfRunning)
        Cancels the current use of the retry policy.

        Implementations should correctly handle three cases:

        1. cancel invoked when no invocation of execute is in progress,
        2. cancel invoked when an invocation of execute is active but no attempted load is actually in progress (e.g., a prior attempt failed and the retry policy is waiting for some time to pass before trying again), and
        3. cancel invoked while a load attempt is in progress.
        Parameters:
        mayInterruptIfRunning - whether an in-progress load attempt should be interrupted
        Returns:
        false if the task could not be canceled, typically because it has already completed; true otherwise