T
- The value type associated with the created Promise.@ProviderType public class Deferred<T> extends Object
Instances of this class can be used to create a Promise
that can be
resolved in the future. The associated
Promise can be
successfully resolved with resolve(Object)
or resolved with a
failure with fail(Throwable)
. It can also be resolved with the
resolution of another promise using resolveWith(Promise)
.
The associated Promise can be provided to any one, but the Deferred object should be made available only to the party that will responsible for resolving the Promise.
Constructor and Description |
---|
Deferred()
Create a new Deferred.
|
Modifier and Type | Method and Description |
---|---|
void |
fail(Throwable failure)
Fail the Promise associated with this Deferred.
|
Promise<T> |
getPromise()
Returns the Promise associated with this Deferred.
|
void |
resolve(T value)
Successfully resolve the Promise associated with this Deferred.
|
Promise<Void> |
resolveWith(CompletionStage<? extends T> with)
Resolve the Promise associated with this Deferred with the specified
CompletionStage.
|
Promise<Void> |
resolveWith(Promise<? extends T> with)
Resolve the Promise associated with this Deferred with the specified
Promise.
|
String |
toString()
Returns a string representation of the associated Promise.
|
public Deferred()
The associated promise
will use the default
callback executor and default scheduled executor.
PromiseFactory.deferred()
public Promise<T> getPromise()
All Promise objects created by the associated Promise will use the executors of the associated Promise.
public void resolve(T value)
After the associated Promise is resolved with the specified value, all
registered callbacks
are called and
any chained
Promises are resolved.
This may occur asynchronously to this method.
Resolving the associated Promise happens-before any registered
callback is called. That is, in a registered callback,
Promise.isDone()
must return true
and
Promise.getValue()
and Promise.getFailure()
must not
block.
value
- The value of the resolved Promise.IllegalStateException
- If the associated Promise was already
resolved.public void fail(Throwable failure)
After the associated Promise is resolved with the specified failure, all
registered callbacks
are called and
any chained
Promises are resolved.
This may occur asynchronously to this method.
Resolving the associated Promise happens-before any registered
callback is called. That is, in a registered callback,
Promise.isDone()
must return true
and
Promise.getValue()
and Promise.getFailure()
must not
block.
failure
- The failure of the resolved Promise. Must not be
null
.IllegalStateException
- If the associated Promise was already
resolved.public Promise<Void> resolveWith(Promise<? extends T> with)
If the specified Promise is successfully resolved, the associated Promise is resolved with the value of the specified Promise. If the specified Promise is resolved with a failure, the associated Promise is resolved with the failure of the specified Promise.
After the associated Promise is resolved with the specified Promise, all
registered callbacks
are called and
any chained
Promises are resolved.
This may occur asynchronously to this method.
Resolving the associated Promise happens-before any registered
callback is called. That is, in a registered callback,
Promise.isDone()
must return true
and
Promise.getValue()
and Promise.getFailure()
must not
block.
with
- A Promise whose value or failure must be used to resolve the
associated Promise. Must not be null
.null
, if the
associated Promise was resolved by the specified Promise. The
returned Promise must be resolved with a failure of
IllegalStateException
, if the associated Promise was
already resolved when the specified Promise was resolved.public String toString()
public Promise<Void> resolveWith(CompletionStage<? extends T> with)
If the specified CompletionStage is completed normally, the associated Promise is resolved with the value of the specified CompletionStage. If the specified CompletionStage is completed exceptionally, the associated Promise is resolved with the failure of the specified CompletionStage.
After the associated Promise is resolved with the specified
CompletionStage, all registered callbacks
are called and any chained
Promises are resolved. This may occur asynchronously to this
method.
Resolving the associated Promise happens-before any registered
callback is called. That is, in a registered callback,
Promise.isDone()
must return true
and
Promise.getValue()
and Promise.getFailure()
must not
block.
with
- A CompletionStage whose result must be used to resolve the
associated Promise. Must not be null
.null
, if the
associated Promise was resolved by the specified CompletionStage.
The returned Promise must be resolved with a failure of
IllegalStateException
, if the associated Promise was
already resolved when the specified CompletionStage was
completed.Copyright © Contributors to the Eclipse Foundation Licensed under the Eclipse Foundation Specification License – v1.0