Class CompletableSubject
- All Implemented Interfaces:
CompletableObserver, CompletableSource
This subject does not have a public constructor by design; a new non-terminated instance of this
CompletableSubject can be created via the create() method.
Since the CompletableSubject is conceptionally derived from the Processor type in the Reactive Streams specification,
nulls are not allowed (Rule 2.13)
as parameters to onError(Throwable).
Even though CompletableSubject implements the CompletableObserver interface, calling
onSubscribe is not required (Rule 2.12)
if the subject is used as a standalone source. However, calling onSubscribe
after the CompletableSubject reached its terminal state will result in the
given Disposable being disposed immediately.
All methods are thread safe. Calling onComplete() multiple
times has no effect. Calling onError(Throwable) multiple times relays the Throwable to
the RxJavaPlugins.onError(Throwable) global error handler.
This CompletableSubject supports the standard state-peeking methods hasComplete(),
hasThrowable(), getThrowable() and hasObservers().
- Scheduler:
CompletableSubjectdoes not operate by default on a particularSchedulerand theCompletableObservers get notified on the thread where the terminatingonErrororonCompletemethods were invoked.- Error handling:
- When the
onError(Throwable)is called, theCompletableSubjectenters into a terminal state and emits the sameThrowableinstance to the last set ofCompletableObservers. During this emission, if one or moreCompletableObservers dispose their respectiveDisposables, theThrowableis delivered to the global error handler viaRxJavaPlugins.onError(Throwable)(multiple times if multipleCompletableObservers cancel at once). If there were noCompletableObservers subscribed to thisCompletableSubjectwhen theonError()was called, the global error handler is not invoked.
Example usage:
CompletableSubject subject = CompletableSubject.create();
TestObserver<Void> to1 = subject.test();
// a fresh CompletableSubject is empty
to1.assertEmpty();
subject.onComplete();
// a CompletableSubject is always void of items
to1.assertResult();
TestObserver<Void> to2 = subject.test()
// late CompletableObservers receive the terminal event
to2.assertResult();
History: 2.0.5 - experimental
- Since:
- 2.1
-
Method Summary
Modifier and TypeMethodDescriptionstatic @NonNull CompletableSubjectcreate()Creates a fresh CompletableSubject.Returns the terminal error if this CompletableSubject has been terminated with an error, null otherwise.booleanReturns true if this CompletableSubject has been completed.booleanReturns true if this CompletableSubject has observers.booleanReturns true if this CompletableSubject has been terminated with an error.voidCalled once the deferred computation completes normally.voidCalled once if the deferred computation 'throws' an exception.voidCalled once by theCompletableto set aDisposableon this instance which then can be used to cancel the subscription at any time.protected voidsubscribeActual(CompletableObserver observer) Implement this method to handle the incomingCompletableObservers and perform the business logic in your operator.Methods inherited from class Completable
amb, ambArray, ambWith, andThen, andThen, andThen, andThen, andThen, blockingAwait, blockingAwait, blockingSubscribe, blockingSubscribe, blockingSubscribe, blockingSubscribe, cache, complete, compose, concat, concat, concat, concatArray, concatArrayDelayError, concatDelayError, concatDelayError, concatDelayError, concatWith, create, defer, delay, delay, delay, delaySubscription, delaySubscription, doAfterTerminate, doFinally, doOnComplete, doOnDispose, doOnError, doOnEvent, doOnLifecycle, doOnSubscribe, doOnTerminate, error, error, fromAction, fromCallable, fromCompletionStage, fromFuture, fromMaybe, fromObservable, fromPublisher, fromRunnable, fromSingle, fromSupplier, hide, lift, materialize, merge, merge, merge, mergeArray, mergeArrayDelayError, mergeDelayError, mergeDelayError, mergeDelayError, mergeWith, never, observeOn, onErrorComplete, onErrorComplete, onErrorResumeNext, onErrorResumeWith, onErrorReturn, onErrorReturnItem, onTerminateDetach, repeat, repeat, repeatUntil, repeatWhen, retry, retry, retry, retry, retry, retryUntil, retryWhen, safeSubscribe, sequenceEqual, startWith, startWith, startWith, startWith, startWith, subscribe, subscribe, subscribe, subscribe, subscribe, subscribeOn, subscribeWith, switchOnNext, switchOnNextDelayError, takeUntil, test, test, timeout, timeout, timeout, timeout, timer, timer, to, toCompletionStage, toFlowable, toFuture, toMaybe, toObservable, toSingle, toSingleDefault, unsafeCreate, unsubscribeOn, using, using, wrap
-
Method Details
-
create
Creates a fresh CompletableSubject.- Returns:
- the new CompletableSubject instance
-
onSubscribe
Description copied from interface:CompletableObserverCalled once by theCompletableto set aDisposableon this instance which then can be used to cancel the subscription at any time.- Specified by:
onSubscribein interfaceCompletableObserver- Parameters:
d- theDisposableinstance to call dispose on for cancellation, not null
-
onError
Description copied from interface:CompletableObserverCalled once if the deferred computation 'throws' an exception.- Specified by:
onErrorin interfaceCompletableObserver- Parameters:
e- the exception, notnull.
-
onComplete
public void onComplete()Description copied from interface:CompletableObserverCalled once the deferred computation completes normally.- Specified by:
onCompletein interfaceCompletableObserver
-
subscribeActual
Description copied from class:CompletableImplement this method to handle the incomingCompletableObservers and perform the business logic in your operator.There is no need to call any of the plugin hooks on the current
Completableinstance or theCompletableObserver; all hooks and basic safeguards have been applied byCompletable.subscribe(CompletableObserver)before this method gets called.- Specified by:
subscribeActualin classCompletable- Parameters:
observer- theCompletableObserverinstance, nevernull
-
getThrowable
-
hasThrowable
public boolean hasThrowable()Returns true if this CompletableSubject has been terminated with an error.- Returns:
- true if this CompletableSubject has been terminated with an error
-
hasComplete
public boolean hasComplete()Returns true if this CompletableSubject has been completed.- Returns:
- true if this CompletableSubject has been completed
-
hasObservers
public boolean hasObservers()Returns true if this CompletableSubject has observers.- Returns:
- true if this CompletableSubject has observers
-