Skip to content

Commit 2cff355

Browse files
committed
Get rid of the separate policy listeners files for now.
1 parent cff9259 commit 2cff355

File tree

6 files changed

+65
-178
lines changed

6 files changed

+65
-178
lines changed

src/main/java/dev/failsafe/CircuitBreakerBuilder.java

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
*/
1616
package dev.failsafe;
1717

18+
import dev.failsafe.event.CircuitBreakerStateChangedEvent;
1819
import dev.failsafe.event.EventListener;
1920
import dev.failsafe.internal.CircuitBreakerImpl;
2021
import dev.failsafe.internal.util.Assert;
21-
import dev.failsafe.event.CircuitBreakerStateChangedEvent;
2222

2323
import java.time.Duration;
2424
import java.util.function.BiPredicate;
@@ -51,7 +51,7 @@
5151
*/
5252
public class CircuitBreakerBuilder<R>
5353
extends DelayablePolicyBuilder<CircuitBreakerBuilder<R>, CircuitBreakerConfig<R>, R>
54-
implements CircuitBreakerListeners<CircuitBreakerBuilder<R>, R> {
54+
implements PolicyListeners<CircuitBreakerBuilder<R>, R> {
5555

5656
CircuitBreakerBuilder() {
5757
super(new CircuitBreakerConfig<>());
@@ -67,19 +67,34 @@ public CircuitBreaker<R> build() {
6767
return new CircuitBreakerImpl<>(new CircuitBreakerConfig<>(config));
6868
}
6969

70-
@Override
70+
/**
71+
* Calls the {@code listener} when the circuit is closed.
72+
* <p>Note: Any exceptions that are thrown from within the {@code listener} are ignored.</p>
73+
*
74+
* @throws NullPointerException if {@code listener} is null
75+
*/
7176
public CircuitBreakerBuilder<R> onClose(EventListener<CircuitBreakerStateChangedEvent> listener) {
7277
config.closeListener = Assert.notNull(listener, "runnable");
7378
return this;
7479
}
7580

76-
@Override
81+
/**
82+
* Calls the {@code listener} when the circuit is half-opened.
83+
* <p>Note: Any exceptions that are thrown within the {@code listener} are ignored.</p>
84+
*
85+
* @throws NullPointerException if {@code listener} is null
86+
*/
7787
public CircuitBreakerBuilder<R> onHalfOpen(EventListener<CircuitBreakerStateChangedEvent> listener) {
7888
config.halfOpenListener = Assert.notNull(listener, "runnable");
7989
return this;
8090
}
8191

82-
@Override
92+
/**
93+
* Calls the {@code listener} when the circuit is opened.
94+
* <p>Note: Any exceptions that are thrown within the {@code listener} are ignored.</p>
95+
*
96+
* @throws NullPointerException if {@code listener} is null
97+
*/
8398
public CircuitBreakerBuilder<R> onOpen(EventListener<CircuitBreakerStateChangedEvent> listener) {
8499
config.openListener = Assert.notNull(listener, "listener");
85100
return this;

src/main/java/dev/failsafe/CircuitBreakerListeners.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

src/main/java/dev/failsafe/FallbackBuilder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
* @see FallbackConfig
5050
*/
5151
public class FallbackBuilder<R> extends FailurePolicyBuilder<FallbackBuilder<R>, FallbackConfig<R>, R>
52-
implements FallbackListeners<FallbackBuilder<R>, R> {
52+
implements PolicyListeners<FallbackBuilder<R>, R> {
5353

5454
FallbackBuilder(CheckedFunction<ExecutionAttemptedEvent<R>, R> fallback,
5555
CheckedFunction<ExecutionAttemptedEvent<R>, CompletableFuture<R>> fallbackStage) {
@@ -65,7 +65,11 @@ public Fallback<R> build() {
6565
return new FallbackImpl<>(new FallbackConfig<>(config));
6666
}
6767

68-
@Override
68+
/**
69+
* Registers the {@code listener} to be called when the last execution attempt prior to the fallback failed. You can
70+
* also use {@link #onFailure(EventListener) onFailure} to determine when the fallback attempt also fails.
71+
* <p>Note: Any exceptions that are thrown from within the {@code listener} are ignored.</p>
72+
*/
6973
public FallbackBuilder<R> onFailedAttempt(EventListener<ExecutionAttemptedEvent<R>> listener) {
7074
config.failedAttemptListener = Assert.notNull(listener, "listener");
7175
return this;

src/main/java/dev/failsafe/FallbackListeners.java

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/dev/failsafe/RetryPolicyBuilder.java

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717

1818
import dev.failsafe.event.EventListener;
1919
import dev.failsafe.event.ExecutionAttemptedEvent;
20-
import dev.failsafe.internal.util.Assert;
2120
import dev.failsafe.event.ExecutionCompletedEvent;
2221
import dev.failsafe.event.ExecutionScheduledEvent;
2322
import dev.failsafe.internal.RetryPolicyImpl;
23+
import dev.failsafe.internal.util.Assert;
2424

2525
import java.time.Duration;
2626
import java.time.temporal.ChronoUnit;
@@ -59,7 +59,7 @@
5959
* @see RetryPolicyConfig
6060
*/
6161
public class RetryPolicyBuilder<R> extends DelayablePolicyBuilder<RetryPolicyBuilder<R>, RetryPolicyConfig<R>, R>
62-
implements RetryPolicyListeners<RetryPolicyBuilder<R>, R> {
62+
implements PolicyListeners<RetryPolicyBuilder<R>, R> {
6363

6464
private static final int DEFAULT_MAX_RETRIES = 2;
6565

@@ -159,31 +159,63 @@ public RetryPolicyBuilder<R> abortWhen(R result) {
159159
return this;
160160
}
161161

162-
@Override
162+
/**
163+
* Registers the {@code listener} to be called when an execution is aborted.
164+
* <p>Note: Any exceptions that are thrown from within the {@code listener} are ignored. To provide an alternative
165+
* result for a failed execution, use a {@link Fallback}.</p>
166+
*/
163167
public RetryPolicyBuilder<R> onAbort(EventListener<ExecutionCompletedEvent<R>> listener) {
164168
config.abortListener = Assert.notNull(listener, "listener");
165169
return this;
166170
}
167171

168-
@Override
172+
/**
173+
* Registers the {@code listener} to be called when an execution attempt fails. You can also use {@link
174+
* #onFailure(EventListener) onFailure} to determine when the execution attempt fails <i>and</i> and all retries have
175+
* failed.
176+
* <p>Note: Any exceptions that are thrown from within the {@code listener} are ignored. To provide an alternative
177+
* result for a failed execution, use a {@link Fallback}.</p>
178+
*/
169179
public RetryPolicyBuilder<R> onFailedAttempt(EventListener<ExecutionAttemptedEvent<R>> listener) {
170180
config.failedAttemptListener = Assert.notNull(listener, "listener");
171181
return this;
172182
}
173183

174-
@Override
184+
/**
185+
* Registers the {@code listener} to be called when an execution fails and the {@link
186+
* RetryPolicyConfig#getMaxRetries() max retry attempts} or {@link RetryPolicyConfig#getMaxDuration() max duration}
187+
* are exceeded.
188+
* <p>Note: Any exceptions that are thrown from within the {@code listener} are ignored. To provide an alternative
189+
* result for a failed execution, use a {@link Fallback}.</p>
190+
*/
175191
public RetryPolicyBuilder<R> onRetriesExceeded(EventListener<ExecutionCompletedEvent<R>> listener) {
176192
config.retriesExceededListener = Assert.notNull(listener, "listener");
177193
return this;
178194
}
179195

180-
@Override
196+
/**
197+
* Registers the {@code listener} to be called when a retry is about to be attempted.
198+
* <p>Note: Any exceptions that are thrown from within the {@code listener} are ignored. To provide an alternative
199+
* result for a failed execution, use a {@link Fallback}.</p>
200+
*
201+
* @see #onRetryScheduled(EventListener)
202+
*/
181203
public RetryPolicyBuilder<R> onRetry(EventListener<ExecutionAttemptedEvent<R>> listener) {
182204
config.retryListener = Assert.notNull(listener, "listener");
183205
return this;
184206
}
185207

186-
@Override
208+
/**
209+
* Registers the {@code listener} to be called when a retry for an async call is about to be scheduled. This method
210+
* differs from {@link #onRetry(EventListener)} since it is called when a retry is initially scheduled but before any
211+
* configured delay, whereas {@link #onRetry(EventListener) onRetry} is called after a delay, just before the retry
212+
* attempt takes place.
213+
* <p>
214+
* <p>Note: Any exceptions that are thrown from within the {@code listener} are ignored. To provide an alternative
215+
* result for a failed execution, use a {@link Fallback}.</p>
216+
*
217+
* @see #onRetry(EventListener)
218+
*/
187219
public RetryPolicyBuilder<R> onRetryScheduled(EventListener<ExecutionScheduledEvent<R>> listener) {
188220
config.retryScheduledListener = Assert.notNull(listener, "listener");
189221
return this;

src/main/java/dev/failsafe/RetryPolicyListeners.java

Lines changed: 0 additions & 77 deletions
This file was deleted.

0 commit comments

Comments
 (0)