T
- the value typepublic abstract class Maybe<T> extends Object implements MaybeSource<T>
Maybe
class represents a deferred computation and emission of a single value, no value at all or an exception.
The Maybe
class implements the MaybeSource
base interface and the default consumer
type it interacts with is the MaybeObserver
via the subscribe(MaybeObserver)
method.
The Maybe
operates with the following sequential protocol:
onSubscribe (onSuccess | onError | onComplete)?
Note that onSuccess
, onError
and onComplete
are mutually exclusive events; unlike Observable
,
onSuccess
is never followed by onError
or onComplete
.
Like Observable
, a running Maybe
can be stopped through the Disposable
instance
provided to consumers through MaybeObserver.onSubscribe(io.reactivex.rxjava3.disposables.Disposable)
.
Like an Observable
, a Maybe
is lazy, can be either "hot" or "cold", synchronous or
asynchronous. Maybe
instances returned by the methods of this class are cold
and there is a standard hot implementation in the form of a subject:
MaybeSubject
.
The documentation for this class makes use of marble diagrams. The following legend explains these diagrams:
See Flowable
or Observable
for the
implementation of the Reactive Pattern for a stream or vector of values.
Example:
Disposable d = Maybe.just("Hello World")
.delay(10, TimeUnit.SECONDS, Schedulers.io())
.subscribeWith(new DisposableMaybeObserver<String>() {
@Override
public void onStart() {
System.out.println("Started");
}
@Override
public void onSuccess(String value) {
System.out.println("Success: " + value);
}
@Override
public void onError(Throwable error) {
error.printStackTrace();
}
@Override
public void onComplete() {
System.out.println("Done!");
}
});
Thread.sleep(5000);
d.dispose();
Note that by design, subscriptions via subscribe(MaybeObserver)
can't be disposed
from the outside (hence the
void
return of the subscribe(MaybeObserver)
method) and it is the
responsibility of the implementor of the MaybeObserver
to allow this to happen.
RxJava supports such usage with the standard
DisposableMaybeObserver
instance.
For convenience, the subscribeWith(MaybeObserver)
method is provided as well to
allow working with a MaybeObserver
(or subclass) instance to be applied with in
a fluent manner (such as in the example above).
DisposableMaybeObserver
Constructor and Description |
---|
Maybe() |
Modifier and Type | Method and Description |
---|---|
static <T> @NonNull Maybe<T> |
amb(@NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Runs multiple MaybeSources and signals the events of the first one that signals (disposing
the rest).
|
static <T> @NonNull Maybe<T> |
ambArray(MaybeSource<? extends T>... sources)
Runs multiple MaybeSources and signals the events of the first one that signals (disposing
the rest).
|
@NonNull Maybe<T> |
ambWith(@NonNull MaybeSource<? extends T> other)
Mirrors the MaybeSource (current or provided) that first signals an event.
|
T |
blockingGet()
Waits in a blocking fashion until the current Maybe signals a success value (which is returned),
null if completed or an exception (which is propagated).
|
T |
blockingGet(T defaultValue)
Waits in a blocking fashion until the current Maybe signals a success value (which is returned),
defaultValue if completed or an exception (which is propagated).
|
@NonNull Maybe<T> |
cache()
Returns a Maybe that subscribes to this Maybe lazily, caches its event
and replays it, to all the downstream subscribers.
|
<U> @NonNull Maybe<U> |
cast(@NonNull Class<? extends U> clazz)
Casts the success value of the current Maybe into the target type or signals a
ClassCastException if not compatible.
|
<R> @NonNull Maybe<R> |
compose(@NonNull MaybeTransformer<? super T,? extends R> transformer)
Transform a Maybe by applying a particular Transformer function to it.
|
static <T> @NonNull Flowable<T> |
concat(@NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Concatenate the single values, in a non-overlapping fashion, of the MaybeSource sources provided by
an Iterable sequence.
|
static <T> @NonNull Flowable<T> |
concat(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2)
Returns a Flowable that emits the items emitted by two MaybeSources, one after the other.
|
static <T> @NonNull Flowable<T> |
concat(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2,
@NonNull MaybeSource<? extends T> source3)
Returns a Flowable that emits the items emitted by three MaybeSources, one after the other.
|
static <T> @NonNull Flowable<T> |
concat(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2,
@NonNull MaybeSource<? extends T> source3,
@NonNull MaybeSource<? extends T> source4)
Returns a Flowable that emits the items emitted by four MaybeSources, one after the other.
|
static <T> @NonNull Flowable<T> |
concat(@NonNull Publisher<? extends MaybeSource<? extends T>> sources)
Concatenate the single values, in a non-overlapping fashion, of the MaybeSource sources provided by
a Publisher sequence.
|
static <T> @NonNull Flowable<T> |
concat(@NonNull Publisher<? extends MaybeSource<? extends T>> sources,
int prefetch)
Concatenate the single values, in a non-overlapping fashion, of the MaybeSource sources provided by
a Publisher sequence.
|
static <T> @NonNull Flowable<T> |
concatArray(MaybeSource<? extends T>... sources)
Concatenate the single values, in a non-overlapping fashion, of the MaybeSource sources in the array.
|
static <T> @NonNull Flowable<T> |
concatArrayDelayError(MaybeSource<? extends T>... sources)
Concatenates a variable number of MaybeSource sources and delays errors from any of them
till all terminate.
|
static <T> @NonNull Flowable<T> |
concatArrayEager(MaybeSource<? extends T>... sources)
Concatenates a sequence of MaybeSource eagerly into a single stream of values.
|
static <T> @NonNull Flowable<T> |
concatDelayError(@NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Concatenates the Iterable sequence of MaybeSources into a single sequence by subscribing to each MaybeSource,
one after the other, one at a time and delays any errors till the all inner MaybeSources terminate.
|
static <T> @NonNull Flowable<T> |
concatDelayError(@NonNull Publisher<? extends MaybeSource<? extends T>> sources)
Concatenates the Publisher sequence of Publishers into a single sequence by subscribing to each inner Publisher,
one after the other, one at a time and delays any errors till the all inner and the outer Publishers terminate.
|
static <T> @NonNull Flowable<T> |
concatEager(@NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Concatenates a sequence of MaybeSources eagerly into a single stream of values.
|
static <T> @NonNull Flowable<T> |
concatEager(@NonNull Publisher<? extends MaybeSource<? extends T>> sources)
Concatenates a Publisher sequence of MaybeSources eagerly into a single stream of values.
|
<R> @NonNull Maybe<R> |
concatMap(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Returns a Maybe that is based on applying a specified function to the item emitted by the source Maybe,
where that function returns a MaybeSource.
|
@NonNull Flowable<T> |
concatWith(@NonNull MaybeSource<? extends T> other)
Returns a Flowable that emits the items emitted from the current MaybeSource, then the next, one after
the other, without interleaving them.
|
@NonNull Single<Boolean> |
contains(@NonNull Object item)
Returns a Single that emits a Boolean that indicates whether the source Maybe emitted a
specified item.
|
@NonNull Single<Long> |
count()
Returns a Single that counts the total number of items emitted (0 or 1) by the source Maybe and emits
this count as a 64-bit Long.
|
static <T> @NonNull Maybe<T> |
create(@NonNull MaybeOnSubscribe<T> onSubscribe)
Provides an API (via a cold Maybe) that bridges the reactive world with the callback-style world.
|
@NonNull Single<T> |
defaultIfEmpty(T defaultItem)
Returns a Single that emits the item emitted by the source Maybe or a specified default item
if the source Maybe is empty.
|
static <T> @NonNull Maybe<T> |
defer(@NonNull Supplier<? extends MaybeSource<? extends T>> maybeSupplier)
Calls a Supplier for each individual MaybeObserver to return the actual MaybeSource source to
be subscribed to.
|
@NonNull Maybe<T> |
delay(long delay,
@NonNull TimeUnit unit)
Returns a Maybe that signals the events emitted by the source Maybe shifted forward in time by a
specified delay.
|
@NonNull Maybe<T> |
delay(long delay,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns a Maybe that signals the events emitted by the source Maybe shifted forward in time by a
specified delay running on the specified Scheduler.
|
<U> @NonNull Maybe<T> |
delay(@NonNull Publisher<U> delayIndicator)
Delays the emission of this Maybe until the given Publisher signals an item or completes.
|
@NonNull Maybe<T> |
delaySubscription(long delay,
@NonNull TimeUnit unit)
Returns a Maybe that delays the subscription to the source Maybe by a given amount of time.
|
@NonNull Maybe<T> |
delaySubscription(long delay,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns a Maybe that delays the subscription to the source Maybe by a given amount of time,
both waiting and subscribing on a given Scheduler.
|
<U> @NonNull Maybe<T> |
delaySubscription(@NonNull Publisher<U> subscriptionIndicator)
Returns a Maybe that delays the subscription to this Maybe
until the other Publisher emits an element or completes normally.
|
@NonNull Maybe<T> |
doAfterSuccess(@NonNull Consumer<? super T> onAfterSuccess)
Calls the specified consumer with the success item after this item has been emitted to the downstream.
|
@NonNull Maybe<T> |
doAfterTerminate(@NonNull Action onAfterTerminate)
|
@NonNull Maybe<T> |
doFinally(@NonNull Action onFinally)
Calls the specified action after this Maybe signals onSuccess, onError or onComplete or gets disposed by
the downstream.
|
@NonNull Maybe<T> |
doOnComplete(@NonNull Action onComplete)
Modifies the source Maybe so that it invokes an action when it calls
onComplete . |
@NonNull Maybe<T> |
doOnDispose(@NonNull Action onDispose)
Calls the shared
Action if a MaybeObserver subscribed to the current Maybe
disposes the common Disposable it received via onSubscribe. |
@NonNull Maybe<T> |
doOnError(@NonNull Consumer<? super Throwable> onError)
Calls the shared consumer with the error sent via onError for each
MaybeObserver that subscribes to the current Maybe.
|
@NonNull Maybe<T> |
doOnEvent(@NonNull BiConsumer<? super T,? super Throwable> onEvent)
Calls the given onEvent callback with the (success value, null) for an onSuccess, (null, throwable) for
an onError or (null, null) for an onComplete signal from this Maybe before delivering said
signal to the downstream.
|
@NonNull Maybe<T> |
doOnSubscribe(@NonNull Consumer<? super Disposable> onSubscribe)
Calls the shared consumer with the Disposable sent through the onSubscribe for each
MaybeObserver that subscribes to the current Maybe.
|
@NonNull Maybe<T> |
doOnSuccess(@NonNull Consumer<? super T> onSuccess)
Calls the shared consumer with the success value sent via onSuccess for each
MaybeObserver that subscribes to the current Maybe.
|
@NonNull Maybe<T> |
doOnTerminate(@NonNull Action onTerminate)
Returns a Maybe instance that calls the given onTerminate callback
just before this Maybe completes normally or with an exception.
|
static <T> @NonNull Maybe<T> |
empty()
Returns a (singleton) Maybe instance that calls
onComplete
immediately. |
static <T> @NonNull Maybe<T> |
error(@NonNull Supplier<? extends Throwable> supplier)
Returns a Maybe that invokes a
MaybeObserver 's onError method when the
MaybeObserver subscribes to it. |
static <T> @NonNull Maybe<T> |
error(@NonNull Throwable exception)
Returns a Maybe that invokes a subscriber's
onError method when the
subscriber subscribes to it. |
@NonNull Maybe<T> |
filter(@NonNull Predicate<? super T> predicate)
Filters the success item of the Maybe via a predicate function and emitting it if the predicate
returns true, completing otherwise.
|
<R> @NonNull Maybe<R> |
flatMap(@NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
Returns a Maybe that is based on applying a specified function to the item emitted by the source Maybe,
where that function returns a MaybeSource.
|
<R> @NonNull Maybe<R> |
flatMap(@NonNull Function<? super T,? extends MaybeSource<? extends R>> onSuccessMapper,
@NonNull Function<? super Throwable,? extends MaybeSource<? extends R>> onErrorMapper,
@NonNull Supplier<? extends MaybeSource<? extends R>> onCompleteSupplier)
Maps the onSuccess, onError or onComplete signals of this Maybe into MaybeSource and emits that
MaybeSource's signals.
|
<U,R> @NonNull Maybe<R> |
flatMap(@NonNull Function<? super T,? extends MaybeSource<? extends U>> mapper,
@NonNull BiFunction<? super T,? super U,? extends R> resultSelector)
Returns a Maybe that emits the results of a specified function to the pair of values emitted by the
source Maybe and a specified mapped MaybeSource.
|
@NonNull Completable |
flatMapCompletable(@NonNull Function<? super T,? extends CompletableSource> mapper)
Returns a
Completable that completes based on applying a specified function to the item emitted by the
source Maybe , where that function returns a Completable . |
<R> @NonNull Observable<R> |
flatMapObservable(@NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
Returns an Observable that is based on applying a specified function to the item emitted by the source Maybe,
where that function returns an ObservableSource.
|
<R> @NonNull Flowable<R> |
flatMapPublisher(@NonNull Function<? super T,? extends Publisher<? extends R>> mapper)
Returns a Flowable that emits items based on applying a specified function to the item emitted by the
source Maybe, where that function returns a Publisher.
|
<R> @NonNull Single<R> |
flatMapSingle(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
|
<R> @NonNull Maybe<R> |
flatMapSingleElement(@NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
|
<U> @NonNull Flowable<U> |
flattenAsFlowable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
|
<U> @NonNull Observable<U> |
flattenAsObservable(@NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
Maps the success value of the upstream
Maybe into an Iterable and emits its items as an
Observable sequence. |
<R> @NonNull Flowable<R> |
flattenStreamAsFlowable(@NonNull Function<? super T,? extends Stream<? extends R>> mapper)
|
<R> @NonNull Observable<R> |
flattenStreamAsObservable(@NonNull Function<? super T,? extends Stream<? extends R>> mapper)
Maps the upstream succecss value into a Java
Stream and emits its
items to the downstream consumer as an Observable . |
static <T> @NonNull Maybe<T> |
fromAction(@NonNull Action run)
Returns a Maybe instance that runs the given Action for each subscriber and
emits either its exception or simply completes.
|
static <T> @NonNull Maybe<T> |
fromCallable(@NonNull Callable<? extends T> callable)
Returns a
Maybe that invokes the given Callable for each individual MaybeObserver that
subscribes and emits the resulting non-null item via onSuccess while
considering a null result from the Callable as indication for valueless completion
via onComplete . |
static <T> @NonNull Maybe<T> |
fromCompletable(@NonNull CompletableSource completableSource)
Wraps a CompletableSource into a Maybe.
|
static <T> @NonNull Maybe<T> |
fromCompletionStage(@NonNull CompletionStage<T> stage)
Signals the completion value or error of the given (hot)
CompletionStage -based asynchronous calculation. |
static <T> @NonNull Maybe<T> |
fromFuture(@NonNull Future<? extends T> future)
Converts a
Future into a Maybe, treating a null result as an indication of emptiness. |
static <T> @NonNull Maybe<T> |
fromFuture(@NonNull Future<? extends T> future,
long timeout,
@NonNull TimeUnit unit)
Converts a
Future into a Maybe, with a timeout on the Future. |
static <T> @NonNull Maybe<T> |
fromOptional(@NonNull Optional<T> optional)
Converts the existing value of the provided optional into a
just(Object)
or an empty optional into an empty() Maybe instance. |
static <T> @NonNull Maybe<T> |
fromRunnable(@NonNull Runnable run)
Returns a Maybe instance that runs the given Action for each subscriber and
emits either its exception or simply completes.
|
static <T> @NonNull Maybe<T> |
fromSingle(@NonNull SingleSource<T> singleSource)
Wraps a SingleSource into a Maybe.
|
static <T> @NonNull Maybe<T> |
fromSupplier(@NonNull Supplier<? extends T> supplier)
Returns a
Maybe that invokes the given Supplier for each individual MaybeObserver that
subscribes and emits the resulting non-null item via onSuccess while
considering a null result from the Supplier as indication for valueless completion
via onComplete . |
@NonNull Maybe<T> |
hide()
Hides the identity of this Maybe and its Disposable.
|
@NonNull Completable |
ignoreElement()
Ignores the item emitted by the source Maybe and only calls
onComplete or onError . |
@NonNull Single<Boolean> |
isEmpty()
Returns a Single that emits
true if the source Maybe is empty, otherwise false . |
static <T> @NonNull Maybe<T> |
just(T item)
Returns a
Maybe that emits a specified item. |
<R> @NonNull Maybe<R> |
lift(@NonNull MaybeOperator<? extends R,? super T> lift)
This method requires advanced knowledge about building operators, please consider
other standard composition methods first;
Returns a
Maybe which, when subscribed to, invokes the apply(MaybeObserver) method
of the provided MaybeOperator for each individual downstream Maybe and allows the
insertion of a custom operator by accessing the downstream's MaybeObserver during this subscription phase
and providing a new MaybeObserver , containing the custom operator's intended business logic, that will be
used in the subscription process going further upstream. |
<R> @NonNull Maybe<R> |
map(@NonNull Function<? super T,? extends R> mapper)
Returns a Maybe that applies a specified function to the item emitted by the source Maybe and
emits the result of this function application.
|
<R> @NonNull Maybe<R> |
mapOptional(@NonNull Function<? super T,Optional<? extends R>> mapper)
Maps the upstream success value into an
Optional and emits the contained item if not empty. |
@NonNull Single<Notification<T>> |
materialize()
Maps the signal types of this Maybe into a
Notification of the same kind
and emits it as a single success value to downstream. |
static <T> @NonNull Flowable<T> |
merge(@NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Merges an Iterable sequence of MaybeSource instances into a single Flowable sequence,
running all MaybeSources at once.
|
static <T> @NonNull Maybe<T> |
merge(@NonNull MaybeSource<? extends MaybeSource<? extends T>> source)
Flattens a
MaybeSource that emits a MaybeSource into a single MaybeSource that emits the item
emitted by the nested MaybeSource , without any transformation. |
static <T> @NonNull Flowable<T> |
merge(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2)
Flattens two MaybeSources into a single Flowable, without any transformation.
|
static <T> @NonNull Flowable<T> |
merge(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2,
@NonNull MaybeSource<? extends T> source3)
Flattens three MaybeSources into a single Flowable, without any transformation.
|
static <T> @NonNull Flowable<T> |
merge(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2,
@NonNull MaybeSource<? extends T> source3,
@NonNull MaybeSource<? extends T> source4)
Flattens four MaybeSources into a single Flowable, without any transformation.
|
static <T> @NonNull Flowable<T> |
merge(@NonNull Publisher<? extends MaybeSource<? extends T>> sources)
Merges a Flowable sequence of MaybeSource instances into a single Flowable sequence,
running all MaybeSources at once.
|
static <T> @NonNull Flowable<T> |
merge(@NonNull Publisher<? extends MaybeSource<? extends T>> sources,
int maxConcurrency)
Merges a Flowable sequence of MaybeSource instances into a single Flowable sequence,
running at most maxConcurrency MaybeSources at once.
|
static <T> @NonNull Flowable<T> |
mergeArray(MaybeSource<? extends T>... sources)
Merges an array sequence of MaybeSource instances into a single Flowable sequence,
running all MaybeSources at once.
|
static <T> @NonNull Flowable<T> |
mergeArrayDelayError(MaybeSource<? extends T>... sources)
Flattens an array of MaybeSources into one Flowable, in a way that allows a Subscriber to receive all
successfully emitted items from each of the source MaybeSources without being interrupted by an error
notification from one of them.
|
static <T> @NonNull Flowable<T> |
mergeDelayError(@NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Flattens an Iterable of MaybeSources into one Flowable, in a way that allows a Subscriber to receive all
successfully emitted items from each of the source MaybeSources without being interrupted by an error
notification from one of them.
|
static <T> @NonNull Flowable<T> |
mergeDelayError(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2)
Flattens two MaybeSources into one Flowable, in a way that allows a Subscriber to receive all
successfully emitted items from each of the source MaybeSources without being interrupted by an error
notification from one of them.
|
static <T> @NonNull Flowable<T> |
mergeDelayError(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2,
@NonNull MaybeSource<? extends T> source3)
Flattens three MaybeSource into one Flowable, in a way that allows a Subscriber to receive all
successfully emitted items from all of the source MaybeSources without being interrupted by an error
notification from one of them.
|
static <T> @NonNull Flowable<T> |
mergeDelayError(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2,
@NonNull MaybeSource<? extends T> source3,
@NonNull MaybeSource<? extends T> source4)
Flattens four MaybeSources into one Flowable, in a way that allows a Subscriber to receive all
successfully emitted items from all of the source MaybeSources without being interrupted by an error
notification from one of them.
|
static <T> @NonNull Flowable<T> |
mergeDelayError(@NonNull Publisher<? extends MaybeSource<? extends T>> sources)
Flattens a Publisher that emits MaybeSources into one Publisher, in a way that allows a Subscriber to
receive all successfully emitted items from all of the source MaybeSources without being interrupted by
an error notification from one of them or even the main Publisher.
|
static <T> @NonNull Flowable<T> |
mergeDelayError(@NonNull Publisher<? extends MaybeSource<? extends T>> sources,
int maxConcurrency)
Flattens a Publisher that emits MaybeSources into one Publisher, in a way that allows a Subscriber to
receive all successfully emitted items from all of the source MaybeSources without being interrupted by
an error notification from one of them or even the main Publisher as well as limiting the total number of active MaybeSources.
|
@NonNull Flowable<T> |
mergeWith(@NonNull MaybeSource<? extends T> other)
Flattens this and another Maybe into a single Flowable, without any transformation.
|
static <T> @NonNull Maybe<T> |
never()
Returns a Maybe that never sends any items or notifications to a
MaybeObserver . |
@NonNull Maybe<T> |
observeOn(@NonNull Scheduler scheduler)
Wraps a Maybe to emit its item (or notify of its error) on a specified
Scheduler ,
asynchronously. |
<U> @NonNull Maybe<U> |
ofType(@NonNull Class<U> clazz)
Filters the items emitted by a Maybe, only emitting its success value if that
is an instance of the supplied Class.
|
@NonNull Maybe<T> |
onErrorComplete()
Returns a Maybe instance that if this Maybe emits an error, it will emit an onComplete
and swallow the throwable.
|
@NonNull Maybe<T> |
onErrorComplete(@NonNull Predicate<? super Throwable> predicate)
Returns a Maybe instance that if this Maybe emits an error and the predicate returns
true, it will emit an onComplete and swallow the throwable.
|
@NonNull Maybe<T> |
onErrorResumeNext(@NonNull Function<? super Throwable,? extends MaybeSource<? extends T>> resumeFunction)
Instructs a Maybe to pass control to another Maybe rather than invoking
onError if it encounters an error. |
@NonNull Maybe<T> |
onErrorResumeWith(@NonNull MaybeSource<? extends T> next)
Instructs a Maybe to pass control to another
MaybeSource rather than invoking
onError if it encounters an error. |
@NonNull Maybe<T> |
onErrorReturn(@NonNull Function<? super Throwable,? extends T> valueSupplier)
Instructs a Maybe to emit an item (returned by a specified function) rather than invoking
onError if it encounters an error. |
@NonNull Maybe<T> |
onErrorReturnItem(T item)
Instructs a Maybe to emit an item (returned by a specified function) rather than invoking
onError if it encounters an error. |
@NonNull Maybe<T> |
onExceptionResumeNext(@NonNull MaybeSource<? extends T> next)
|
@NonNull Maybe<T> |
onTerminateDetach()
Nulls out references to the upstream producer and downstream MaybeObserver if
the sequence is terminated or downstream calls dispose().
|
@NonNull Flowable<T> |
repeat()
Returns a Flowable that repeats the sequence of items emitted by the source Maybe indefinitely.
|
@NonNull Flowable<T> |
repeat(long times)
Returns a Flowable that repeats the sequence of items emitted by the source Maybe at most
count times. |
@NonNull Flowable<T> |
repeatUntil(@NonNull BooleanSupplier stop)
Returns a Flowable that repeats the sequence of items emitted by the source Maybe until
the provided stop function returns true.
|
@NonNull Flowable<T> |
repeatWhen(@NonNull Function<? super Flowable<Object>,? extends Publisher<?>> handler)
Returns a Flowable that emits the same values as the source Publisher with the exception of an
onComplete . |
@NonNull Maybe<T> |
retry()
Returns a Maybe that mirrors the source Maybe, resubscribing to it if it calls
onError
(infinite retry count). |
@NonNull Maybe<T> |
retry(@NonNull BiPredicate<? super Integer,? super Throwable> predicate)
Returns a Maybe that mirrors the source Maybe, resubscribing to it if it calls
onError
and the predicate returns true for that specific exception and retry count. |
@NonNull Maybe<T> |
retry(long count)
Returns a Maybe that mirrors the source Maybe, resubscribing to it if it calls
onError
up to a specified number of retries. |
@NonNull Maybe<T> |
retry(long times,
@NonNull Predicate<? super Throwable> predicate)
Retries at most times or until the predicate returns false, whichever happens first.
|
@NonNull Maybe<T> |
retry(@NonNull Predicate<? super Throwable> predicate)
Retries the current Maybe if it fails and the predicate returns true.
|
@NonNull Maybe<T> |
retryUntil(@NonNull BooleanSupplier stop)
Retries until the given stop function returns true.
|
@NonNull Maybe<T> |
retryWhen(@NonNull Function<? super Flowable<Throwable>,? extends Publisher<?>> handler)
Returns a Maybe that emits the same values as the source Maybe with the exception of an
onError . |
static <T> @NonNull Single<Boolean> |
sequenceEqual(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2)
Returns a Single that emits a Boolean value that indicates whether two MaybeSource sequences are the
same by comparing the items emitted by each MaybeSource pairwise.
|
static <T> @NonNull Single<Boolean> |
sequenceEqual(@NonNull MaybeSource<? extends T> source1,
@NonNull MaybeSource<? extends T> source2,
@NonNull BiPredicate<? super T,? super T> isEqual)
Returns a Single that emits a Boolean value that indicates whether two MaybeSources are the
same by comparing the items emitted by each MaybeSource pairwise based on the results of a specified
equality function.
|
@NonNull Disposable |
subscribe()
Subscribes to a Maybe and ignores
onSuccess and onComplete emissions. |
@NonNull Disposable |
subscribe(@NonNull Consumer<? super T> onSuccess)
Subscribes to a Maybe and provides a callback to handle the items it emits.
|
@NonNull Disposable |
subscribe(@NonNull Consumer<? super T> onSuccess,
@NonNull Consumer<? super Throwable> onError)
Subscribes to a Maybe and provides callbacks to handle the items it emits and any error
notification it issues.
|
@NonNull Disposable |
subscribe(@NonNull Consumer<? super T> onSuccess,
@NonNull Consumer<? super Throwable> onError,
@NonNull Action onComplete)
Subscribes to a Maybe and provides callbacks to handle the items it emits and any error or
completion notification it issues.
|
void |
subscribe(@NonNull MaybeObserver<? super T> observer)
Subscribes the given
MaybeObserver to this MaybeSource instance. |
protected abstract void |
subscribeActual(@NonNull MaybeObserver<? super T> observer)
Implement this method in subclasses to handle the incoming
MaybeObserver s. |
@NonNull Maybe<T> |
subscribeOn(@NonNull Scheduler scheduler)
Asynchronously subscribes subscribers to this Maybe on the specified
Scheduler . |
<E extends MaybeObserver<? super T>> |
subscribeWith(E observer)
Subscribes a given MaybeObserver (subclass) to this Maybe and returns the given
MaybeObserver as is.
|
@NonNull Maybe<T> |
switchIfEmpty(@NonNull MaybeSource<? extends T> other)
Returns a Maybe that emits the items emitted by the source Maybe or the items of an alternate
MaybeSource if the current Maybe is empty.
|
@NonNull Single<T> |
switchIfEmpty(@NonNull SingleSource<? extends T> other)
Returns a Single that emits the items emitted by the source Maybe or the item of an alternate
SingleSource if the current Maybe is empty.
|
<U> @NonNull Maybe<T> |
takeUntil(@NonNull MaybeSource<U> other)
Returns a Maybe that emits the items emitted by the source Maybe until a second MaybeSource
emits an item.
|
<U> @NonNull Maybe<T> |
takeUntil(@NonNull Publisher<U> other)
Returns a Maybe that emits the item emitted by the source Maybe until a second Publisher
emits an item.
|
@NonNull TestObserver<T> |
test()
Creates a TestObserver and subscribes
it to this Maybe.
|
@NonNull TestObserver<T> |
test(boolean dispose)
Creates a TestObserver optionally in cancelled state, then subscribes it to this Maybe.
|
@NonNull Maybe<T> |
timeout(long timeout,
@NonNull TimeUnit timeUnit)
Returns a Maybe that mirrors the source Maybe but applies a timeout policy for each emitted
item.
|
@NonNull Maybe<T> |
timeout(long timeout,
@NonNull TimeUnit timeUnit,
@NonNull MaybeSource<? extends T> fallback)
Returns a Maybe that mirrors the source Maybe but applies a timeout policy for each emitted
item.
|
@NonNull Maybe<T> |
timeout(long timeout,
@NonNull TimeUnit timeUnit,
@NonNull Scheduler scheduler)
Returns a Maybe that mirrors the source Maybe but applies a timeout policy for each emitted
item, where this policy is governed on a specified Scheduler.
|
@NonNull Maybe<T> |
timeout(long timeout,
@NonNull TimeUnit timeUnit,
@NonNull Scheduler scheduler,
@NonNull MaybeSource<? extends T> fallback)
Returns a Maybe that mirrors the source Maybe but applies a timeout policy for each emitted
item using a specified Scheduler.
|
<U> @NonNull Maybe<T> |
timeout(@NonNull MaybeSource<U> timeoutIndicator)
If the current
Maybe didn't signal an event before the timeoutIndicator MaybeSource signals, a
TimeoutException is signaled instead. |
<U> @NonNull Maybe<T> |
timeout(@NonNull MaybeSource<U> timeoutIndicator,
@NonNull MaybeSource<? extends T> fallback)
If the current
Maybe didn't signal an event before the timeoutIndicator MaybeSource signals,
the current Maybe is disposed and the fallback MaybeSource subscribed to
as a continuation. |
<U> @NonNull Maybe<T> |
timeout(@NonNull Publisher<U> timeoutIndicator)
If the current
Maybe source didn't signal an event before the timeoutIndicator Publisher signals, a
TimeoutException is signaled instead. |
<U> @NonNull Maybe<T> |
timeout(@NonNull Publisher<U> timeoutIndicator,
@NonNull MaybeSource<? extends T> fallback)
If the current
Maybe didn't signal an event before the timeoutIndicator Publisher signals,
the current Maybe is disposed and the fallback MaybeSource subscribed to
as a continuation. |
static @NonNull Maybe<Long> |
timer(long delay,
@NonNull TimeUnit unit)
Returns a Maybe that emits
0L after a specified delay. |
static @NonNull Maybe<Long> |
timer(long delay,
@NonNull TimeUnit unit,
@NonNull Scheduler scheduler)
Returns a Maybe that emits
0L after a specified delay on a specified Scheduler. |
<R> R |
to(@NonNull MaybeConverter<T,? extends R> converter)
Calls the specified converter function during assembly time and returns its resulting value.
|
@NonNull CompletionStage<T> |
toCompletionStage()
Signals the upstream success item (or a
NoSuchElementException if the upstream is empty) via
a CompletionStage . |
@NonNull CompletionStage<T> |
toCompletionStage(T defaultItem)
Signals the upstream success item (or the default item if the upstream is empty) via
a
CompletionStage . |
@NonNull Flowable<T> |
toFlowable()
Converts this Maybe into a backpressure-aware Flowable instance composing cancellation
through.
|
@NonNull Observable<T> |
toObservable()
Converts this Maybe into an Observable instance composing disposal
through.
|
@NonNull Single<T> |
toSingle()
Converts this Maybe into a Single instance composing disposal
through and turning an empty Maybe into a signal of NoSuchElementException.
|
static <T> @NonNull Maybe<T> |
unsafeCreate(@NonNull MaybeSource<T> onSubscribe)
Advanced use only: creates a Maybe instance without
any safeguards by using a callback that is called with a MaybeObserver.
|
@NonNull Maybe<T> |
unsubscribeOn(@NonNull Scheduler scheduler)
Returns a Maybe which makes sure when a MaybeObserver disposes the Disposable,
that call is propagated up on the specified scheduler.
|
static <T,D> @NonNull Maybe<T> |
using(@NonNull Supplier<? extends D> resourceSupplier,
@NonNull Function<? super D,? extends MaybeSource<? extends T>> sourceSupplier,
@NonNull Consumer<? super D> resourceDisposer)
Constructs a Maybe that creates a dependent resource object which is disposed of when the
upstream terminates or the downstream calls dispose().
|
static <T,D> @NonNull Maybe<T> |
using(@NonNull Supplier<? extends D> resourceSupplier,
@NonNull Function<? super D,? extends MaybeSource<? extends T>> sourceSupplier,
@NonNull Consumer<? super D> resourceDisposer,
boolean eager)
Constructs a Maybe that creates a dependent resource object which is disposed of just before
termination if you have set
disposeEagerly to true and a downstream dispose() does not occur
before termination. |
static <T> @NonNull Maybe<T> |
wrap(@NonNull MaybeSource<T> source)
Wraps a MaybeSource instance into a new Maybe instance if not already a Maybe
instance.
|
static <T,R> @NonNull Maybe<R> |
zip(@NonNull Iterable<? extends MaybeSource<? extends T>> sources,
@NonNull Function<? super Object[],? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an Iterable of other MaybeSources.
|
static <T1,T2,R> @NonNull Maybe<R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull BiFunction<? super T1,? super T2,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
two items emitted, in sequence, by two other MaybeSources.
|
static <T1,T2,T3,R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull MaybeSource<? extends T3> source3,
@NonNull Function3<? super T1,? super T2,? super T3,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
three items emitted, in sequence, by three other MaybeSources.
|
static <T1,T2,T3,T4,R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull MaybeSource<? extends T3> source3,
@NonNull MaybeSource<? extends T4> source4,
@NonNull Function4<? super T1,? super T2,? super T3,? super T4,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
four items emitted, in sequence, by four other MaybeSources.
|
static <T1,T2,T3,T4,T5,R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull MaybeSource<? extends T3> source3,
@NonNull MaybeSource<? extends T4> source4,
@NonNull MaybeSource<? extends T5> source5,
@NonNull Function5<? super T1,? super T2,? super T3,? super T4,? super T5,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
five items emitted, in sequence, by five other MaybeSources.
|
static <T1,T2,T3,T4,T5,T6,R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull MaybeSource<? extends T3> source3,
@NonNull MaybeSource<? extends T4> source4,
@NonNull MaybeSource<? extends T5> source5,
@NonNull MaybeSource<? extends T6> source6,
@NonNull Function6<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
six items emitted, in sequence, by six other MaybeSources.
|
static <T1,T2,T3,T4,T5,T6,T7,R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull MaybeSource<? extends T3> source3,
@NonNull MaybeSource<? extends T4> source4,
@NonNull MaybeSource<? extends T5> source5,
@NonNull MaybeSource<? extends T6> source6,
@NonNull MaybeSource<? extends T7> source7,
@NonNull Function7<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
seven items emitted, in sequence, by seven other MaybeSources.
|
static <T1,T2,T3,T4,T5,T6,T7,T8,R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull MaybeSource<? extends T3> source3,
@NonNull MaybeSource<? extends T4> source4,
@NonNull MaybeSource<? extends T5> source5,
@NonNull MaybeSource<? extends T6> source6,
@NonNull MaybeSource<? extends T7> source7,
@NonNull MaybeSource<? extends T8> source8,
@NonNull Function8<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
eight items emitted, in sequence, by eight other MaybeSources.
|
static <T1,T2,T3,T4,T5,T6,T7,T8,T9,R> |
zip(@NonNull MaybeSource<? extends T1> source1,
@NonNull MaybeSource<? extends T2> source2,
@NonNull MaybeSource<? extends T3> source3,
@NonNull MaybeSource<? extends T4> source4,
@NonNull MaybeSource<? extends T5> source5,
@NonNull MaybeSource<? extends T6> source6,
@NonNull MaybeSource<? extends T7> source7,
@NonNull MaybeSource<? extends T8> source8,
@NonNull MaybeSource<? extends T9> source9,
@NonNull Function9<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? super T9,? extends R> zipper)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
nine items emitted, in sequence, by nine other MaybeSources.
|
static <T,R> @NonNull Maybe<R> |
zipArray(@NonNull Function<? super Object[],? extends R> zipper,
MaybeSource<? extends T>... sources)
Returns a Maybe that emits the results of a specified combiner function applied to combinations of
items emitted, in sequence, by an array of other MaybeSources.
|
<U,R> @NonNull Maybe<R> |
zipWith(@NonNull MaybeSource<? extends U> other,
@NonNull BiFunction<? super T,? super U,? extends R> zipper)
Waits until this and the other MaybeSource signal a success value then applies the given BiFunction
to those values and emits the BiFunction's resulting value to downstream.
|
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> amb(@NonNull @NonNull Iterable<? extends MaybeSource<? extends T>> sources)
amb
does not operate by default on a particular Scheduler
.T
- the value typesources
- the Iterable sequence of sources. A subscription to each source will
occur in the same order as in the Iterable.@CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Maybe<T> ambArray(@NonNull MaybeSource<? extends T>... sources)
ambArray
does not operate by default on a particular Scheduler
.T
- the value typesources
- the array of sources. A subscription to each source will
occur in the same order as in the array.@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> concat(@NonNull @NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Flowable
honors the backpressure of the downstream consumer.concat
does not operate by default on a particular Scheduler
.T
- the value typesources
- the Iterable sequence of MaybeSource instances@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> concat(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2)
Flowable
honors the backpressure of the downstream consumer.concat
does not operate by default on a particular Scheduler
.T
- the common value typesource1
- a MaybeSource to be concatenatedsource2
- a MaybeSource to be concatenated@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> concat(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2, @NonNull @NonNull MaybeSource<? extends T> source3)
Flowable
honors the backpressure of the downstream consumer.concat
does not operate by default on a particular Scheduler
.T
- the common value typesource1
- a MaybeSource to be concatenatedsource2
- a MaybeSource to be concatenatedsource3
- a MaybeSource to be concatenated@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> concat(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2, @NonNull @NonNull MaybeSource<? extends T> source3, @NonNull @NonNull MaybeSource<? extends T> source4)
Flowable
honors the backpressure of the downstream consumer.concat
does not operate by default on a particular Scheduler
.T
- the common value typesource1
- a MaybeSource to be concatenatedsource2
- a MaybeSource to be concatenatedsource3
- a MaybeSource to be concatenatedsource4
- a MaybeSource to be concatenated@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> concat(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources)
Flowable
honors the backpressure of the downstream consumer and
expects the Publisher
to honor backpressure as well. If the sources Publisher
violates this, a MissingBackpressureException
is signalled.concat
does not operate by default on a particular Scheduler
.T
- the value typesources
- the Publisher of MaybeSource instances@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> concat(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources, int prefetch)
Flowable
honors the backpressure of the downstream consumer and
expects the Publisher
to honor backpressure as well. If the sources Publisher
violates this, a MissingBackpressureException
is signalled.concat
does not operate by default on a particular Scheduler
.T
- the value typesources
- the Publisher of MaybeSource instancesprefetch
- the number of MaybeSources to prefetch from the Publisher@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") @SafeVarargs public static <T> @NonNull Flowable<T> concatArray(@NonNull MaybeSource<? extends T>... sources)
Flowable
honors the backpressure of the downstream consumer.concatArray
does not operate by default on a particular Scheduler
.T
- the value typesources
- the array of MaybeSource instances@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @SafeVarargs @NonNull public static <T> @NonNull Flowable<T> concatArrayDelayError(@NonNull MaybeSource<? extends T>... sources)
concatArrayDelayError
does not operate by default on a particular Scheduler
.T
- the common base value typesources
- the array of sourcesNullPointerException
- if sources is null@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull @SafeVarargs public static <T> @NonNull Flowable<T> concatArrayEager(@NonNull MaybeSource<? extends T>... sources)
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the source MaybeSources. The operator buffers the value emitted by these MaybeSources and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of MaybeSources that need to be eagerly concatenated@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> concatDelayError(@NonNull @NonNull Iterable<? extends MaybeSource<? extends T>> sources)
concatDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Iterable sequence of MaybeSources@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> concatDelayError(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources)
concatDelayError
fully supports backpressure.concatDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Publisher sequence of Publishers@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> concatEager(@NonNull @NonNull Iterable<? extends MaybeSource<? extends T>> sources)
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the source MaybeSources. The operator buffers the values emitted by these MaybeSources and then drains them in order, each one after the previous one completes.
Scheduler
.T
- the value typesources
- a sequence of MaybeSource that need to be eagerly concatenated@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> concatEager(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources)
Eager concatenation means that once a subscriber subscribes, this operator subscribes to all of the emitted source Publishers as they are observed. The operator buffers the values emitted by these Publishers and then drains them in order, each one after the previous one completes.
MissingBackpressureException
.Scheduler
.T
- the value typesources
- a sequence of Publishers that need to be eagerly concatenated@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> create(@NonNull @NonNull MaybeOnSubscribe<T> onSubscribe)
Example:
Maybe.<Event>create(emitter -> {
Callback listener = new Callback() {
@Override
public void onEvent(Event e) {
if (e.isNothing()) {
emitter.onComplete();
} else {
emitter.onSuccess(e);
}
}
@Override
public void onFailure(Exception e) {
emitter.onError(e);
}
};
AutoCloseable c = api.someMethod(listener);
emitter.setCancellable(c::close);
});
Whenever a MaybeObserver
subscribes to the returned Maybe
, the provided
MaybeOnSubscribe
callback is invoked with a fresh instance of a MaybeEmitter
that will interact only with that specific MaybeObserver
. If this MaybeObserver
disposes the flow (making MaybeEmitter.isDisposed()
return true),
other observers subscribed to the same returned Maybe
are not affected.
create
does not operate by default on a particular Scheduler
.T
- the value typeonSubscribe
- the emitter that is called when a MaybeObserver subscribes to the returned Maybe
MaybeOnSubscribe
,
Cancellable
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> defer(@NonNull @NonNull Supplier<? extends MaybeSource<? extends T>> maybeSupplier)
defer
does not operate by default on a particular Scheduler
.T
- the value typemaybeSupplier
- the Supplier that is called for each individual MaybeObserver and
returns a MaybeSource instance to subscribe to@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Maybe<T> empty()
onComplete
immediately.
empty
does not operate by default on a particular Scheduler
.T
- the value type@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> error(@NonNull @NonNull Throwable exception)
onError
method when the
subscriber subscribes to it.
error
does not operate by default on a particular Scheduler
.T
- the type of the item (ostensibly) emitted by the Maybeexception
- the particular Throwable to pass to onError
onError
method when
the subscriber subscribes to it@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> error(@NonNull @NonNull Supplier<? extends Throwable> supplier)
MaybeObserver
's onError
method when the
MaybeObserver subscribes to it.
error
does not operate by default on a particular Scheduler
.T
- the type of the items (ostensibly) emitted by the Maybesupplier
- a Supplier factory to return a Throwable for each individual MaybeObserverMaybeObserver
's onError
method when
the MaybeObserver subscribes to it@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromAction(@NonNull @NonNull Action run)
fromAction
does not operate by default on a particular Scheduler
.Action
throws an exception, the respective Throwable
is
delivered to the downstream via MaybeObserver.onError(Throwable)
,
except when the downstream has disposed this Maybe
source.
In this latter case, the Throwable
is delivered to the global error handler via
RxJavaPlugins.onError(Throwable)
as an UndeliverableException
.
T
- the target typerun
- the runnable to run for each subscriberNullPointerException
- if run is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromCompletable(@NonNull @NonNull CompletableSource completableSource)
fromCompletable
does not operate by default on a particular Scheduler
.T
- the target typecompletableSource
- the CompletableSource to convert fromNullPointerException
- if completable is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromSingle(@NonNull @NonNull SingleSource<T> singleSource)
fromSingle
does not operate by default on a particular Scheduler
.T
- the target typesingleSource
- the SingleSource to convert fromNullPointerException
- if single is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromCallable(@NonNull @NonNull Callable<? extends T> callable)
Maybe
that invokes the given Callable
for each individual MaybeObserver
that
subscribes and emits the resulting non-null item via onSuccess
while
considering a null
result from the Callable
as indication for valueless completion
via onComplete
.
This operator allows you to defer the execution of the given Callable
until a MaybeObserver
subscribes to the returned Maybe
. In other terms, this source operator evaluates the given
Callable
"lazily".
Note that the null
handling of this operator differs from the similar source operators in the other
base reactive classes
. Those operators signal a NullPointerException
if the value returned by their
Callable
is null
while this fromCallable
considers it to indicate the
returned Maybe
is empty.
fromCallable
does not operate by default on a particular Scheduler
.Callable.call()
will be forwarded to onError
,
except if the MaybeObserver
disposed the subscription in the meantime. In this latter case,
the exception is forwarded to the global error handler via
RxJavaPlugins.onError(Throwable)
wrapped into a
UndeliverableException
.
Fatal exceptions are rethrown and usually will end up in the executing thread's
Thread.UncaughtExceptionHandler.uncaughtException(Thread, Throwable)
handler.T
- the type of the item emitted by the Maybe
.callable
- a Callable
instance whose execution should be deferred and performed for each individual
MaybeObserver
that subscribes to the returned Maybe
.defer(Supplier)
,
fromSupplier(Supplier)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromFuture(@NonNull @NonNull Future<? extends T> future)
Future
into a Maybe, treating a null result as an indication of emptiness.
You can convert any object that supports the Future
interface into a Maybe that emits the
return value of the Future.get()
method of that object, by passing the object into the from
method.
Important note: This Maybe is blocking; you cannot dispose it.
Unlike 1.x, disposing the Maybe won't cancel the future. If necessary, one can use composition to achieve the
cancellation effect: futureMaybe.doOnDispose(() -> future.cancel(true));
.
fromFuture
does not operate by default on a particular Scheduler
.T
- the type of object that the Future
returns, and also the type of item to be emitted by
the resulting Maybefuture
- the source Future
Future
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromFuture(@NonNull @NonNull Future<? extends T> future, long timeout, @NonNull @NonNull TimeUnit unit)
Future
into a Maybe, with a timeout on the Future.
You can convert any object that supports the Future
interface into a Maybe that emits the
return value of the Future.get()
method of that object, by passing the object into the fromFuture
method.
Unlike 1.x, disposing the Maybe won't cancel the future. If necessary, one can use composition to achieve the
cancellation effect: futureMaybe.doOnCancel(() -> future.cancel(true));
.
Important note: This Maybe is blocking on the thread it gets subscribed on; you cannot dispose it.
fromFuture
does not operate by default on a particular Scheduler
.T
- the type of object that the Future
returns, and also the type of item to be emitted by
the resulting Maybefuture
- the source Future
timeout
- the maximum time to wait before calling get
unit
- the TimeUnit
of the timeout
argumentFuture
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromRunnable(@NonNull @NonNull Runnable run)
fromRunnable
does not operate by default on a particular Scheduler
.T
- the target typerun
- the runnable to run for each subscriberNullPointerException
- if run is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> fromSupplier(@NonNull @NonNull Supplier<? extends T> supplier)
Maybe
that invokes the given Supplier
for each individual MaybeObserver
that
subscribes and emits the resulting non-null item via onSuccess
while
considering a null
result from the Supplier
as indication for valueless completion
via onComplete
.
This operator allows you to defer the execution of the given Supplier
until a MaybeObserver
subscribes to the returned Maybe
. In other terms, this source operator evaluates the given
Supplier
"lazily".
Note that the null
handling of this operator differs from the similar source operators in the other
base reactive classes
. Those operators signal a NullPointerException
if the value returned by their
Supplier
is null
while this fromSupplier
considers it to indicate the
returned Maybe
is empty.
fromSupplier
does not operate by default on a particular Scheduler
.Supplier.get()
will be forwarded to onError
,
except if the MaybeObserver
disposed the subscription in the meantime. In this latter case,
the exception is forwarded to the global error handler via
RxJavaPlugins.onError(Throwable)
wrapped into a
UndeliverableException
.
Fatal exceptions are rethrown and usually will end up in the executing thread's
Thread.UncaughtExceptionHandler.uncaughtException(Thread, Throwable)
handler.T
- the type of the item emitted by the Maybe
.supplier
- a Supplier
instance whose execution should be deferred and performed for each individual
MaybeObserver
that subscribes to the returned Maybe
.defer(Supplier)
,
fromCallable(Callable)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> just(T item)
Maybe
that emits a specified item.
To convert any object into a Maybe
that emits that object, pass that object into the
just
method.
just
does not operate by default on a particular Scheduler
.T
- the type of that itemitem
- the item to emitMaybe
that emits item
@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> merge(@NonNull @NonNull Iterable<? extends MaybeSource<? extends T>> sources)
merge
does not operate by default on a particular Scheduler
.MaybeSource
s signal a Throwable
via onError
, the resulting
Flowable
terminates with that Throwable
and all other source MaybeSource
s are disposed.
If more than one MaybeSource
signals an error, the resulting Flowable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Flowable
has been cancelled or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(Iterable)
to merge sources and terminate only when all source MaybeSource
s
have completed or failed with an error.
T
- the common and resulting value typesources
- the Iterable sequence of MaybeSource sourcesmergeDelayError(Iterable)
@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> merge(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources)
merge
does not operate by default on a particular Scheduler
.MaybeSource
s signal a Throwable
via onError
, the resulting
Flowable
terminates with that Throwable
and all other source MaybeSource
s are disposed.
If more than one MaybeSource
signals an error, the resulting Flowable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Flowable
has been cancelled or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(Publisher)
to merge sources and terminate only when all source MaybeSource
s
have completed or failed with an error.
T
- the common and resulting value typesources
- the Flowable sequence of MaybeSource sourcesmergeDelayError(Publisher)
@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> merge(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources, int maxConcurrency)
merge
does not operate by default on a particular Scheduler
.MaybeSource
s signal a Throwable
via onError
, the resulting
Flowable
terminates with that Throwable
and all other source MaybeSource
s are disposed.
If more than one MaybeSource
signals an error, the resulting Flowable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Flowable
has been cancelled or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(Publisher, int)
to merge sources and terminate only when all source MaybeSource
s
have completed or failed with an error.
T
- the common and resulting value typesources
- the Flowable sequence of MaybeSource sourcesmaxConcurrency
- the maximum number of concurrently running MaybeSourcesmergeDelayError(Publisher, int)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> merge(@NonNull @NonNull MaybeSource<? extends MaybeSource<? extends T>> source)
MaybeSource
that emits a MaybeSource
into a single MaybeSource
that emits the item
emitted by the nested MaybeSource
, without any transformation.
merge
does not operate by default on a particular Scheduler
.Maybe
emits the outer source's or the inner MaybeSource
's Throwable
as is.
Unlike the other merge()
operators, this operator won't and can't produce a CompositeException
because there is
only one possibility for the outer or the inner MaybeSource
to emit an onError
signal.
Therefore, there is no need for a mergeDelayError(MaybeSource<MaybeSource<T>>)
operator.
T
- the value type of the sources and the outputsource
- a MaybeSource
that emits a MaybeSource
Maybe
that emits the item that is the result of flattening the MaybeSource
emitted
by source
@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> merge(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2)
You can combine items emitted by multiple MaybeSources so that they appear as a single Flowable, by
using the merge
method.
merge
does not operate by default on a particular Scheduler
.MaybeSource
s signal a Throwable
via onError
, the resulting
Flowable
terminates with that Throwable
and all other source MaybeSource
s are disposed.
If more than one MaybeSource
signals an error, the resulting Flowable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Flowable
has been cancelled or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(MaybeSource, MaybeSource)
to merge sources and terminate only when all source MaybeSource
s
have completed or failed with an error.
T
- the common value typesource1
- a MaybeSource to be mergedsource2
- a MaybeSource to be mergedmergeDelayError(MaybeSource, MaybeSource)
@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> merge(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2, @NonNull @NonNull MaybeSource<? extends T> source3)
You can combine items emitted by multiple MaybeSources so that they appear as a single Flowable, by using
the merge
method.
merge
does not operate by default on a particular Scheduler
.MaybeSource
s signal a Throwable
via onError
, the resulting
Flowable
terminates with that Throwable
and all other source MaybeSource
s are disposed.
If more than one MaybeSource
signals an error, the resulting Flowable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Flowable
has been cancelled or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(MaybeSource, MaybeSource, MaybeSource)
to merge sources and terminate only when all source MaybeSource
s
have completed or failed with an error.
T
- the common value typesource1
- a MaybeSource to be mergedsource2
- a MaybeSource to be mergedsource3
- a MaybeSource to be mergedmergeDelayError(MaybeSource, MaybeSource, MaybeSource)
@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> merge(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2, @NonNull @NonNull MaybeSource<? extends T> source3, @NonNull @NonNull MaybeSource<? extends T> source4)
You can combine items emitted by multiple MaybeSources so that they appear as a single Flowable, by using
the merge
method.
merge
does not operate by default on a particular Scheduler
.MaybeSource
s signal a Throwable
via onError
, the resulting
Flowable
terminates with that Throwable
and all other source MaybeSource
s are disposed.
If more than one MaybeSource
signals an error, the resulting Flowable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Flowable
has been cancelled or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeDelayError(MaybeSource, MaybeSource, MaybeSource, MaybeSource)
to merge sources and terminate only when all source MaybeSource
s
have completed or failed with an error.
T
- the common value typesource1
- a MaybeSource to be mergedsource2
- a MaybeSource to be mergedsource3
- a MaybeSource to be mergedsource4
- a MaybeSource to be mergedmergeDelayError(MaybeSource, MaybeSource, MaybeSource, MaybeSource)
@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") @SafeVarargs public static <T> @NonNull Flowable<T> mergeArray(MaybeSource<? extends T>... sources)
mergeArray
does not operate by default on a particular Scheduler
.MaybeSource
s signal a Throwable
via onError
, the resulting
Flowable
terminates with that Throwable
and all other source MaybeSource
s are disposed.
If more than one MaybeSource
signals an error, the resulting Flowable
may terminate with the
first one's error or, depending on the concurrency of the sources, may terminate with a
CompositeException
containing two or more of the various error signals.
Throwable
s that didn't make into the composite will be sent (individually) to the global error handler via
RxJavaPlugins.onError(Throwable)
method as UndeliverableException
errors. Similarly, Throwable
s
signaled by source(s) after the returned Flowable
has been cancelled or terminated with a
(composite) error will be sent to the same global error handler.
Use mergeArrayDelayError(MaybeSource...)
to merge sources and terminate only when all source MaybeSource
s
have completed or failed with an error.
T
- the common and resulting value typesources
- the array sequence of MaybeSource sourcesmergeArrayDelayError(MaybeSource...)
@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @SafeVarargs @NonNull public static <T> @NonNull Flowable<T> mergeArrayDelayError(@NonNull MaybeSource<? extends T>... sources)
This behaves like merge(Publisher)
except that if any of the merged MaybeSources notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged MaybeSources have finished emitting items.
Even if multiple merged MaybeSources send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Subscribers once.
mergeArrayDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Iterable of MaybeSources@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Iterable<? extends MaybeSource<? extends T>> sources)
This behaves like merge(Publisher)
except that if any of the merged MaybeSources notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged MaybeSources have finished emitting items.
Even if multiple merged MaybeSources send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Subscribers once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- the Iterable of MaybeSources@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources)
This behaves like merge(Publisher)
except that if any of the merged MaybeSources notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged MaybeSources and the main Publisher have finished emitting items.
Even if multiple merged Publishers send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Subscribers once.
Publisher
is consumed
in unbounded mode (i.e., no backpressure is applied to it).mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesources
- a Publisher that emits MaybeSourcessource
Publisher@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull Publisher<? extends MaybeSource<? extends T>> sources, int maxConcurrency)
This behaves like merge(Publisher, int)
except that if any of the merged MaybeSources notify of an
error via onError
, mergeDelayError
will refrain from propagating that
error notification until all of the merged MaybeSources and the main Publisher have finished emitting items.
Even if multiple merged Publishers send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Subscribers once.
Publisher
is consumed
in unbounded mode (i.e., no backpressure is applied to it).mergeDelayError
does not operate by default on a particular Scheduler
.History: 2.1.9 - experimental
T
- the common element base typesources
- a Publisher that emits MaybeSourcesmaxConcurrency
- the maximum number of active inner MaybeSources to be merged at a timesource
Publisher@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2)
This behaves like merge(MaybeSource, MaybeSource)
except that if any of the merged MaybeSources
notify of an error via onError
, mergeDelayError
will refrain from
propagating that error notification until all of the merged MaybeSources have finished emitting items.
Even if both merged MaybeSources send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Subscribers once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- a MaybeSource to be mergedsource2
- a MaybeSource to be merged@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2, @NonNull @NonNull MaybeSource<? extends T> source3)
This behaves like merge(MaybeSource, MaybeSource, MaybeSource)
except that if any of the merged
MaybeSources notify of an error via onError
, mergeDelayError
will refrain
from propagating that error notification until all of the merged MaybeSources have finished emitting
items.
Even if multiple merged MaybeSources send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Subscribers once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- a MaybeSource to be mergedsource2
- a MaybeSource to be mergedsource3
- a MaybeSource to be merged@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Flowable<T> mergeDelayError(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2, @NonNull @NonNull MaybeSource<? extends T> source3, @NonNull @NonNull MaybeSource<? extends T> source4)
This behaves like merge(MaybeSource, MaybeSource, MaybeSource, MaybeSource)
except that if any of
the merged MaybeSources notify of an error via onError
, mergeDelayError
will refrain from propagating that error notification until all of the merged MaybeSources have finished
emitting items.
Even if multiple merged MaybeSources send onError
notifications, mergeDelayError
will only
invoke the onError
method of its Subscribers once.
mergeDelayError
does not operate by default on a particular Scheduler
.T
- the common element base typesource1
- a MaybeSource to be mergedsource2
- a MaybeSource to be mergedsource3
- a MaybeSource to be mergedsource4
- a MaybeSource to be merged@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Maybe<T> never()
MaybeObserver
.
This Maybe is useful primarily for testing purposes.
never
does not operate by default on a particular Scheduler
.T
- the type of items (not) emitted by the MaybeMaybeObserver
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Single<Boolean> sequenceEqual(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2)
sequenceEqual
does not operate by default on a particular Scheduler
.T
- the type of items emitted by each MaybeSourcesource1
- the first MaybeSource to comparesource2
- the second MaybeSource to compare@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Single<Boolean> sequenceEqual(@NonNull @NonNull MaybeSource<? extends T> source1, @NonNull @NonNull MaybeSource<? extends T> source2, @NonNull @NonNull BiPredicate<? super T,? super T> isEqual)
sequenceEqual
does not operate by default on a particular Scheduler
.T
- the type of items emitted by each MaybeSourcesource1
- the first MaybeSource to comparesource2
- the second MaybeSource to compareisEqual
- a function used to compare items emitted by each MaybeSource@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public static @NonNull Maybe<Long> timer(long delay, @NonNull @NonNull TimeUnit unit)
0L
after a specified delay.
timer
operates by default on the computation
Scheduler
.delay
- the initial delay before emitting a single 0L
unit
- time units to use for delay
0L
after a specified delay@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public static @NonNull Maybe<Long> timer(long delay, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler)
0L
after a specified delay on a specified Scheduler.
Scheduler
this operator will use.delay
- the initial delay before emitting a single 0Lunit
- time units to use for delay
scheduler
- the Scheduler
to use for scheduling the item0L
after a specified delay, on a specified Scheduler@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> unsafeCreate(@NonNull @NonNull MaybeSource<T> onSubscribe)
unsafeCreate
does not operate by default on a particular Scheduler
.T
- the value typeonSubscribe
- the function that is called with the subscribing MaybeObserver@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T,D> @NonNull Maybe<T> using(@NonNull @NonNull Supplier<? extends D> resourceSupplier, @NonNull @NonNull Function<? super D,? extends MaybeSource<? extends T>> sourceSupplier, @NonNull @NonNull Consumer<? super D> resourceDisposer)
using
does not operate by default on a particular Scheduler
.T
- the element type of the generated MaybeSourceD
- the type of the resource associated with the output sequenceresourceSupplier
- the factory function to create a resource object that depends on the MaybesourceSupplier
- the factory function to create a MaybeSourceresourceDisposer
- the function that will dispose of the resource@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,D> @NonNull Maybe<T> using(@NonNull @NonNull Supplier<? extends D> resourceSupplier, @NonNull @NonNull Function<? super D,? extends MaybeSource<? extends T>> sourceSupplier, @NonNull @NonNull Consumer<? super D> resourceDisposer, boolean eager)
disposeEagerly
to true
and a downstream dispose() does not occur
before termination. Otherwise resource disposal will occur on call to dispose(). Eager disposal is
particularly appropriate for a synchronous Maybe that reuses resources. disposeAction
will
only be called once per subscription.
using
does not operate by default on a particular Scheduler
.T
- the element type of the generated MaybeSourceD
- the type of the resource associated with the output sequenceresourceSupplier
- the factory function to create a resource object that depends on the MaybesourceSupplier
- the factory function to create a MaybeSourceresourceDisposer
- the function that will dispose of the resourceeager
- If true
then resource disposal will happen either on a dispose()
call before the upstream is disposed
or just before the emission of a terminal event (onSuccess
, onComplete
or onError
).
If false
the resource disposal will happen either on a dispose()
call after the upstream is disposed
or just after the emission of a terminal event (onSuccess
, onComplete
or onError
).@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T> @NonNull Maybe<T> wrap(@NonNull @NonNull MaybeSource<T> source)
wrap
does not operate by default on a particular Scheduler
.T
- the value typesource
- the source to wrap@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T,R> @NonNull Maybe<R> zip(@NonNull @NonNull Iterable<? extends MaybeSource<? extends T>> sources, @NonNull @NonNull Function<? super Object[],? extends R> zipper)
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T
- the common value typeR
- the zipped result typesources
- an Iterable of source MaybeSourceszipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull BiFunction<? super T1,? super T2,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results
in an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull MaybeSource<? extends T3> source3, @NonNull @NonNull Function3<? super T1,? super T2,? super T3,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcesource3
- a third source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull MaybeSource<? extends T3> source3, @NonNull @NonNull MaybeSource<? extends T4> source4, @NonNull @NonNull Function4<? super T1,? super T2,? super T3,? super T4,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcesource3
- a third source MaybeSourcesource4
- a fourth source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull MaybeSource<? extends T3> source3, @NonNull @NonNull MaybeSource<? extends T4> source4, @NonNull @NonNull MaybeSource<? extends T5> source5, @NonNull @NonNull Function5<? super T1,? super T2,? super T3,? super T4,? super T5,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcesource3
- a third source MaybeSourcesource4
- a fourth source MaybeSourcesource5
- a fifth source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull MaybeSource<? extends T3> source3, @NonNull @NonNull MaybeSource<? extends T4> source4, @NonNull @NonNull MaybeSource<? extends T5> source5, @NonNull @NonNull MaybeSource<? extends T6> source6, @NonNull @NonNull Function6<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcesource3
- a third source MaybeSourcesource4
- a fourth source MaybeSourcesource5
- a fifth source MaybeSourcesource6
- a sixth source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,T7,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull MaybeSource<? extends T3> source3, @NonNull @NonNull MaybeSource<? extends T4> source4, @NonNull @NonNull MaybeSource<? extends T5> source5, @NonNull @NonNull MaybeSource<? extends T6> source6, @NonNull @NonNull MaybeSource<? extends T7> source7, @NonNull @NonNull Function7<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceT7
- the value type of the seventh sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcesource3
- a third source MaybeSourcesource4
- a fourth source MaybeSourcesource5
- a fifth source MaybeSourcesource6
- a sixth source MaybeSourcesource7
- a seventh source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,T7,T8,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull MaybeSource<? extends T3> source3, @NonNull @NonNull MaybeSource<? extends T4> source4, @NonNull @NonNull MaybeSource<? extends T5> source5, @NonNull @NonNull MaybeSource<? extends T6> source6, @NonNull @NonNull MaybeSource<? extends T7> source7, @NonNull @NonNull MaybeSource<? extends T8> source8, @NonNull @NonNull Function8<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceT7
- the value type of the seventh sourceT8
- the value type of the eighth sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcesource3
- a third source MaybeSourcesource4
- a fourth source MaybeSourcesource5
- a fifth source MaybeSourcesource6
- a sixth source MaybeSourcesource7
- a seventh source MaybeSourcesource8
- an eighth source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public static <T1,T2,T3,T4,T5,T6,T7,T8,T9,R> @NonNull Maybe<R> zip(@NonNull @NonNull MaybeSource<? extends T1> source1, @NonNull @NonNull MaybeSource<? extends T2> source2, @NonNull @NonNull MaybeSource<? extends T3> source3, @NonNull @NonNull MaybeSource<? extends T4> source4, @NonNull @NonNull MaybeSource<? extends T5> source5, @NonNull @NonNull MaybeSource<? extends T6> source6, @NonNull @NonNull MaybeSource<? extends T7> source7, @NonNull @NonNull MaybeSource<? extends T8> source8, @NonNull @NonNull MaybeSource<? extends T9> source9, @NonNull @NonNull Function9<? super T1,? super T2,? super T3,? super T4,? super T5,? super T6,? super T7,? super T8,? super T9,? extends R> zipper)
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zip
does not operate by default on a particular Scheduler
.T1
- the value type of the first sourceT2
- the value type of the second sourceT3
- the value type of the third sourceT4
- the value type of the fourth sourceT5
- the value type of the fifth sourceT6
- the value type of the sixth sourceT7
- the value type of the seventh sourceT8
- the value type of the eighth sourceT9
- the value type of the ninth sourceR
- the zipped result typesource1
- the first source MaybeSourcesource2
- a second source MaybeSourcesource3
- a third source MaybeSourcesource4
- a fourth source MaybeSourcesource5
- a fifth source MaybeSourcesource6
- a sixth source MaybeSourcesource7
- a seventh source MaybeSourcesource8
- an eighth source MaybeSourcesource9
- a ninth source MaybeSourcezipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting MaybeSource@CheckReturnValue @NonNull @SchedulerSupport(value="none") @SafeVarargs public static <T,R> @NonNull Maybe<R> zipArray(@NonNull @NonNull Function<? super Object[],? extends R> zipper, @NonNull MaybeSource<? extends T>... sources)
Note on method signature: since Java doesn't allow creating a generic array with new T[]
, the
implementation of this operator has to create an Object[]
instead. Unfortunately, a
Function<Integer[], R>
passed to the method would trigger a ClassCastException
.
This operator terminates eagerly if any of the source MaybeSources signal an onError or onComplete. This also means it is possible some sources may not get subscribed to at all.
zipArray
does not operate by default on a particular Scheduler
.T
- the common element typeR
- the result typesources
- an array of source MaybeSourceszipper
- a function that, when applied to an item emitted by each of the source MaybeSources, results in
an item that will be emitted by the resulting MaybeSource@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> ambWith(@NonNull @NonNull MaybeSource<? extends T> other)
ambWith
does not operate by default on a particular Scheduler
.other
- a MaybeSource competing to react first. A subscription to this provided source will occur after
subscribing to the current source.@CheckReturnValue @SchedulerSupport(value="none") @Nullable public final T blockingGet()
blockingGet
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.@CheckReturnValue @SchedulerSupport(value="none") @Nullable public final T blockingGet(@Nullable T defaultValue)
blockingGet
does not operate by default on a particular Scheduler
.Exception
into RuntimeException
and throws that. Otherwise, RuntimeException
s and
Error
s are rethrown as they are.defaultValue
- the default item to return if this Maybe is empty@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> cache()
The operator subscribes only when the first downstream subscriber subscribes and maintains a single subscription towards this Maybe.
Note: You sacrifice the ability to dispose the origin when you use the cache
.
cache
does not operate by default on a particular Scheduler
.@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<U> cast(@NonNull @NonNull Class<? extends U> clazz)
cast
does not operate by default on a particular Scheduler
.U
- the target typeclazz
- the type token to use for casting the success result from the current Maybe@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Maybe<R> compose(@NonNull @NonNull MaybeTransformer<? super T,? extends R> transformer)
This method operates on the Maybe itself whereas lift(io.reactivex.rxjava3.core.MaybeOperator<? extends R, ? super T>)
operates on the Maybe's MaybeObservers.
If the operator you are creating is designed to act on the individual item emitted by a Maybe, use
lift(io.reactivex.rxjava3.core.MaybeOperator<? extends R, ? super T>)
. If your operator is designed to transform the source Maybe as a whole (for instance, by
applying a particular set of existing RxJava operators to it) use compose
.
compose
does not operate by default on a particular Scheduler
.R
- the value type of the Maybe returned by the transformer functiontransformer
- the transformer function, not null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Maybe<R> concatMap(@NonNull @NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
concatMap
does not operate by default on a particular Scheduler
.Note that flatMap and concatMap for Maybe is the same operation.
R
- the result value typemapper
- a function that, when applied to the item emitted by the source Maybe, returns a MaybeSourcefunc
when applied to the item emitted by the source Maybe@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Flowable<T> concatWith(@NonNull @NonNull MaybeSource<? extends T> other)
concatWith
does not operate by default on a particular Scheduler
.other
- a MaybeSource to be concatenated after the current@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Single<Boolean> contains(@NonNull @NonNull Object item)
contains
does not operate by default on a particular Scheduler
.item
- the item to search for in the emissions from the source Maybe, not nulltrue
if the specified item is emitted by the source Maybe,
or false
if the source Maybe completes without emitting that item@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Long> count()
count
does not operate by default on a particular Scheduler
.@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Single<T> defaultIfEmpty(@NonNull T defaultItem)
defaultIfEmpty
does not operate by default on a particular Scheduler
.defaultItem
- the item to emit if the source Maybe emits no items@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Maybe<T> delay(long delay, @NonNull @NonNull TimeUnit unit)
delay
operates by default on the computation
Scheduler
.delay
- the delay to shift the source byunit
- the TimeUnit
in which period
is defineddelay(long, TimeUnit, Scheduler)
@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public final @NonNull Maybe<T> delay(long delay, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler)
Scheduler
this operator will use.delay
- the delay to shift the source byunit
- the time unit of delay
scheduler
- the Scheduler
to use for delaying@CheckReturnValue @NonNull @SchedulerSupport(value="none") @BackpressureSupport(value=UNBOUNDED_IN) public final <U> @NonNull Maybe<T> delay(@NonNull @NonNull Publisher<U> delayIndicator)
delayIndicator
is consumed in an unbounded manner but is cancelled after
the first item it produces.delay
does not operate by default on a particular Scheduler
.U
- the subscription delay value type (ignored)delayIndicator
- the Publisher that gets subscribed to when this Maybe signals an event and that
signal is emitted when the Publisher signals an item or completes@BackpressureSupport(value=UNBOUNDED_IN) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<T> delaySubscription(@NonNull @NonNull Publisher<U> subscriptionIndicator)
Publisher
source is consumed in an unbounded fashion (without applying backpressure).Scheduler
.U
- the value type of the other Publisher, irrelevantsubscriptionIndicator
- the other Publisher that should trigger the subscription
to this Publisher.@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Maybe<T> delaySubscription(long delay, @NonNull @NonNull TimeUnit unit)
delaySubscription
operates by default on the computation
Scheduler
.delay
- the time to delay the subscriptionunit
- the time unit of delay
delaySubscription(long, TimeUnit, Scheduler)
@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Maybe<T> delaySubscription(long delay, @NonNull @NonNull TimeUnit unit, @NonNull @NonNull Scheduler scheduler)
Scheduler
this operator will use.delay
- the time to delay the subscriptionunit
- the time unit of delay
scheduler
- the Scheduler on which the waiting and subscription will happen@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doAfterSuccess(@NonNull @NonNull Consumer<? super T> onAfterSuccess)
Note that the onAfterNext
action is shared between subscriptions and as such
should be thread-safe.
doAfterSuccess
does not operate by default on a particular Scheduler
.History: 2.0.1 - experimental
onAfterSuccess
- the Consumer that will be called after emitting an item from upstream to the downstream@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doAfterTerminate(@NonNull @NonNull Action onAfterTerminate)
Action
to be called when this Maybe invokes either
onSuccess
,
onComplete
or onError
.
doAfterTerminate
does not operate by default on a particular Scheduler
.onAfterTerminate
- an Action
to be invoked when the source Maybe finishesAction
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doFinally(@NonNull @NonNull Action onFinally)
In case of a race between a terminal event and a dispose call, the provided onFinally
action
is executed once per subscription.
Note that the onFinally
action is shared between subscriptions and as such
should be thread-safe.
doFinally
does not operate by default on a particular Scheduler
.History: 2.0.1 - experimental
onFinally
- the action called when this Maybe terminates or gets disposed@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doOnDispose(@NonNull @NonNull Action onDispose)
Action
if a MaybeObserver subscribed to the current Maybe
disposes the common Disposable it received via onSubscribe.
doOnDispose
does not operate by default on a particular Scheduler
.onDispose
- the action called when the subscription is disposedNullPointerException
- if onDispose is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doOnComplete(@NonNull @NonNull Action onComplete)
onComplete
.
doOnComplete
does not operate by default on a particular Scheduler
.onComplete
- the action to invoke when the source Maybe calls onComplete
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doOnError(@NonNull @NonNull Consumer<? super Throwable> onError)
doOnError
does not operate by default on a particular Scheduler
.onError
- the consumer called with the success value of onError@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> doOnEvent(@NonNull @NonNull BiConsumer<? super T,? super Throwable> onEvent)
Exceptions thrown from the callback will override the event so the downstream receives the error instead of the original signal.
doOnEvent
does not operate by default on a particular Scheduler
.onEvent
- the callback to call with the terminal event tuple@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doOnSubscribe(@NonNull @NonNull Consumer<? super Disposable> onSubscribe)
doOnSubscribe
does not operate by default on a particular Scheduler
.onSubscribe
- the consumer called with the Disposable sent via onSubscribe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doOnTerminate(@NonNull @NonNull Action onTerminate)
This differs from doAfterTerminate
in that this happens before the onComplete
or
onError
notification.
doOnTerminate
does not operate by default on a particular Scheduler
.History: 2.2.7 - experimental
onTerminate
- the action to invoke when the consumer calls onComplete
or onError
doOnTerminate(Action)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> doOnSuccess(@NonNull @NonNull Consumer<? super T> onSuccess)
doOnSuccess
does not operate by default on a particular Scheduler
.onSuccess
- the consumer called with the success value of onSuccess@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> filter(@NonNull @NonNull Predicate<? super T> predicate)
filter
does not operate by default on a particular Scheduler
.predicate
- a function that evaluates the item emitted by the source Maybe, returning true
if it passes the filtertrue
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Maybe<R> flatMap(@NonNull @NonNull Function<? super T,? extends MaybeSource<? extends R>> mapper)
flatMap
does not operate by default on a particular Scheduler
.Note that flatMap and concatMap for Maybe is the same operation.
R
- the result value typemapper
- a function that, when applied to the item emitted by the source Maybe, returns a MaybeSourcefunc
when applied to the item emitted by the source Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Maybe<R> flatMap(@NonNull @NonNull Function<? super T,? extends MaybeSource<? extends R>> onSuccessMapper, @NonNull @NonNull Function<? super Throwable,? extends MaybeSource<? extends R>> onErrorMapper, @NonNull @NonNull Supplier<? extends MaybeSource<? extends R>> onCompleteSupplier)
flatMap
does not operate by default on a particular Scheduler
.R
- the result typeonSuccessMapper
- a function that returns a MaybeSource to merge for the onSuccess item emitted by this MaybeonErrorMapper
- a function that returns a MaybeSource to merge for an onError notification from this MaybeonCompleteSupplier
- a function that returns a MaybeSource to merge for an onComplete notification this Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U,R> @NonNull Maybe<R> flatMap(@NonNull @NonNull Function<? super T,? extends MaybeSource<? extends U>> mapper, @NonNull @NonNull BiFunction<? super T,? super U,? extends R> resultSelector)
flatMap
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the MaybeSource returned by the mapper
functionR
- the type of items emitted by the resulting Maybemapper
- a function that returns a MaybeSource for the item emitted by the source MayberesultSelector
- a function that combines one item emitted by each of the source and collection MaybeSource and
returns an item to be emitted by the resulting MaybeSource@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Flowable<U> flattenAsFlowable(@NonNull @NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
Maybe
into an Iterable
and emits its items as a
Flowable
sequence.
flattenAsFlowable
does not operate by default on a particular Scheduler
.U
- the type of item emitted by the resulting Iterablemapper
- a function that returns an Iterable sequence of values for when given an item emitted by the
source MaybeflattenStreamAsFlowable(Function)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Observable<U> flattenAsObservable(@NonNull @NonNull Function<? super T,? extends Iterable<? extends U>> mapper)
Maybe
into an Iterable
and emits its items as an
Observable
sequence.
flattenAsObservable
does not operate by default on a particular Scheduler
.U
- the type of item emitted by the resulting Iterablemapper
- a function that returns an Iterable sequence of values for when given an item emitted by the
source Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Observable<R> flatMapObservable(@NonNull @NonNull Function<? super T,? extends ObservableSource<? extends R>> mapper)
flatMapObservable
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- a function that, when applied to the item emitted by the source Maybe, returns an ObservableSourcefunc
when applied to the item emitted by the source Maybe@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Flowable<R> flatMapPublisher(@NonNull @NonNull Function<? super T,? extends Publisher<? extends R>> mapper)
flatMapPublisher
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- a function that, when applied to the item emitted by the source Maybe, returns a
Flowablefunc
when applied to the item emitted by the source Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Single<R> flatMapSingle(@NonNull @NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Single
based on applying a specified function to the item emitted by the
source Maybe
, where that function returns a Single
.
When this Maybe completes a NoSuchElementException
will be thrown.
flatMapSingle
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- a function that, when applied to the item emitted by the source Maybe, returns a
Singlemapper
when applied to the item emitted by the source Maybe@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Maybe<R> flatMapSingleElement(@NonNull @NonNull Function<? super T,? extends SingleSource<? extends R>> mapper)
Maybe
based on applying a specified function to the item emitted by the
source Maybe
, where that function returns a Single
.
When this Maybe just completes the resulting Maybe
completes as well.
flatMapSingleElement
does not operate by default on a particular Scheduler
.History: 2.0.2 - experimental
R
- the result value typemapper
- a function that, when applied to the item emitted by the source Maybe, returns a
Single@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Completable flatMapCompletable(@NonNull @NonNull Function<? super T,? extends CompletableSource> mapper)
Completable
that completes based on applying a specified function to the item emitted by the
source Maybe
, where that function returns a Completable
.
flatMapCompletable
does not operate by default on a particular Scheduler
.mapper
- a function that, when applied to the item emitted by the source Maybe, returns a
Completablemapper
when applied to the item emitted by the source Maybe@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> hide()
Allows preventing certain identity-based optimizations (fusion).
hide
does not operate by default on a particular Scheduler
.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Completable ignoreElement()
onComplete
or onError
.
ignoreElement
does not operate by default on a particular Scheduler
.onComplete
or onError
, based on which one is
called by the source Maybe@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Boolean> isEmpty()
true
if the source Maybe is empty, otherwise false
.
isEmpty
does not operate by default on a particular Scheduler
.@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Maybe<R> lift(@NonNull @NonNull MaybeOperator<? extends R,? super T> lift)
Maybe
which, when subscribed to, invokes the apply(MaybeObserver)
method
of the provided MaybeOperator
for each individual downstream Maybe
and allows the
insertion of a custom operator by accessing the downstream's MaybeObserver
during this subscription phase
and providing a new MaybeObserver
, containing the custom operator's intended business logic, that will be
used in the subscription process going further upstream.
Generally, such a new MaybeObserver
will wrap the downstream's MaybeObserver
and forwards the
onSuccess
, onError
and onComplete
events from the upstream directly or according to the
emission pattern the custom operator's business logic requires. In addition, such operator can intercept the
flow control calls of dispose
and isDisposed
that would have traveled upstream and perform
additional actions depending on the same business logic requirements.
Example:
// Step 1: Create the consumer type that will be returned by the MaybeOperator.apply():
public final class CustomMaybeObserver<T> implements MaybeObserver<T>, Disposable {
// The downstream's MaybeObserver that will receive the onXXX events
final MaybeObserver<? super String> downstream;
// The connection to the upstream source that will call this class' onXXX methods
Disposable upstream;
// The constructor takes the downstream subscriber and usually any other parameters
public CustomMaybeObserver(MaybeObserver<? super String> downstream) {
this.downstream = downstream;
}
// In the subscription phase, the upstream sends a Disposable to this class
// and subsequently this class has to send a Disposable to the downstream.
// Note that relaying the upstream's Disposable directly is not allowed in RxJava
@Override
public void onSubscribe(Disposable d) {
if (upstream != null) {
d.dispose();
} else {
upstream = d;
downstream.onSubscribe(this);
}
}
// The upstream calls this with the next item and the implementation's
// responsibility is to emit an item to the downstream based on the intended
// business logic, or if it can't do so for the particular item,
// request more from the upstream
@Override
public void onSuccess(T item) {
String str = item.toString();
if (str.length() < 2) {
downstream.onSuccess(str);
} else {
// Maybe is usually expected to produce one of the onXXX events
downstream.onComplete();
}
}
// Some operators may handle the upstream's error while others
// could just forward it to the downstream.
@Override
public void onError(Throwable throwable) {
downstream.onError(throwable);
}
// When the upstream completes, usually the downstream should complete as well.
@Override
public void onComplete() {
downstream.onComplete();
}
// Some operators may use their own resources which should be cleaned up if
// the downstream disposes the flow before it completed. Operators without
// resources can simply forward the dispose to the upstream.
// In some cases, a disposed flag may be set by this method so that other parts
// of this class may detect the dispose and stop sending events
// to the downstream.
@Override
public void dispose() {
upstream.dispose();
}
// Some operators may simply forward the call to the upstream while others
// can return the disposed flag set in dispose().
@Override
public boolean isDisposed() {
return upstream.isDisposed();
}
}
// Step 2: Create a class that implements the MaybeOperator interface and
// returns the custom consumer type from above in its apply() method.
// Such class may define additional parameters to be submitted to
// the custom consumer type.
final class CustomMaybeOperator<T> implements MaybeOperator<String> {
@Override
public MaybeObserver<? super String> apply(MaybeObserver<? super T> upstream) {
return new CustomMaybeObserver<T>(upstream);
}
}
// Step 3: Apply the custom operator via lift() in a flow by creating an instance of it
// or reusing an existing one.
Maybe.just(5)
.lift(new CustomMaybeOperator<Integer>())
.test()
.assertResult("5");
Maybe.just(15)
.lift(new CustomMaybeOperator<Integer>())
.test()
.assertResult();
Creating custom operators can be complicated and it is recommended one consults the RxJava wiki: Writing operators page about the tools, requirements, rules, considerations and pitfalls of implementing them.
Note that implementing custom operators via this lift()
method adds slightly more overhead by requiring
an additional allocation and indirection per assembled flows. Instead, extending the abstract Maybe
class and creating a MaybeTransformer
with it is recommended.
Note also that it is not possible to stop the subscription phase in lift()
as the apply()
method
requires a non-null MaybeObserver
instance to be returned, which is then unconditionally subscribed to
the upstream Maybe
. For example, if the operator decided there is no reason to subscribe to the
upstream source because of some optimization possibility or a failure to prepare the operator, it still has to
return a MaybeObserver
that should immediately dispose the upstream's Disposable
in its
onSubscribe
method. Again, using a MaybeTransformer
and extending the Maybe
is
a better option as subscribeActual(io.reactivex.rxjava3.core.MaybeObserver<? super T>)
can decide to not subscribe to its upstream after all.
lift
does not operate by default on a particular Scheduler
, however, the
MaybeOperator
may use a Scheduler
to support its own asynchronous behavior.R
- the output value typelift
- the MaybeOperator
that receives the downstream's MaybeObserver
and should return
a MaybeObserver
with custom behavior to be used as the consumer for the current
Maybe
.compose(MaybeTransformer)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <R> @NonNull Maybe<R> map(@NonNull @NonNull Function<? super T,? extends R> mapper)
map
does not operate by default on a particular Scheduler
.R
- the result value typemapper
- a function to apply to the item emitted by the Maybe@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<Notification<T>> materialize()
Notification
of the same kind
and emits it as a single success value to downstream.
materialize
does not operate by default on a particular Scheduler
.History: 2.2.4 - experimental
Single.dematerialize(Function)
@BackpressureSupport(value=FULL) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Flowable<T> mergeWith(@NonNull @NonNull MaybeSource<? extends T> other)
You can combine items emitted by multiple Maybes so that they appear as a single Flowable, by
using the mergeWith
method.
mergeWith
does not operate by default on a particular Scheduler
.other
- a MaybeSource to be merged@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public final @NonNull Maybe<T> observeOn(@NonNull @NonNull Scheduler scheduler)
Scheduler
,
asynchronously.
Scheduler
this operator will use.scheduler
- the Scheduler
to notify subscribers onScheduler
subscribeOn(io.reactivex.rxjava3.core.Scheduler)
@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<U> ofType(@NonNull @NonNull Class<U> clazz)
ofType
does not operate by default on a particular Scheduler
.U
- the output typeclazz
- the class type to filter the items emitted by the source Maybe@CheckReturnValue @SchedulerSupport(value="none") public final <R> R to(@NonNull @NonNull MaybeConverter<T,? extends R> converter)
This allows fluent conversion to any other type.
to
does not operate by default on a particular Scheduler
.History: 2.1.7 - experimental
R
- the resulting object typeconverter
- the function that receives the current Maybe instance and returns a valueNullPointerException
- if converter is null@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Flowable<T> toFlowable()
toFlowable
does not operate by default on a particular Scheduler
.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Observable<T> toObservable()
toObservable
does not operate by default on a particular Scheduler
.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Single<T> toSingle()
toSingle
does not operate by default on a particular Scheduler
.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> onErrorComplete()
onErrorComplete
does not operate by default on a particular Scheduler
.@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> onErrorComplete(@NonNull @NonNull Predicate<? super Throwable> predicate)
onErrorComplete
does not operate by default on a particular Scheduler
.predicate
- the predicate to call when an Throwable is emitted which should return true
if the Throwable should be swallowed and replaced with an onComplete.@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> onErrorResumeWith(@NonNull @NonNull MaybeSource<? extends T> next)
MaybeSource
rather than invoking
onError
if it encounters an error.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorResumeWith
does not operate by default on a particular Scheduler
.next
- the next MaybeSource
that will take over if the source Maybe encounters
an error@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> onErrorResumeNext(@NonNull @NonNull Function<? super Throwable,? extends MaybeSource<? extends T>> resumeFunction)
onError
if it encounters an error.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorResumeNext
does not operate by default on a particular Scheduler
.resumeFunction
- a function that returns a MaybeSource that will take over if the source Maybe encounters
an error@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> onErrorReturn(@NonNull @NonNull Function<? super Throwable,? extends T> valueSupplier)
onError
if it encounters an error.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorReturn
does not operate by default on a particular Scheduler
.valueSupplier
- a function that returns a single value that will be emitted as success value
the current Maybe signals an onError event@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> onErrorReturnItem(@NonNull T item)
onError
if it encounters an error.
You can use this to prevent errors from propagating or to supply fallback data should errors be encountered.
onErrorReturnItem
does not operate by default on a particular Scheduler
.item
- the value that is emitted as onSuccess in case this Maybe signals an onError@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> onExceptionResumeNext(@NonNull @NonNull MaybeSource<? extends T> next)
onError
if it encounters an Exception
.
This differs from onErrorResumeNext(io.reactivex.rxjava3.functions.Function<? super java.lang.Throwable, ? extends io.reactivex.rxjava3.core.MaybeSource<? extends T>>)
in that this one does not handle Throwable
or Error
but lets those continue through.
You can use this to prevent exceptions from propagating or to supply fallback data should exceptions be encountered.
onExceptionResumeNext
does not operate by default on a particular Scheduler
.next
- the next MaybeSource that will take over if the source Maybe encounters
an exception@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> onTerminateDetach()
onTerminateDetach
does not operate by default on a particular Scheduler
.@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Flowable<T> repeat()
repeat
does not operate by default on a particular Scheduler
.@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Flowable<T> repeat(long times)
count
times.
repeat
does not operate by default on a particular Scheduler
.times
- the number of times the source Maybe items are repeated, a count of 0 will yield an empty
sequencecount
timesIllegalArgumentException
- if count
is less than zero@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Flowable<T> repeatUntil(@NonNull @NonNull BooleanSupplier stop)
repeatUntil
does not operate by default on a particular Scheduler
.stop
- a boolean supplier that is called when the current Flowable completes and unless it returns
false, the current Flowable is resubscribedNullPointerException
- if stop
is null@BackpressureSupport(value=FULL) @CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Flowable<T> repeatWhen(@NonNull @NonNull Function<? super Flowable<Object>,? extends Publisher<?>> handler)
onComplete
. An onComplete
notification from the source will result in the emission of
a void
item to the Publisher provided as an argument to the notificationHandler
function. If that Publisher calls onComplete
or onError
then repeatWhen
will
call onComplete
or onError
on the child subscription. Otherwise, this Publisher will
resubscribe to the source Publisher.
Publisher
to honor backpressure as well.
If this expectation is violated, the operator may throw an IllegalStateException
.repeatWhen
does not operate by default on a particular Scheduler
.handler
- receives a Publisher of notifications with which a user can complete or error, aborting the repeat.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> retry()
onError
(infinite retry count).
If the source Maybe calls MaybeObserver.onError(java.lang.Throwable)
, this method will resubscribe to the source
Maybe rather than propagating the onError
call.
retry
does not operate by default on a particular Scheduler
.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> retry(@NonNull @NonNull BiPredicate<? super Integer,? super Throwable> predicate)
onError
and the predicate returns true for that specific exception and retry count.
retry
does not operate by default on a particular Scheduler
.predicate
- the predicate that determines if a resubscription may happen in case of a specific exception
and retry countretry()
,
ReactiveX operators documentation: Retry@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> retry(long count)
onError
up to a specified number of retries.
If the source Maybe calls MaybeObserver.onError(java.lang.Throwable)
, this method will resubscribe to the source
Maybe for a maximum of count
resubscriptions rather than propagating the
onError
call.
retry
does not operate by default on a particular Scheduler
.count
- the number of times to resubscribe if the current Maybe fails@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> retry(long times, @NonNull @NonNull Predicate<? super Throwable> predicate)
retry
does not operate by default on a particular Scheduler
.times
- the number of times to resubscribe if the current Maybe failspredicate
- the predicate called with the failure Throwable and should return true to trigger a retry.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> retry(@NonNull @NonNull Predicate<? super Throwable> predicate)
retry
does not operate by default on a particular Scheduler
.predicate
- the predicate that receives the failure Throwable and should return true to trigger a retry.@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> retryUntil(@NonNull @NonNull BooleanSupplier stop)
retryUntil
does not operate by default on a particular Scheduler
.stop
- the function that should return true to stop retrying@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Maybe<T> retryWhen(@NonNull @NonNull Function<? super Flowable<Throwable>,? extends Publisher<?>> handler)
onError
. An onError
notification from the source will result in the emission of a
Throwable
item to the Publisher provided as an argument to the notificationHandler
function. If that Publisher calls onComplete
or onError
then retry
will call
onComplete
or onError
on the child subscription. Otherwise, this Publisher will
resubscribe to the source Publisher.
Example: This retries 3 times, each time incrementing the number of seconds it waits.
Maybe.create((MaybeEmitter<? super String> s) -> {
System.out.println("subscribing");
s.onError(new RuntimeException("always fails"));
}, BackpressureStrategy.BUFFER).retryWhen(attempts -> {
return attempts.zipWith(Publisher.range(1, 3), (n, i) -> i).flatMap(i -> {
System.out.println("delay retry by " + i + " second(s)");
return Flowable.timer(i, TimeUnit.SECONDS);
});
}).blockingForEach(System.out::println);
Output is:
subscribing
delay retry by 1 second(s)
subscribing
delay retry by 2 second(s)
subscribing
delay retry by 3 second(s)
subscribing
Note that the inner Publisher
returned by the handler function should signal
either onNext
, onError
or onComplete
in response to the received
Throwable
to indicate the operator should retry or terminate. If the upstream to
the operator is asynchronous, signalling onNext followed by onComplete immediately may
result in the sequence to be completed immediately. Similarly, if this inner
Publisher
signals onError
or onComplete
while the upstream is
active, the sequence is terminated with the same signal immediately.
The following example demonstrates how to retry an asynchronous source with a delay:
Maybe.timer(1, TimeUnit.SECONDS)
.doOnSubscribe(s -> System.out.println("subscribing"))
.map(v -> { throw new RuntimeException(); })
.retryWhen(errors -> {
AtomicInteger counter = new AtomicInteger();
return errors
.takeWhile(e -> counter.getAndIncrement() != 3)
.flatMap(e -> {
System.out.println("delay retry by " + counter.get() + " second(s)");
return Flowable.timer(counter.get(), TimeUnit.SECONDS);
});
})
.blockingGet();
retryWhen
does not operate by default on a particular Scheduler
.handler
- receives a Publisher of notifications with which a user can complete or error, aborting the
retry@SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe()
onSuccess
and onComplete
emissions.
If the Maybe emits an error, it is wrapped into an
OnErrorNotImplementedException
and routed to the RxJavaPlugins.onError handler.
subscribe
does not operate by default on a particular Scheduler
.Disposable
reference with which the caller can stop receiving items before
the Maybe has finished sending them@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe(@NonNull @NonNull Consumer<? super T> onSuccess)
If the Maybe emits an error, it is wrapped into an
OnErrorNotImplementedException
and routed to the RxJavaPlugins.onError handler.
subscribe
does not operate by default on a particular Scheduler
.onSuccess
- the Consumer<T>
you have designed to accept a success value from the MaybeDisposable
reference with which the caller can stop receiving items before
the Maybe has finished sending themNullPointerException
- if onSuccess
is null@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull Disposable subscribe(@NonNull @NonNull Consumer<? super T> onSuccess, @NonNull @NonNull Consumer<? super Throwable> onError)
subscribe
does not operate by default on a particular Scheduler
.onSuccess
- the Consumer<T>
you have designed to accept a success value from the MaybeonError
- the Consumer<Throwable>
you have designed to accept any error notification from the
MaybeDisposable
reference with which the caller can stop receiving items before
the Maybe has finished sending themNullPointerException
- if onSuccess
is null, or
if onError
is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Disposable subscribe(@NonNull @NonNull Consumer<? super T> onSuccess, @NonNull @NonNull Consumer<? super Throwable> onError, @NonNull @NonNull Action onComplete)
subscribe
does not operate by default on a particular Scheduler
.onSuccess
- the Consumer<T>
you have designed to accept a success value from the MaybeonError
- the Consumer<Throwable>
you have designed to accept any error notification from the
MaybeonComplete
- the Action
you have designed to accept a completion notification from the
MaybeDisposable
reference with which the caller can stop receiving items before
the Maybe has finished sending themNullPointerException
- if onSuccess
is null, or
if onError
is null, or
if onComplete
is null@SchedulerSupport(value="none") public final void subscribe(@NonNull @NonNull MaybeObserver<? super T> observer)
MaybeSource
MaybeObserver
to this MaybeSource
instance.subscribe
in interface MaybeSource<T>
observer
- the MaybeObserver
, not null
protected abstract void subscribeActual(@NonNull @NonNull MaybeObserver<? super T> observer)
MaybeObserver
s.
There is no need to call any of the plugin hooks on the current Maybe
instance or
the MaybeObserver
; all hooks and basic safeguards have been
applied by subscribe(MaybeObserver)
before this method gets called.
observer
- the MaybeObserver to handle, not null@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public final @NonNull Maybe<T> subscribeOn(@NonNull @NonNull Scheduler scheduler)
Scheduler
.
Scheduler
this operator will use.scheduler
- the Scheduler
to perform subscription actions onScheduler
observeOn(io.reactivex.rxjava3.core.Scheduler)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <E extends MaybeObserver<? super T>> E subscribeWith(E observer)
Usage example:
Maybe<Integer> source = Maybe.just(1);
CompositeDisposable composite = new CompositeDisposable();
DisposableMaybeObserver<Integer> ds = new DisposableMaybeObserver<>() {
// ...
};
composite.add(source.subscribeWith(ds));
subscribeWith
does not operate by default on a particular Scheduler
.E
- the type of the MaybeObserver to use and returnobserver
- the MaybeObserver (subclass) to use and return, not nullsubscriber
NullPointerException
- if subscriber
is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Maybe<T> switchIfEmpty(@NonNull @NonNull MaybeSource<? extends T> other)
switchIfEmpty
does not operate by default on a particular Scheduler
.other
- the alternate MaybeSource to subscribe to if the main does not emit any items@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final @NonNull Single<T> switchIfEmpty(@NonNull @NonNull SingleSource<? extends T> other)
switchIfEmpty
does not operate by default on a particular Scheduler
.History: 2.1.4 - experimental
other
- the alternate SingleSource to subscribe to if the main does not emit any items@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<T> takeUntil(@NonNull @NonNull MaybeSource<U> other)
takeUntil
does not operate by default on a particular Scheduler
.U
- the type of items emitted by other
other
- the MaybeSource whose first emitted item will cause takeUntil
to stop emitting items
from the source Maybeother
emits its first item@BackpressureSupport(value=UNBOUNDED_IN) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<T> takeUntil(@NonNull @NonNull Publisher<U> other)
Publisher
is consumed in an unbounded fashion and is cancelled after the first item
emitted.takeUntil
does not operate by default on a particular Scheduler
.U
- the type of items emitted by other
other
- the Publisher whose first emitted item will cause takeUntil
to stop emitting items
from the source Publisherother
emits its first item@CheckReturnValue @SchedulerSupport(value="io.reactivex:computation") @NonNull public final @NonNull Maybe<T> timeout(long timeout, @NonNull @NonNull TimeUnit timeUnit)
TimeoutException
.
timeout
operates by default on the computation
Scheduler
.timeout
- maximum duration between emitted items before a timeout occurstimeUnit
- the unit of time that applies to the timeout
argument.@CheckReturnValue @NonNull @SchedulerSupport(value="io.reactivex:computation") public final @NonNull Maybe<T> timeout(long timeout, @NonNull @NonNull TimeUnit timeUnit, @NonNull @NonNull MaybeSource<? extends T> fallback)
timeout
operates by default on the computation
Scheduler
.timeout
- maximum duration between items before a timeout occurstimeUnit
- the unit of time that applies to the timeout
argumentfallback
- the fallback MaybeSource to use in case of a timeout@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public final @NonNull Maybe<T> timeout(long timeout, @NonNull @NonNull TimeUnit timeUnit, @NonNull @NonNull Scheduler scheduler, @NonNull @NonNull MaybeSource<? extends T> fallback)
Scheduler
this operator will use.timeout
- maximum duration between items before a timeout occurstimeUnit
- the unit of time that applies to the timeout
argumentfallback
- the MaybeSource to use as the fallback in case of a timeoutscheduler
- the Scheduler
to run the timeout timers on@CheckReturnValue @SchedulerSupport(value="custom") @NonNull public final @NonNull Maybe<T> timeout(long timeout, @NonNull @NonNull TimeUnit timeUnit, @NonNull @NonNull Scheduler scheduler)
TimeoutException
.
Scheduler
this operator will use.timeout
- maximum duration between items before a timeout occurstimeUnit
- the unit of time that applies to the timeout
argumentscheduler
- the Scheduler to run the timeout timers on@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<T> timeout(@NonNull @NonNull MaybeSource<U> timeoutIndicator)
Maybe
didn't signal an event before the timeoutIndicator
MaybeSource
signals, a
TimeoutException
is signaled instead.
timeout
does not operate by default on a particular Scheduler
.U
- the value type of thetimeoutIndicator
- the MaybeSource
that indicates the timeout by signaling onSuccess
or onComplete.@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<T> timeout(@NonNull @NonNull MaybeSource<U> timeoutIndicator, @NonNull @NonNull MaybeSource<? extends T> fallback)
Maybe
didn't signal an event before the timeoutIndicator
MaybeSource
signals,
the current Maybe
is disposed and the fallback
MaybeSource
subscribed to
as a continuation.
timeout
does not operate by default on a particular Scheduler
.U
- the value type of thetimeoutIndicator
- the MaybeSource
that indicates the timeout by signaling onSuccess
or onComplete
.fallback
- the MaybeSource
that is subscribed to if the current Maybe
times out@BackpressureSupport(value=UNBOUNDED_IN) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<T> timeout(@NonNull @NonNull Publisher<U> timeoutIndicator)
Maybe
source didn't signal an event before the timeoutIndicator
Publisher
signals, a
TimeoutException
is signaled instead.
U
- the value type of thetimeoutIndicator
- the MaybeSource
that indicates the timeout by signaling onSuccess
or onComplete
.@BackpressureSupport(value=UNBOUNDED_IN) @CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U> @NonNull Maybe<T> timeout(@NonNull @NonNull Publisher<U> timeoutIndicator, @NonNull @NonNull MaybeSource<? extends T> fallback)
Maybe
didn't signal an event before the timeoutIndicator
Publisher
signals,
the current Maybe
is disposed and the fallback
MaybeSource
subscribed to
as a continuation.
U
- the value type of thetimeoutIndicator
- the MaybeSource
that indicates the timeout by signaling onSuccess
or onComplete
fallback
- the MaybeSource
that is subscribed to if the current Maybe
times out@CheckReturnValue @NonNull @SchedulerSupport(value="custom") public final @NonNull Maybe<T> unsubscribeOn(@NonNull @NonNull Scheduler scheduler)
unsubscribeOn
calls dispose() of the upstream on the Scheduler
you specify.scheduler
- the target scheduler where to execute the disposalNullPointerException
- if scheduler is null@CheckReturnValue @NonNull @SchedulerSupport(value="none") public final <U,R> @NonNull Maybe<R> zipWith(@NonNull @NonNull MaybeSource<? extends U> other, @NonNull @NonNull BiFunction<? super T,? super U,? extends R> zipper)
If either this or the other MaybeSource is empty or signals an error, the resulting Maybe will terminate immediately and dispose the other source.
zipWith
does not operate by default on a particular Scheduler
.U
- the type of items emitted by the other
MaybeSourceR
- the type of items emitted by the resulting Maybeother
- the other MaybeSourcezipper
- a function that combines the pairs of items from the two MaybeSources to generate the items to
be emitted by the resulting Maybe@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull TestObserver<T> test()
test
does not operate by default on a particular Scheduler
.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull TestObserver<T> test(boolean dispose)
test
does not operate by default on a particular Scheduler
.dispose
- if true, the TestObserver will be dispose before subscribing to this
Maybe.@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Maybe<T> fromOptional(@NonNull @NonNull Optional<T> optional)
just(Object)
or an empty optional into an empty()
Maybe
instance.
Note that the operator takes an already instantiated optional reference and does not
by any means create this original optional. If the optional is to be created per
consumer upon subscription, use defer(Supplier)
around fromOptional
:
Maybe.defer(() -> Maybe.fromOptional(createOptional()));
fromOptional
does not operate by default on a particular Scheduler
.T
- the element type of the optional valueoptional
- the optional value to convert into a Maybe
just(Object)
,
empty()
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public static <T> @NonNull Maybe<T> fromCompletionStage(@NonNull @NonNull CompletionStage<T> stage)
CompletionStage
-based asynchronous calculation.
Note that the operator takes an already instantiated, running or terminated CompletionStage
.
If the optional is to be created per consumer upon subscription, use defer(Supplier)
around fromCompletionStage
:
Maybe.defer(() -> Maybe.fromCompletionStage(createCompletionStage()));
If the CompletionStage
completes with null
, the resulting Maybe
is completed via onComplete
.
Canceling the flow can't cancel the execution of the CompletionStage
because CompletionStage
itself doesn't support cancellation. Instead, the operator detaches from the CompletionStage
.
fromCompletionStage
does not operate by default on a particular Scheduler
.T
- the element type of the CompletionStagestage
- the CompletionStage to convert to Maybe and signal its terminal value or error@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Maybe<R> mapOptional(@NonNull @NonNull Function<? super T,Optional<? extends R>> mapper)
Optional
and emits the contained item if not empty.
mapOptional
does not operate by default on a particular Scheduler
.R
- the non-null output typemapper
- the function that receives the upstream success item and should return a non-empty Optional
to emit as the success output or an empty Optional
to complete the Maybe
map(Function)
,
filter(Predicate)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> toCompletionStage()
NoSuchElementException
if the upstream is empty) via
a CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
CompletionStage
s don't have a notion of emptiness and allow null
s, therefore, one can either use
toCompletionStage(Object)
with null
or turn the upstream into a sequence of Optional
s and
default to Optional.empty()
:
CompletionStage<Optional<T>> stage = source.map(Optional::of).toCompletionStage(Optional.empty());
toCompletionStage
does not operate by default on a particular Scheduler
.toCompletionStage(Object)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final @NonNull CompletionStage<T> toCompletionStage(@Nullable T defaultItem)
CompletionStage
.
The upstream can be canceled by converting the resulting CompletionStage
into
CompletableFuture
via CompletionStage.toCompletableFuture()
and
calling CompletableFuture.cancel(boolean)
on it.
The upstream will be also cancelled if the resulting CompletionStage
is converted to and
completed manually by CompletableFuture.complete(Object)
or CompletableFuture.completeExceptionally(Throwable)
.
CompletionStage
s don't have a notion of emptiness and allow null
s, therefore, one can either use
a defaultItem
of null
or turn the flow into a sequence of Optional
s and default to Optional.empty()
:
CompletionStage<Optional<T>> stage = source.map(Optional::of).toCompletionStage(Optional.empty());
toCompletionStage
does not operate by default on a particular Scheduler
.defaultItem
- the item to signal if the upstream is empty@CheckReturnValue @SchedulerSupport(value="none") @BackpressureSupport(value=FULL) @NonNull public final <R> @NonNull Flowable<R> flattenStreamAsFlowable(@NonNull @NonNull Function<? super T,? extends Stream<? extends R>> mapper)
Stream
and emits its
items to the downstream consumer as a Flowable
.
The operator closes the Stream
upon cancellation and when it terminates. Exceptions raised when
closing a Stream
are routed to the global error handler (RxJavaPlugins.onError(Throwable)
.
If a Stream
should not be closed, turn it into an Iterable
and use flattenAsFlowable(Function)
:
source.flattenAsFlowable(item -> createStream(item)::iterator);
Primitive streams are not supported and items have to be boxed manually (e.g., via IntStream.boxed()
):
source.flattenStreamAsFlowable(item -> IntStream.rangeClosed(1, 10).boxed());
Stream
does not support concurrent usage so creating and/or consuming the same instance multiple times
from multiple threads can lead to undefined behavior.
Stream
on demand (i.e., when requested).flattenStreamAsFlowable
does not operate by default on a particular Scheduler
.R
- the element type of the Stream
and the output Flowable
mapper
- the function that receives the upstream success item and should
return a Stream
of values to emit.flattenAsFlowable(Function)
,
flattenStreamAsObservable(Function)
@CheckReturnValue @SchedulerSupport(value="none") @NonNull public final <R> @NonNull Observable<R> flattenStreamAsObservable(@NonNull @NonNull Function<? super T,? extends Stream<? extends R>> mapper)
Stream
and emits its
items to the downstream consumer as an Observable
.
The operator closes the Stream
upon cancellation and when it terminates. Exceptions raised when
closing a Stream
are routed to the global error handler (RxJavaPlugins.onError(Throwable)
.
If a Stream
should not be closed, turn it into an Iterable
and use flattenAsObservable(Function)
:
source.flattenAsObservable(item -> createStream(item)::iterator);
Primitive streams are not supported and items have to be boxed manually (e.g., via IntStream.boxed()
):
source.flattenStreamAsObservable(item -> IntStream.rangeClosed(1, 10).boxed());
Stream
does not support concurrent usage so creating and/or consuming the same instance multiple times
from multiple threads can lead to undefined behavior.
flattenStreamAsObservable
does not operate by default on a particular Scheduler
.R
- the element type of the Stream
and the output Observable
mapper
- the function that receives the upstream success item and should
return a Stream
of values to emit.flattenAsObservable(Function)
,
flattenStreamAsFlowable(Function)