@ConsumerType
public class PromiseFactory
extends java.lang.Object
Instances of this class can be used to create Deferred and Promise objects which use the executors used to construct this object for any callback or scheduled operation execution.
Modifier and Type | Class and Description |
---|---|
private static class |
PromiseFactory.All<T,S extends T>
A callback used to resolve the specified Promise when the specified list
of Promises are resolved for the
all(Collection)
method. |
private static class |
PromiseFactory.DefaultExecutors
Default executors for Promises.
|
private static class |
PromiseFactory.InlineExecutor
An Executor implementation which executes the task immediately on the
thread calling the
Executor.execute method. |
Modifier and Type | Field and Description |
---|---|
private java.util.concurrent.Executor |
callbackExecutor
The executor to use for callbacks.
|
(package private) static PromiseFactory |
defaultFactory
The default factory which uses the default callback executor and default
scheduled executor.
|
private java.util.concurrent.ScheduledExecutorService |
scheduledExecutor
The executor to use for scheduled operations.
|
Constructor and Description |
---|
PromiseFactory(java.util.concurrent.Executor callbackExecutor)
Create a new PromiseFactory with the specified callback executor.
|
PromiseFactory(java.util.concurrent.Executor callbackExecutor,
java.util.concurrent.ScheduledExecutorService scheduledExecutor)
Create a new PromiseFactory with the specified callback executor and
specified scheduled executor.
|
Modifier and Type | Method and Description |
---|---|
<T,S extends T> |
all(java.util.Collection<Promise<S>> promises)
Returns a new Promise that is a latch on the resolution of the specified
Promises.
|
<T> Deferred<T> |
deferred()
Create a new Deferred with the callback executor and scheduled executor
of this PromiseFactory object.
|
java.util.concurrent.Executor |
executor()
Returns the executor to use for callbacks.
|
<T> Promise<T> |
failed(java.lang.Throwable failure)
Returns a new Promise that has been resolved with the specified failure.
|
static java.util.concurrent.Executor |
inlineExecutor()
Returns an Executor implementation that executes tasks immediately on the
thread calling the
Executor.execute method. |
<T> Promise<T> |
resolved(T value)
Returns a new Promise that has been resolved with the specified value.
|
java.util.concurrent.ScheduledExecutorService |
scheduledExecutor()
Returns the scheduled executor to use for scheduled operations.
|
<T> Promise<T> |
submit(java.util.concurrent.Callable<? extends T> task)
Returns a new Promise that will hold the result of the specified task.
|
static final PromiseFactory defaultFactory
private final java.util.concurrent.Executor callbackExecutor
null
, the default
callback executor is used.private final java.util.concurrent.ScheduledExecutorService scheduledExecutor
null
, the
default scheduled executor is used.public PromiseFactory(java.util.concurrent.Executor callbackExecutor)
The default scheduled executor will be used.
callbackExecutor
- The executor to use for callbacks. null
can be specified for the default callback executor.public PromiseFactory(java.util.concurrent.Executor callbackExecutor, java.util.concurrent.ScheduledExecutorService scheduledExecutor)
callbackExecutor
- The executor to use for callbacks. null
can be specified for the default callback executor.scheduledExecutor
- The scheduled executor for use for scheduled
operations. null
can be specified for the default
scheduled executor.public java.util.concurrent.Executor executor()
null
was specified for the callback
executor when this PromiseFactory was created.public java.util.concurrent.ScheduledExecutorService scheduledExecutor()
null
was specified
for the scheduled executor when this PromiseFactory was created.public <T> Deferred<T> deferred()
Use this method instead of Deferred.Deferred()
to create a new
Deferred
whose associated Promise uses executors other than the
default executors.
T
- The value type associated with the returned Deferred.Deferred
with the callback and scheduled executors
of this PromiseFactory objectpublic <T> Promise<T> resolved(T value)
The returned Promise uses the callback executor and scheduled executor of this PromiseFactory object
Use this method instead of Promises.resolved(Object)
to create a
Promise which uses executors other than the default executors.
T
- The value type associated with the returned Promise.value
- The value of the resolved Promise.public <T> Promise<T> failed(java.lang.Throwable failure)
The returned Promise uses the callback executor and scheduled executor of this PromiseFactory object
Use this method instead of Promises.failed(Throwable)
to create a
Promise which uses executors other than the default executors.
T
- The value type associated with the returned Promise.failure
- The failure of the resolved Promise. Must not be
null
.public <T> Promise<T> submit(java.util.concurrent.Callable<? extends T> task)
The returned Promise uses the callback executor and scheduled executor of this PromiseFactory object
The specified task will be executed on the callback
executor
.
T
- The value type associated with the returned Promise.task
- The task whose result will be available from the returned
Promise.public <T,S extends T> Promise<java.util.List<T>> all(java.util.Collection<Promise<S>> promises)
The returned Promise uses the callback executor and scheduled executor of this PromiseFactory object
The returned Promise acts as a gate and must be resolved after all of the specified Promises are resolved.
T
- The value type of the List value associated with the returned
Promise.S
- A subtype of the value type of the List value associated with
the returned Promise.promises
- The Promises which must be resolved before the returned
Promise must be resolved. Must not be null
and all of
the elements in the collection must not be null
.FailedPromisesException
if any of the specified Promises
are resolved with a failure. The failure
FailedPromisesException
must contain all of the specified
Promises which resolved with a failure.public static java.util.concurrent.Executor inlineExecutor()
Executor.execute
method.Executor.execute
method.