private <T> IAsyncFuture<T> passthrough(IAsyncResultHandler<T> resultHandler) { return IAsyncFuture.<T>create().setActionHandler(resultHandler::handle); } }
@Override public <T> void executeBlocking(IAsyncHandler<IAsyncFuture<T>> blockingCode, IAsyncResultHandler<T> resultHandler) { IAsyncFuture<T> wrapped = passthrough(resultHandler); try { blockingCode.handle(wrapped); } catch (Exception e) { wrapped.fail(e); } }
@Test public void testSuccessfulExecution(TestContext context) { Async async = context.async(); executeBlockingComponent.executeBlocking(future -> { future.completed("The Farquhar Islands"); }, result -> { context.assertTrue(result.isSuccess()); context.assertFalse(result.isError()); context.assertEquals(result.getResult(), "The Farquhar Islands"); context.assertNull(result.getError()); async.complete(); }); }
@Override public <T> void executeBlocking(IAsyncHandler<IAsyncFuture<T>> blockingCode, IAsyncResultHandler<T> resultHandler) { IAsyncFuture<T> wrapped = passthrough(resultHandler); try { blockingCode.handle(wrapped); } catch (Exception e) { wrapped.fail(e); } }
private <T> IAsyncFuture<T> passthrough(IAsyncResultHandler<T> resultHandler) { return IAsyncFuture.<T>create().setActionHandler(resultHandler::handle); } }
@Test public void testFailedExecution(TestContext context) { Async async = context.async(); executeBlockingComponent.executeBlocking(future -> { future.fail(new ExampleException("Silhoutte")); }, result -> { context.assertFalse(result.isSuccess()); context.assertTrue(result.isError()); context.assertTrue(result.getError() instanceof ExampleException); context.assertEquals(result.getError().getMessage(), "Silhoutte"); context.assertNull(result.getResult()); async.complete(); }); }
private <T> IAsyncFuture<T> wrapFuture(Future<T> future) { return IAsyncFuture.<T>create().setActionHandler(action -> { if (action.isSuccess()) { future.complete(action.getResult()); } else { future.fail(action.getError()); } }); } }