mirror of
https://github.com/jlengrand/vert.x.git
synced 2026-03-10 08:51:19 +00:00
Remove succeeded/failed Promise creation - see #3139
This commit is contained in:
@@ -29,49 +29,6 @@ import static io.vertx.core.Future.factory;
|
||||
@VertxGen
|
||||
public interface Promise<T> extends Handler<AsyncResult<T>> {
|
||||
|
||||
/**
|
||||
* Create a succeeded promise with a {@code null} result
|
||||
*
|
||||
* @param <T> the result type
|
||||
* @return the promise
|
||||
*/
|
||||
static <T> Promise<T> succeededPromise() {
|
||||
return factory.succeededPromise();
|
||||
}
|
||||
|
||||
/**
|
||||
* Created a succeeded promise with the specified {@code result}.
|
||||
*
|
||||
* @param result the result
|
||||
* @param <T> the result type
|
||||
* @return the promise
|
||||
*/
|
||||
static <T> Promise<T> succeededPromise(T result) {
|
||||
return factory.succeededPromise(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a failed promise with the specified failure {@code cause}.
|
||||
*
|
||||
* @param cause the failure cause as a Throwable
|
||||
* @param <T> the result type
|
||||
* @return the promise
|
||||
*/
|
||||
static <T> Promise<T> failedPromise(Throwable cause) {
|
||||
return factory.failedPromise(cause);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a failed promise with the specified {@code failureMessage}.
|
||||
*
|
||||
* @param failureMessage the failure message
|
||||
* @param <T> the result type
|
||||
* @return the promise
|
||||
*/
|
||||
static <T> Promise<T> failedPromise(String failureMessage) {
|
||||
return factory.failurePromise(failureMessage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a promise that hasn't completed yet
|
||||
*
|
||||
|
||||
@@ -14,12 +14,11 @@ package io.vertx.core.impl;
|
||||
import io.vertx.core.AsyncResult;
|
||||
import io.vertx.core.Future;
|
||||
import io.vertx.core.Handler;
|
||||
import io.vertx.core.Promise;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:julien@julienviet.com">Julien Viet</a>
|
||||
*/
|
||||
public class FailedFuture<T> implements Future<T>, Promise<T> {
|
||||
public class FailedFuture<T> implements Future<T> {
|
||||
|
||||
private final Throwable cause;
|
||||
|
||||
@@ -55,46 +54,6 @@ public class FailedFuture<T> implements Future<T>, Promise<T> {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(T result) {
|
||||
throw new IllegalStateException("Result is already complete: failed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
throw new IllegalStateException("Result is already complete: failed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(Throwable cause) {
|
||||
throw new IllegalStateException("Result is already complete: failed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(String failureMessage) {
|
||||
throw new IllegalStateException("Result is already complete: failed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryComplete(T result) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryComplete() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryFail(Throwable cause) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryFail(String failureMessage) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T result() {
|
||||
return null;
|
||||
@@ -115,16 +74,6 @@ public class FailedFuture<T> implements Future<T>, Promise<T> {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(AsyncResult<T> asyncResult) {
|
||||
throw new IllegalStateException("Result is already complete: failed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Future<T> future() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Future{cause=" + cause.getMessage() + "}";
|
||||
|
||||
@@ -27,28 +27,6 @@ public class FutureFactoryImpl implements FutureFactory {
|
||||
return new FutureImpl<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Promise<T> succeededPromise() {
|
||||
@SuppressWarnings("unchecked")
|
||||
Promise<T> promise = EMPTY;
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Promise<T> succeededPromise(T result) {
|
||||
return new SucceededFuture<>(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Promise<T> failedPromise(Throwable t) {
|
||||
return new FailedFuture<>(t);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Promise<T> failurePromise(String failureMessage) {
|
||||
return new FailedFuture<>(failureMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Future<T> future() {
|
||||
return new FutureImpl<>();
|
||||
|
||||
@@ -19,7 +19,7 @@ import io.vertx.core.Promise;
|
||||
/**
|
||||
* @author <a href="mailto:julien@julienviet.com">Julien Viet</a>
|
||||
*/
|
||||
class SucceededFuture<T> implements Future<T>, Promise<T> {
|
||||
class SucceededFuture<T> implements Future<T> {
|
||||
|
||||
private final T result;
|
||||
|
||||
@@ -47,46 +47,6 @@ class SucceededFuture<T> implements Future<T>, Promise<T> {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete(T result) {
|
||||
throw new IllegalStateException("Result is already complete: succeeded");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
throw new IllegalStateException("Result is already complete: succeeded");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(Throwable cause) {
|
||||
throw new IllegalStateException("Result is already complete: succeeded");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fail(String failureMessage) {
|
||||
throw new IllegalStateException("Result is already complete: succeeded");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryComplete(T result) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryComplete() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryFail(Throwable cause) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tryFail(String failureMessage) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T result() {
|
||||
return result;
|
||||
@@ -107,16 +67,6 @@ class SucceededFuture<T> implements Future<T>, Promise<T> {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(AsyncResult<T> asyncResult) {
|
||||
throw new IllegalStateException("Result is already complete: succeeded");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Future<T> future() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Future{result=" + result + "}";
|
||||
|
||||
@@ -21,14 +21,6 @@ public interface FutureFactory {
|
||||
|
||||
<T> Promise<T> promise();
|
||||
|
||||
<T> Promise<T> succeededPromise();
|
||||
|
||||
<T> Promise<T> succeededPromise(T result);
|
||||
|
||||
<T> Promise<T> failedPromise(Throwable t);
|
||||
|
||||
<T> Promise<T> failurePromise(String failureMessage);
|
||||
|
||||
<T> Future<T> future();
|
||||
|
||||
<T> Future<T> succeededFuture();
|
||||
|
||||
@@ -89,37 +89,6 @@ public class FutureTest extends VertxTestBase {
|
||||
assertEquals(cause, future.cause());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetResultOnCompletedPromise() {
|
||||
ArrayList<Promise<Object>> promises = new ArrayList<>();
|
||||
promises.add(Promise.succeededPromise());
|
||||
promises.add(Promise.succeededPromise());
|
||||
promises.add(Promise.succeededPromise(new Object()));
|
||||
promises.add(Promise.succeededPromise(new Object()));
|
||||
promises.add(Promise.failedPromise(new Exception()));
|
||||
promises.add(Promise.failedPromise(new Exception()));
|
||||
for (Promise<Object> promise : promises) {
|
||||
try {
|
||||
promise.complete(new Object());
|
||||
fail();
|
||||
} catch (IllegalStateException ignore) {
|
||||
}
|
||||
assertFalse(promise.tryComplete(new Object()));
|
||||
try {
|
||||
promise.complete(null);
|
||||
fail();
|
||||
} catch (IllegalStateException ignore) {
|
||||
}
|
||||
assertFalse(promise.tryComplete(null));
|
||||
try {
|
||||
promise.fail(new Exception());
|
||||
fail();
|
||||
} catch (IllegalStateException ignore) {
|
||||
}
|
||||
assertFalse(promise.tryFail(new Exception()));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCallSetHandlerBeforeCompletion() {
|
||||
AtomicBoolean called = new AtomicBoolean();
|
||||
|
||||
Reference in New Issue
Block a user