@Override public void start() throws Exception { context.exceptionHandler(err -> { fail("Unexpected exception"); }); consumer = eb.<String>consumer(ADDRESS1).handler(msg -> {}); } }, onSuccess(deploymentID -> {
@Test public void testContextExceptionHandlerFailing() { RuntimeException failure = new RuntimeException(); Context context = vertx.getOrCreateContext(); AtomicInteger count = new AtomicInteger(); context.exceptionHandler(err -> { if (count.getAndIncrement() == 0) { throw new RuntimeException(); } else { assertSame(failure, err); testComplete(); } }); context.runOnContext(v -> { throw new RuntimeException(); }); context.runOnContext(v -> { throw failure; }); await(); }
@Test public void testExceptionHandlerOnDeploymentAsyncResultHandlerFailure() { RuntimeException failure = new RuntimeException(); Context ctx = vertx.getOrCreateContext(); ctx.exceptionHandler(err -> { assertSame(failure, err); testComplete(); }); ctx.runOnContext(v -> { vertx.deployVerticle(new AbstractVerticle() { @Override public void start() throws Exception { } }, ar -> { throw failure; }); }); await(); }
@Test public void testExceptionHandlerOnAsyncDeploymentAsyncResultHandlerFailure() { RuntimeException failure = new RuntimeException(); Context ctx = vertx.getOrCreateContext(); ctx.exceptionHandler(err -> { assertSame(failure, err); testComplete(); }); ctx.runOnContext(v -> { vertx.deployVerticle(new AbstractVerticle() { @Override public void start(Future<Void> startFuture) throws Exception { context.runOnContext(startFuture::complete); } }, ar -> { throw failure; }); }); await(); }
@Test public void testContextExceptionHandler() { RuntimeException failure = new RuntimeException(); Context context = vertx.getOrCreateContext(); context.exceptionHandler(err -> { assertSame(context, Vertx.currentContext()); assertSame(failure, err); testComplete(); }); context.runOnContext(v -> { throw failure; }); await(); }
@Override public void start() throws Exception { context.exceptionHandler(err -> { fail("Unexpected exception"); }); consumer = eb.<String>consumer(ADDRESS1).handler(msg -> {}); } }, onSuccess(deploymentID -> {
@Test public void testContextExceptionHandlerFailing() { RuntimeException failure = new RuntimeException(); Context context = vertx.getOrCreateContext(); AtomicInteger count = new AtomicInteger(); context.exceptionHandler(err -> { if (count.getAndIncrement() == 0) { throw new RuntimeException(); } else { assertSame(failure, err); testComplete(); } }); context.runOnContext(v -> { throw new RuntimeException(); }); context.runOnContext(v -> { throw failure; }); await(); }
/** * Set an exception handler called when the context runs an action throwing an uncaught throwable.<p/> * * When this handler is called, {@link io.vertx.rxjava.core.Vertx#currentContext} will return this context. * @param handler the exception handler * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.Context exceptionHandler(Handler<Throwable> handler) { delegate.exceptionHandler(handler); return this; }
/** * Set an exception handler called when the context runs an action throwing an uncaught throwable.<p/> * * When this handler is called, {@link io.vertx.rxjava.core.Vertx#currentContext} will return this context. * @param handler the exception handler * @return a reference to this, so the API can be used fluently */ public io.vertx.rxjava.core.Context exceptionHandler(Handler<Throwable> handler) { delegate.exceptionHandler(handler); return this; }
@Test public void testExceptionHandlerOnAsyncDeploymentAsyncResultHandlerFailure() { RuntimeException failure = new RuntimeException(); Context ctx = vertx.getOrCreateContext(); ctx.exceptionHandler(err -> { assertSame(failure, err); testComplete(); }); ctx.runOnContext(v -> { vertx.deployVerticle(new AbstractVerticle() { @Override public void start(Future<Void> startFuture) throws Exception { context.runOnContext(startFuture::complete); } }, ar -> { throw failure; }); }); await(); }
@Test public void testExceptionHandlerOnDeploymentAsyncResultHandlerFailure() { RuntimeException failure = new RuntimeException(); Context ctx = vertx.getOrCreateContext(); ctx.exceptionHandler(err -> { assertSame(failure, err); testComplete(); }); ctx.runOnContext(v -> { vertx.deployVerticle(new AbstractVerticle() { @Override public void start() throws Exception { } }, ar -> { throw failure; }); }); await(); }
@Test public void testContextExceptionHandler() { RuntimeException failure = new RuntimeException(); Context context = vertx.getOrCreateContext(); context.exceptionHandler(err -> { assertSame(context, Vertx.currentContext()); assertSame(failure, err); testComplete(); }); context.runOnContext(v -> { throw failure; }); await(); }
@Override public void reportFailure(Throwable cause) { Handler<Throwable> exceptionHandler = context.exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(cause); } }
static <T> void connectCompletableFutureWithHandler(CompletableFuture<T> future, Vertx vertx, Handler<AsyncResult<T>> handler) { future.whenCompleteAsync((result, error) -> { if (error != null) { handler.handle(Future.failedFuture(error)); } else { handler.handle(Future.succeededFuture(result)); } }, vertxToExecutor(vertx)) .exceptionally(error -> { Handler<Throwable> exceptionHandler = vertx.getOrCreateContext().exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(error); } return null; }); }
static <T> void connectCompletableFutureWithHandler(CompletableFuture<T> future, Vertx vertx, Handler<AsyncResult<T>> handler) { future.whenCompleteAsync((result, error) -> { if (error != null) { handler.handle(Future.failedFuture(error)); } else { handler.handle(Future.succeededFuture(result)); } }, vertxToExecutor(vertx)) .exceptionally(error -> { Handler<Throwable> exceptionHandler = vertx.getOrCreateContext().exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(error); } return null; }); }
static <T> void connectCompletableFutureWithVoidHandler(CompletableFuture<T> future, Vertx vertx, Handler<AsyncResult<Void>> handler) { future.whenCompleteAsync((ignored, error) -> { if (error != null) { handler.handle(Future.failedFuture(error)); } else { handler.handle(Future.succeededFuture()); } }, vertxToExecutor(vertx)) .exceptionally(error -> { Handler<Throwable> exceptionHandler = vertx.getOrCreateContext().exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(error); } return null; }); }
static <T> void connectCompletableFutureWithVoidHandler(CompletableFuture<T> future, Vertx vertx, Handler<AsyncResult<Void>> handler) { future.whenCompleteAsync((ignored, error) -> { if (error != null) { handler.handle(Future.failedFuture(error)); } else { handler.handle(Future.succeededFuture()); } }, vertxToExecutor(vertx)) .exceptionally(error -> { Handler<Throwable> exceptionHandler = vertx.getOrCreateContext().exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(error); } return null; }); }
static <T> Future<T> completableFutureToVertx(CompletableFuture<T> future, Vertx vertx) { Future<T> fut = Future.future(); future.whenCompleteAsync((result, error) -> { if (error != null) { fut.fail(error); } else { fut.complete(result); } }, vertxToExecutor(vertx)) .exceptionally(error -> { Handler<Throwable> exceptionHandler = vertx.getOrCreateContext().exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(error); } return null; }); return fut; }
static <T> Future<Void> completableFutureToVertxVoid(CompletableFuture<T> future, Vertx vertx) { Future<Void> fut = Future.future(); future.whenCompleteAsync((ignored, error) -> { if (error != null) { fut.fail(error); } else { fut.complete(); } }, vertxToExecutor(vertx)) .exceptionally(error -> { Handler<Throwable> exceptionHandler = vertx.getOrCreateContext().exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(error); } return null; }); return fut; }
static <T> Future<Void> completableFutureToVertxVoid(CompletableFuture<T> future, Vertx vertx) { Future<Void> fut = Future.future(); future.whenCompleteAsync((ignored, error) -> { if (error != null) { fut.fail(error); } else { fut.complete(); } }, vertxToExecutor(vertx)) .exceptionally(error -> { Handler<Throwable> exceptionHandler = vertx.getOrCreateContext().exceptionHandler(); if (exceptionHandler != null) { exceptionHandler.handle(error); } return null; }); return fut; }