Skip to content

Commit

Permalink
Added convenience methods reject and resolve
Browse files Browse the repository at this point in the history
  • Loading branch information
saturnism committed Oct 28, 2017
1 parent 395e988 commit 1ad6c1f
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -596,4 +596,23 @@ Promise<AllValues, Throwable, MasterProgress> settle(
* @throws IllegalArgumentException if any item in iterable cannot be converted to a {@link Promise}
*/
Promise<AllValues, Throwable, MasterProgress> settle(Iterable<?> iterable);

/**
* A convenience method create a {@link Promise} that immediately resolves to a value.
*
* @since 2.0
* @param resolve value to resolve to
* @return a Promise that resolves to value
*/
<D, F, P> Promise<D, F, P> resolve(D resolve);

/**
* A convenience method to create a {@link Promise} that immediately fails with a reason.
*
* @since 2.0
* @param reject reason to reject
* @return a {@link Promise} that rejects with reason
*/
<D, F, P> Promise<D, F, P> reject(F reject);

}
Original file line number Diff line number Diff line change
Expand Up @@ -882,6 +882,16 @@ public Promise<AllValues, Throwable, MasterProgress> settle(Iterable<?> iterable
return new AllValuesDeferredObject(promises.toArray(new Promise[promises.size()]));
}

@Override
public <D, F, P> Promise<D, F, P> resolve(D resolve) {
return new DeferredObject<D, F, P>().resolve(resolve).promise();
}

@Override
public <D, F, P> Promise<D, F, P> reject(F reject) {
return new DeferredObject<D, F, P>().reject(reject).promise();
}

protected boolean canPromise(Object o) {
if (o instanceof DeferredFutureTask) {
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -305,4 +305,30 @@ public void onFail(Object result) {
holder.assertEquals(100);
Assert.assertEquals(0, failCount.get());
}

@Test
public void testPromisesResolve() {
final ValueHolder<String> holder = new ValueHolder<String>();
deferredManager.resolve("hello").done(new DoneCallback<String>() {
@Override
public void onDone(String result) {
holder.set(result);
}
});

holder.assertEquals("hello");
}

@Test
public void testPromisesReject() {
final ValueHolder<String> holder = new ValueHolder<String>();
deferredManager.reject("oops").fail(new FailCallback<String>() {
@Override
public void onFail(String result) {
holder.set(result);
}
});

holder.assertEquals("oops");
}
}

0 comments on commit 1ad6c1f

Please sign in to comment.