Skip to content

Commit 0cdd56f

Browse files
Extend {Flux,Mono}OnErrorComplete Refaster rules (#1939)
1 parent f5b0205 commit 0cdd56f

File tree

3 files changed

+54
-14
lines changed

3 files changed

+54
-14
lines changed

error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1658,11 +1658,23 @@ Flux<T> after(
16581658
}
16591659
}
16601660

1661-
/** Prefer {@link Mono#onErrorComplete()} over more contrived alternatives. */
1662-
static final class MonoOnErrorComplete<T> {
1661+
/**
1662+
* Prefer {@link Mono#onErrorComplete()} over more contrived alternatives, and don't chain it with
1663+
* redundant calls to {@link Mono#doOnError}.
1664+
*/
1665+
static final class MonoOnErrorComplete<T, E extends Throwable> {
16631666
@BeforeTemplate
1664-
Mono<T> before(Mono<T> mono) {
1665-
return mono.onErrorResume(e -> Mono.empty());
1667+
Mono<T> before(
1668+
Mono<T> mono,
1669+
Consumer<? super Throwable> onThrowable,
1670+
Class<E> clazz,
1671+
Consumer<? super E> onError,
1672+
Predicate<? super Throwable> predicate) {
1673+
return Refaster.anyOf(
1674+
mono.onErrorResume(e -> Mono.empty()),
1675+
mono.onErrorComplete().doOnError(onThrowable),
1676+
mono.onErrorComplete().doOnError(clazz, onError),
1677+
mono.onErrorComplete().doOnError(predicate, onThrowable));
16661678
}
16671679

16681680
@AfterTemplate
@@ -1671,11 +1683,23 @@ Mono<T> after(Mono<T> mono) {
16711683
}
16721684
}
16731685

1674-
/** Prefer {@link Flux#onErrorComplete()} over more contrived alternatives. */
1675-
static final class FluxOnErrorComplete<T> {
1686+
/**
1687+
* Prefer {@link Flux#onErrorComplete()} over more contrived alternatives, and don't chain it with
1688+
* redundant calls to {@link Flux#doOnError}.
1689+
*/
1690+
static final class FluxOnErrorComplete<T, E extends Throwable> {
16761691
@BeforeTemplate
1677-
Flux<T> before(Flux<T> flux) {
1678-
return flux.onErrorResume(e -> Refaster.anyOf(Mono.empty(), Flux.empty()));
1692+
Flux<T> before(
1693+
Flux<T> flux,
1694+
Consumer<? super Throwable> onThrowable,
1695+
Class<E> clazz,
1696+
Consumer<? super E> onError,
1697+
Predicate<? super Throwable> predicate) {
1698+
return Refaster.anyOf(
1699+
flux.onErrorResume(e -> Refaster.anyOf(Mono.empty(), Flux.empty())),
1700+
flux.onErrorComplete().doOnError(onThrowable),
1701+
flux.onErrorComplete().doOnError(clazz, onError),
1702+
flux.onErrorComplete().doOnError(predicate, onThrowable));
16791703
}
16801704

16811705
@AfterTemplate

error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -620,14 +620,21 @@ Flux<Integer> testFluxDoOnError() {
620620
return Flux.just(1).doOnError(IllegalArgumentException.class::isInstance, e -> {});
621621
}
622622

623-
Mono<Integer> testMonoOnErrorComplete() {
624-
return Mono.just(1).onErrorResume(e -> Mono.empty());
623+
ImmutableSet<Mono<Integer>> testMonoOnErrorComplete() {
624+
return ImmutableSet.of(
625+
Mono.just(1).onErrorResume(e -> Mono.empty()),
626+
Mono.just(2).onErrorComplete().doOnError(e -> {}),
627+
Mono.just(3).onErrorComplete().doOnError(IllegalArgumentException.class, e -> {}),
628+
Mono.just(4).onErrorComplete().doOnError(e -> true, e -> {}));
625629
}
626630

627631
ImmutableSet<Flux<Integer>> testFluxOnErrorComplete() {
628632
return ImmutableSet.of(
629633
Flux.just(1).onErrorResume(e -> Mono.empty()),
630-
Flux.just(2).onErrorResume(e -> Flux.empty()));
634+
Flux.just(2).onErrorResume(e -> Flux.empty()),
635+
Flux.just(3).onErrorComplete().doOnError(e -> {}),
636+
Flux.just(4).onErrorComplete().doOnError(IllegalArgumentException.class, e -> {}),
637+
Flux.just(5).onErrorComplete().doOnError(e -> true, e -> {}));
631638
}
632639

633640
ImmutableSet<Mono<Integer>> testMonoOnErrorCompleteClass() {

error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -599,12 +599,21 @@ Flux<Integer> testFluxDoOnError() {
599599
return Flux.just(1).doOnError(IllegalArgumentException.class, e -> {});
600600
}
601601

602-
Mono<Integer> testMonoOnErrorComplete() {
603-
return Mono.just(1).onErrorComplete();
602+
ImmutableSet<Mono<Integer>> testMonoOnErrorComplete() {
603+
return ImmutableSet.of(
604+
Mono.just(1).onErrorComplete(),
605+
Mono.just(2).onErrorComplete(),
606+
Mono.just(3).onErrorComplete(),
607+
Mono.just(4).onErrorComplete());
604608
}
605609

606610
ImmutableSet<Flux<Integer>> testFluxOnErrorComplete() {
607-
return ImmutableSet.of(Flux.just(1).onErrorComplete(), Flux.just(2).onErrorComplete());
611+
return ImmutableSet.of(
612+
Flux.just(1).onErrorComplete(),
613+
Flux.just(2).onErrorComplete(),
614+
Flux.just(3).onErrorComplete(),
615+
Flux.just(4).onErrorComplete(),
616+
Flux.just(5).onErrorComplete());
608617
}
609618

610619
ImmutableSet<Mono<Integer>> testMonoOnErrorCompleteClass() {

0 commit comments

Comments
 (0)