Reputation: 3902
I was playing around with reactor
public @NotNull Mono<ServerResponse> findXXXXSse(final ServerRequest request) {
return request.bodyToMono(XXXXSearch.class)
.doOnNext(this::validate)
.flatMap(this::findXXXXSse)
.switchIfEmpty(this.emptyBodyException());
}
And I was wondering if the use of .doOnNext(this::validate)
was correct or not. From my point of view, I'm not sure the validate is called before the findXXXXSse
?
Am I wrong?
Upvotes: 3
Views: 2759
Reputation: 289
Flux.doOnNext
method should always be used as a side-effect.
The documentation says "Add behavior (side-effect) triggered when the Flux emits an item." Refer : https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#doOnNext-java.util.function.Consumer-
I assume you want to resume your chain only when the validation is successful, i.e., .flatMap(this::findXXXXSse)
should only be called if validation succeeds.
You can use filter(this::validate)
and add a validate(XXXXSearch.class)
method to return true/false.
Upvotes: 5