T
- the type of item emitted by the BlockingObservable
public final class BlockingObservable<T>
extends java.lang.Object
BlockingObservable
is a variety of Observable
that provides blocking operators. It can be
useful for testing and demo purposes, but is generally inappropriate for production applications (if you
think you need to use a BlockingObservable
this is usually a sign that you should rethink your
design).
You construct a BlockingObservable
from an Observable
with from(Observable)
or
Observable.toBlocking()
.
The documentation for this interface makes use of a form of marble diagram that has been modified to illustrate blocking operators. The following legend explains these marble diagrams:
Modifier and Type | Method and Description |
---|---|
T |
first()
Returns the first item emitted by this
BlockingObservable , or throws
NoSuchElementException if it emits no items. |
T |
first(Func1<? super T,java.lang.Boolean> predicate)
Returns the first item emitted by this
BlockingObservable that matches a predicate, or throws
NoSuchElementException if it emits no such item. |
T |
firstOrDefault(T defaultValue)
Returns the first item emitted by this
BlockingObservable , or a default value if it emits no
items. |
T |
firstOrDefault(T defaultValue,
Func1<? super T,java.lang.Boolean> predicate)
Returns the first item emitted by this
BlockingObservable that matches a predicate, or a default
value if it emits no such items. |
void |
forEach(Action1<? super T> onNext)
Invokes a method on each item emitted by this
BlockingObservable and blocks until the Observable
completes. |
static <T> BlockingObservable<T> |
from(Observable<? extends T> o)
Converts an
Observable into a BlockingObservable . |
java.util.Iterator<T> |
getIterator()
Returns an
Iterator that iterates over all items emitted by this BlockingObservable . |
T |
last()
Returns the last item emitted by this
BlockingObservable , or throws
NoSuchElementException if this BlockingObservable emits no items. |
T |
last(Func1<? super T,java.lang.Boolean> predicate)
Returns the last item emitted by this
BlockingObservable that matches a predicate, or throws
NoSuchElementException if it emits no such items. |
T |
lastOrDefault(T defaultValue)
Returns the last item emitted by this
BlockingObservable , or a default value if it emits no
items. |
T |
lastOrDefault(T defaultValue,
Func1<? super T,java.lang.Boolean> predicate)
Returns the last item emitted by this
BlockingObservable that matches a predicate, or a default
value if it emits no such items. |
java.lang.Iterable<T> |
latest()
Returns an
Iterable that returns the latest item emitted by this BlockingObservable ,
waiting if necessary for one to become available. |
java.lang.Iterable<T> |
mostRecent(T initialValue)
Returns an
Iterable that always returns the item most recently emitted by this
BlockingObservable . |
java.lang.Iterable<T> |
next()
Returns an
Iterable that blocks until this BlockingObservable emits another item, then
returns that item. |
T |
single()
If this
BlockingObservable completes after emitting a single item, return that item, otherwise
throw a NoSuchElementException . |
T |
single(Func1<? super T,java.lang.Boolean> predicate)
If this
BlockingObservable completes after emitting a single item that matches a given predicate,
return that item, otherwise throw a NoSuchElementException . |
T |
singleOrDefault(T defaultValue)
If this
BlockingObservable completes after emitting a single item, return that item; if it emits
more than one item, throw an IllegalArgumentException ; if it emits no items, return a default
value. |
T |
singleOrDefault(T defaultValue,
Func1<? super T,java.lang.Boolean> predicate)
If this
BlockingObservable completes after emitting a single item that matches a predicate,
return that item; if it emits more than one such item, throw an IllegalArgumentException ; if it
emits no items, return a default value. |
void |
subscribe()
Runs the source observable to a terminal event, ignoring any values and rethrowing any exception.
|
void |
subscribe(Action1<? super T> onNext)
Subscribes to the source and calls the given action on the current thread and rethrows any exception wrapped
into OnErrorNotImplementedException.
|
void |
subscribe(Action1<? super T> onNext,
Action1<? super java.lang.Throwable> onError)
Subscribes to the source and calls the given actions on the current thread.
|
void |
subscribe(Action1<? super T> onNext,
Action1<? super java.lang.Throwable> onError,
Action0 onCompleted)
Subscribes to the source and calls the given actions on the current thread.
|
void |
subscribe(Observer<? super T> observer)
Subscribes to the source and calls back the Observer methods on the current thread.
|
void |
subscribe(Subscriber<? super T> subscriber)
Subscribes to the source and calls the Subscriber methods on the current thread.
|
java.util.concurrent.Future<T> |
toFuture()
Returns a
Future representing the single value emitted by this BlockingObservable . |
java.lang.Iterable<T> |
toIterable()
Converts this
BlockingObservable into an Iterable . |
public static <T> BlockingObservable<T> from(Observable<? extends T> o)
Observable
into a BlockingObservable
.T
- the observed value typeo
- the Observable
you want to convertBlockingObservable
version of o
public void forEach(Action1<? super T> onNext)
BlockingObservable
and blocks until the Observable
completes.
Note: This will block even if the underlying Observable is asynchronous.
This is similar to Observable.subscribe(Subscriber)
, but it blocks. Because it blocks it does not
need the Observer.onCompleted()
or Observer.onError(Throwable)
methods. If the
underlying Observable terminates with an error, rather than calling onError
, this method will
throw an exception.
The difference between this method and subscribe(Action1)
is that the onNext
action
is executed on the emission thread instead of the current thread.
onNext
- the Action1
to invoke for each item emitted by the BlockingObservable
java.lang.RuntimeException
- if an error occurssubscribe(Action1)
public java.util.Iterator<T> getIterator()
Iterator
that iterates over all items emitted by this BlockingObservable
.
Iterator
that can iterate over the items emitted by this BlockingObservable
public T first()
BlockingObservable
, or throws
NoSuchElementException
if it emits no items.BlockingObservable
java.util.NoSuchElementException
- if this BlockingObservable
emits no itemspublic T first(Func1<? super T,java.lang.Boolean> predicate)
BlockingObservable
that matches a predicate, or throws
NoSuchElementException
if it emits no such item.predicate
- a predicate function to evaluate items emitted by this BlockingObservable
BlockingObservable
that matches the predicatejava.util.NoSuchElementException
- if this BlockingObservable
emits no such itemspublic T firstOrDefault(T defaultValue)
BlockingObservable
, or a default value if it emits no
items.defaultValue
- a default value to return if this BlockingObservable
emits no itemsBlockingObservable
, or the default value if it emits no
itemspublic T firstOrDefault(T defaultValue, Func1<? super T,java.lang.Boolean> predicate)
BlockingObservable
that matches a predicate, or a default
value if it emits no such items.defaultValue
- a default value to return if this BlockingObservable
emits no matching itemspredicate
- a predicate function to evaluate items emitted by this BlockingObservable
BlockingObservable
that matches the predicate, or the
default value if this BlockingObservable
emits no matching itemspublic T last()
BlockingObservable
, or throws
NoSuchElementException
if this BlockingObservable
emits no items.
BlockingObservable
java.util.NoSuchElementException
- if this BlockingObservable
emits no itemspublic T last(Func1<? super T,java.lang.Boolean> predicate)
BlockingObservable
that matches a predicate, or throws
NoSuchElementException
if it emits no such items.
predicate
- a predicate function to evaluate items emitted by the BlockingObservable
BlockingObservable
that matches the predicatejava.util.NoSuchElementException
- if this BlockingObservable
emits no itemspublic T lastOrDefault(T defaultValue)
BlockingObservable
, or a default value if it emits no
items.
defaultValue
- a default value to return if this BlockingObservable
emits no itemsBlockingObservable
, or the default value if it emits no
itemspublic T lastOrDefault(T defaultValue, Func1<? super T,java.lang.Boolean> predicate)
BlockingObservable
that matches a predicate, or a default
value if it emits no such items.
defaultValue
- a default value to return if this BlockingObservable
emits no matching itemspredicate
- a predicate function to evaluate items emitted by this BlockingObservable
BlockingObservable
that matches the predicate, or the
default value if it emits no matching itemspublic java.lang.Iterable<T> mostRecent(T initialValue)
Iterable
that always returns the item most recently emitted by this
BlockingObservable
.
initialValue
- the initial value that the Iterable
sequence will yield if this
BlockingObservable
has not yet emitted an itemIterable
that on each iteration returns the item that this BlockingObservable
has most recently emittedpublic java.lang.Iterable<T> next()
Iterable
that blocks until this BlockingObservable
emits another item, then
returns that item.
Iterable
that blocks upon each iteration until this BlockingObservable
emits
a new item, whereupon the Iterable returns that itempublic java.lang.Iterable<T> latest()
Iterable
that returns the latest item emitted by this BlockingObservable
,
waiting if necessary for one to become available.
If this BlockingObservable
produces items faster than Iterator.next
takes them,
onNext
events might be skipped, but onError
or onCompleted
events are not.
Note also that an onNext
directly followed by onCompleted
might hide the onNext
event.
BlockingObservable
public T single()
BlockingObservable
completes after emitting a single item, return that item, otherwise
throw a NoSuchElementException
.
BlockingObservable
public T single(Func1<? super T,java.lang.Boolean> predicate)
BlockingObservable
completes after emitting a single item that matches a given predicate,
return that item, otherwise throw a NoSuchElementException
.
predicate
- a predicate function to evaluate items emitted by this BlockingObservable
BlockingObservable
that matches the predicatepublic T singleOrDefault(T defaultValue)
BlockingObservable
completes after emitting a single item, return that item; if it emits
more than one item, throw an IllegalArgumentException
; if it emits no items, return a default
value.
defaultValue
- a default value to return if this BlockingObservable
emits no itemsBlockingObservable
, or the default value if it emits no
itemspublic T singleOrDefault(T defaultValue, Func1<? super T,java.lang.Boolean> predicate)
BlockingObservable
completes after emitting a single item that matches a predicate,
return that item; if it emits more than one such item, throw an IllegalArgumentException
; if it
emits no items, return a default value.
defaultValue
- a default value to return if this BlockingObservable
emits no matching itemspredicate
- a predicate function to evaluate items emitted by this BlockingObservable
BlockingObservable
that matches the predicate, or the
default value if no such items are emittedpublic java.util.concurrent.Future<T> toFuture()
Future
representing the single value emitted by this BlockingObservable
.
If BlockingObservable
emits more than one item, Future
will receive an
IllegalArgumentException
. If BlockingObservable
is empty, Future
will receive an NoSuchElementException
.
If the BlockingObservable
may emit more than one item, use Observable.toList().toBlocking().toFuture()
.
Future
that expects a single item to be emitted by this BlockingObservable
public java.lang.Iterable<T> toIterable()
BlockingObservable
into an Iterable
.
Iterable
version of this BlockingObservable
public void subscribe()
public void subscribe(Observer<? super T> observer)
observer
- the observer to call event methods onpublic void subscribe(Subscriber<? super T> subscriber)
The unsubscription and backpressure is composed through.
subscriber
- the subscriber to forward events and calls to in the current threadpublic void subscribe(Action1<? super T> onNext)
The difference between this method and forEach(Action1)
is that the
action is always executed on the current thread.
onNext
- the callback action for each source valueforEach(Action1)
public void subscribe(Action1<? super T> onNext, Action1<? super java.lang.Throwable> onError)
onNext
- the callback action for each source valueonError
- the callback action for an error eventpublic void subscribe(Action1<? super T> onNext, Action1<? super java.lang.Throwable> onError, Action0 onCompleted)
onNext
- the callback action for each source valueonError
- the callback action for an error eventonCompleted
- the callback action for the completion event.