@Test public void testRecoverFailureWithSuccess() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.fail("recovered"); checker.assertSucceeded("recovered"); }
@Test public void testRecoverFailureWithFailure() { Throwable cause = new Throwable(); Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.failedFuture(cause)); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.fail("recovered"); checker.assertFailed(cause); }
@Test public void testRecoverFailureFails() { RuntimeException cause = new RuntimeException("throw"); Future<String> f = Future.future(); Future<String> r = f.recover(t -> { throw cause; }); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.fail("recovered"); checker.assertFailed(cause); }
@Test public void testFailedFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); f.fail("recovered"); assertTrue(r.succeeded()); assertEquals(r.result(), "recovered"); }
@Test public void testFailedMapperFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> { throw new RuntimeException("throw"); }); f.fail("recovered"); assertTrue(r.failed()); assertEquals(r.cause().getMessage(), "throw"); }
@Test public void testRecoverWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.recover(null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testSucceededFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); f.complete("yeah"); assertTrue(r.succeeded()); assertEquals(r.result(), "yeah"); }
@Test public void testRecoverSuccessWithSuccess() { AtomicBoolean called = new AtomicBoolean(); Future<String> f = Future.future(); Future<String> r = f.recover(t -> { called.set(true); throw new AssertionError(); }); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.complete("yeah"); assertTrue(r.succeeded()); checker.assertSucceeded("yeah"); assertFalse(called.get()); }
@Test public void testRecoverFailureWithSuccess() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.fail("recovered"); checker.assertSucceeded("recovered"); }
@Test public void testRecoverFailureWithFailure() { Throwable cause = new Throwable(); Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.failedFuture(cause)); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.fail("recovered"); checker.assertFailed(cause); }
@Test public void testFailedMapperFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> { throw new RuntimeException("throw"); }); f.fail("recovered"); assertTrue(r.failed()); assertEquals(r.cause().getMessage(), "throw"); }
@Test public void testRecoverFailureFails() { RuntimeException cause = new RuntimeException("throw"); Future<String> f = Future.future(); Future<String> r = f.recover(t -> { throw cause; }); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.fail("recovered"); checker.assertFailed(cause); }
@Test public void testSucceededFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); f.complete("yeah"); assertTrue(r.succeeded()); assertEquals(r.result(), "yeah"); }
@Test public void testFailedFutureRecover() { Future<String> f = Future.future(); Future<String> r = f.recover(t -> Future.succeededFuture(t.getMessage())); f.fail("recovered"); assertTrue(r.succeeded()); assertEquals(r.result(), "recovered"); }
@Test public void testRecoverWithNullFunction() { Future<Integer> fut = Future.future(); try { fut.recover(null); fail(); } catch (NullPointerException ignore) { } }
@Test public void testRecoverSuccessWithSuccess() { AtomicBoolean called = new AtomicBoolean(); Future<String> f = Future.future(); Future<String> r = f.recover(t -> { called.set(true); throw new AssertionError(); }); Checker<String> checker = new Checker<>(r); checker.assertNotCompleted(); f.complete("yeah"); assertTrue(r.succeeded()); checker.assertSucceeded("yeah"); assertFalse(called.get()); }
/** * {@inheritDoc} */ @Override protected Future<Void> onPublishedMessage(final MqttContext ctx) { return mapTopic(ctx) .recover(t -> { LOG.debug("discarding message [topic: {}] from device: {}", ctx.message().topicName(), t.getMessage()); return Future.failedFuture(t); }).compose(targetAddress -> uploadMessage(ctx, targetAddress, ctx.message())); }
/** * {@inheritDoc} */ @Override protected Future<Void> onPublishedMessage(final MqttContext ctx) { return mapTopic(ctx) .recover(t -> { LOG.debug("discarding message [topic: {}] from device: {}", ctx.message().topicName(), t.getMessage()); return Future.failedFuture(t); }).compose(targetAddress -> uploadMessage(ctx, targetAddress, ctx.message())); }
Future<Void> loadTenantData() { if (getConfig().getFilename() == null) { return Future.succeededFuture(); } else { final Future<Buffer> readResult = Future.future(); vertx.fileSystem().readFile(getConfig().getFilename(), readResult.completer()); return readResult.compose(buffer -> { return addAll(buffer); }).recover(t -> { log.debug("cannot load tenants from file [{}]: {}", getConfig().getFilename(), t.getMessage()); return Future.succeededFuture(); }); } }
Future<Void> loadRegistrationData() { if (getConfig().getFilename() == null) { return Future.succeededFuture(); } else { final Future<Buffer> readResult = Future.future(); vertx.fileSystem().readFile(getConfig().getFilename(), readResult.completer()); return readResult.compose(buffer -> { return addAll(buffer); }).recover(t -> { log.debug("cannot load device identities from file [{}]: {}", getConfig().getFilename(), t.getMessage()); return Future.succeededFuture(); }); } }