diff --git a/src/main/java/io/vertx/core/impl/VertxImpl.java b/src/main/java/io/vertx/core/impl/VertxImpl.java index 135d5a202..e42fe3642 100644 --- a/src/main/java/io/vertx/core/impl/VertxImpl.java +++ b/src/main/java/io/vertx/core/impl/VertxImpl.java @@ -352,6 +352,23 @@ public class VertxImpl implements VertxInternal, MetricsProvider { return new TimeoutStreamImpl(delay, false); } + @Override + public PromiseInternal promise() { + ContextInternal context = getOrCreateContext(); + return context.promise(); + } + + @Override + public PromiseInternal promise(Handler> handler) { + if (handler instanceof PromiseInternal) { + return (PromiseInternal) handler; + } else { + PromiseInternal promise = promise(); + promise.future().setHandler(handler); + return promise; + } + } + public void runOnContext(Handler task) { ContextInternal context = getOrCreateContext(); context.runOnContext(task); diff --git a/src/main/java/io/vertx/core/impl/VertxInternal.java b/src/main/java/io/vertx/core/impl/VertxInternal.java index 28e99cc8b..788b13b8f 100644 --- a/src/main/java/io/vertx/core/impl/VertxInternal.java +++ b/src/main/java/io/vertx/core/impl/VertxInternal.java @@ -39,6 +39,13 @@ import java.util.concurrent.TimeUnit; */ public interface VertxInternal extends Vertx { + /** + * @return a promise associated with the context returned by {@link #getOrCreateContext()}. + */ + PromiseInternal promise(); + + PromiseInternal promise(Handler> handler); + long maxEventLoopExecTime(); TimeUnit maxEventLoopExecTimeUnit();