List of usage examples for io.vertx.core CompositeFuture all
static CompositeFuture all(List<Future> futures)
When the list is empty, the returned future will be already completed.
From source file:com.chibchasoft.vertx.verticle.deployment.DependentVerticleDeployer.java
License:Open Source License
/** * Gets a composite future using a future for each verticle to be deployed. This composite * future is successful if all verticles deployed and fails if any verticle fails to deploy. * @return The composite future/*w w w . j a v a 2 s . co m*/ */ private CompositeFuture getCompositeFuture() { List<Future<String>> futures = new ArrayList<>(); dependentsDeployment.getConfigurations().forEach(cfg -> futures.addAll(getFutures(cfg))); return CompositeFuture.all(new ArrayList<>(futures)); }
From source file:examples.CoreExamples.java
License:Open Source License
public void exampleFutureAll2(Future future1, Future future2, Future future3) { CompositeFuture.all(Arrays.asList(future1, future2, future3)); }
From source file:io.apiman.gateway.engine.vertx.shareddata.SharedGlobalDataRegistry.java
License:Apache License
@SuppressWarnings("rawtypes") // CompositeFuture.all(list) requires raw futures. @Override/*from w ww. ja v a 2 s .co m*/ public void registerClient(Client client, IAsyncResultHandler<Void> resultHandler) { List<Future> futures = new ArrayList<>(client.getContracts().size()); List<Contract> contracts = new ArrayList<>(client.getContracts()); String clientIndex = getClientIndex(client); // Future for each contract and execute get. for (Contract contract : contracts) { Future future = Future.future(); futures.add(future); String apiIndex = getApiIndex(contract.getApiOrgId(), contract.getApiId(), contract.getApiVersion()); objectMap.get(apiIndex, future.completer()); } CompositeFuture.all(futures).setHandler(compositeResult -> { if (compositeResult.succeeded()) { // If any contract didn't correspond to a stored API. Contract failedContract = null; for (int i = 0; i < futures.size(); i++) { if (futures.get(i).result() == null) { failedContract = contracts.get(0); break; } } // If we found an invalid contract. if (failedContract != null) { Exception ex = new RegistrationException( Messages.i18n.format("InMemoryRegistry.ApiNotFoundInOrg", failedContract.getApiId(), failedContract.getApiOrgId())); resultHandler.handle(AsyncResultImpl.create(ex)); } else { Future<Object> putNewApiKeyFuture = Future.future(); Future<Object> endFuture = Future.future(); // Order: Create new API Key reference; Replace old ID -> API mapping; Delete old key reference) // This should ensure no breaking/irreconcilable behaviour. objectMap.putIfAbsent(client.getApiKey(), client, putNewApiKeyFuture.completer()); // Replace API Key reference putNewApiKeyFuture.compose(clientWithSameApiKey -> { Future<Object> replaceClientFuture = Future.future(); // There's a small chance the same key will replace the old one, usually // only in hard-coded tests. Generally sameKeyReplace will be null. if (clientWithSameApiKey != null) { //System.err.println("!!!!! Same API Key -- Replacing. Must not delete later. !!!!!!"); objectMap.replace(client.getApiKey(), client, replaceClientFuture.completer()); } else { objectMap.putIfAbsent(clientIndex, client, replaceClientFuture.completer()); } return replaceClientFuture; // Remove old API key reference }).compose(oldClientRaw -> { Client oldClient = (Client) oldClientRaw; if (oldClientRaw != null && !oldClient.getApiKey().equals(client.getApiKey())) { objectMap.remove(oldClient.getApiKey(), endFuture.completer()); } else { endFuture.complete(); } }, endFuture) // When finished, call this handler and then resultHandler .setHandler(handleResult(resultHandler)); } } else { resultHandler.handle(AsyncResultImpl.create(compositeResult.cause())); } }); }
From source file:io.apiman.gateway.platforms.vertx3.verticles.InitVerticle.java
License:Apache License
@Override public void start(Future<Void> start) { super.start(start); base = new DeploymentOptions().setConfig(config()); @SuppressWarnings({ "rawtypes" }) // CompositeFuture doesn't accept generic type List<Future> deployList = new ArrayList<>(); deploy(ApiVerticle.class.getCanonicalName(), ApiVerticle.VERTICLE_TYPE, deployList); deploy(HttpGatewayVerticle.class.getCanonicalName(), HttpGatewayVerticle.VERTICLE_TYPE, deployList); deploy(HttpsGatewayVerticle.class.getCanonicalName(), HttpsGatewayVerticle.VERTICLE_TYPE, deployList); CompositeFuture.all(deployList).setHandler(compositeResult -> { if (compositeResult.failed()) { compositeResult.cause().printStackTrace(); log.fatal("Failed to deploy verticles: " + compositeResult.cause().getMessage()); //$NON-NLS-1$ start.fail(compositeResult.cause()); } else {/*ww w. j a v a2 s . com*/ log.info("Successfully deployed all verticles"); //$NON-NLS-1$ start.complete(); } }); }
From source file:io.engagingspaces.graphql.servicediscovery.publisher.SchemaPublisher.java
License:Open Source License
/** * Publishes the provided schema definitions to the specified service discovery. * <p>/*from ww w . j ava 2 s . c om*/ * Upon success a list of {@link SchemaRegistration}s is returned in the result handler. * * @param options the service discovery options * @param resultHandler the result handler * @param schemas the GraphQL schema's to publish */ default void publishAll(ServiceDiscoveryOptions options, Handler<AsyncResult<List<SchemaRegistration>>> resultHandler, GraphQLSchema... schemas) { Objects.requireNonNull(resultHandler, "Publication result handler cannot be null"); if (schemas == null || schemas.length == 0) { resultHandler.handle(Future.failedFuture("Nothing to publish. No schema definitions provided")); return; } List<Future> futures = new ArrayList<>(); Arrays.asList(schemas).forEach(schema -> publish(options, schema, rh -> futures .add(rh.succeeded() ? Future.succeededFuture(rh.result()) : Future.failedFuture(rh.cause())))); CompositeFuture.all(futures).setHandler(rh -> { if (rh.failed()) { resultHandler.handle(Future.failedFuture(rh.cause())); return; } CompositeFuture composite = rh.result(); List<SchemaRegistration> published = composite.list(); if (published.size() != schemas.length) { List<Throwable> errors = rh.result().<Future<Void>>list().stream().filter(Future::failed) .map(Future::cause).collect(Collectors.toList()); resultHandler.handle(Future.failedFuture(new PartialPublishException(errors))); } else { resultHandler.handle(Future.succeededFuture(published)); } }); }
From source file:io.engagingspaces.graphql.servicediscovery.publisher.SchemaRegistrar.java
License:Open Source License
private void handleCloseCompletion(Handler<AsyncResult<Void>> closeHandler, List<Future> futures) { CompositeFuture.all(futures).setHandler(rh -> { if (rh.succeeded()) { CompositeFuture composite = rh.result(); for (int index = 0; index < composite.size(); index++) { if (composite.succeeded(index) && composite.resultAt(index) != null) { composite.<SchemaRegistration>resultAt(index).unregisterServiceProxy(); }// w w w . j a v a 2 s .co m } doClose(closeHandler); } else { closeHandler.handle(Future.failedFuture(rh.cause())); } }); }
From source file:org.dfr.dfr.Main.java
@Override public void start(Future<Void> start) { HttpServer server = vertx.createHttpServer(); Future<String> dm1 = Future.future(); vertx.deployVerticle("org.dfr.dfr.worker.MemberWorker", new DeploymentOptions().setWorkerPoolSize(10), dm1.completer());//ww w . j av a2 s .c o m Future<HttpServer> depoyServerOK = Future.future(); Router router = Router.router(vertx); StaticHandler staticH = StaticHandler.create(); staticH.setWebRoot("templates"); router.get("/*").handler(staticH); /** * Async block */ router.post("/member/register").handler(h -> { h.request().bodyHandler(bH -> { vertx.eventBus().send("MemberWorker#Register", bH.toString(), new DeliveryOptions().setSendTimeout(3000), evt -> { if (evt.failed()) { h.response().setStatusCode(408).end(); } else { h.response().end(evt.result().body().toString()); } }); }); }); /** * Async block */ router.post("/member/profileupdate").handler(h -> { h.request().bodyHandler(bH -> { vertx.eventBus().send("MemberWorker#ProfileUpdate", bH.toString(), new DeliveryOptions().setSendTimeout(3000), evt -> { if (evt.failed()) { h.response().setStatusCode(408).end(); } else { h.response().end(evt.result().body().toString()); } }); }); }); /** * Async block */ router.post("/member/getprofile").handler(h -> { h.request().bodyHandler(bH -> { vertx.eventBus().send("MemberWorker#GetProfile", bH.toString(), new DeliveryOptions().setSendTimeout(3000), evt -> { if (evt.failed()) { h.response().setStatusCode(408).end(); } else { h.response().end(evt.result().body().toString()); } }); }); }); /** * Async block */ router.post("/member/changepassword").handler(h -> { h.request().bodyHandler(bH -> { vertx.eventBus().send("MemberWorker#ChangePassword", bH.toString(), new DeliveryOptions().setSendTimeout(3000), evt -> { if (evt.failed()) { h.response().setStatusCode(408).end(); } else { h.response().end(evt.result().body().toString()); } }); }); }); /** * Async block */ router.post("/member/asset/addasset").handler(h -> { h.request().bodyHandler(bH -> { vertx.eventBus().send("MembrWorker#AddAsset", bH.toString(), new DeliveryOptions().setSendTimeout(3000), evt -> { if (evt.failed()) { h.response().setStatusCode(408).end(); } else { h.response().end(evt.result().body().toString()); } }); }); }); router.post("/member/asset/getasset").handler(h -> { h.request().bodyHandler(bH -> { vertx.eventBus().send("AssetWorker#GetAsset", bH.toString(), new DeliveryOptions().setSendTimeout(3000), evt -> { if (evt.failed()) { h.response().setStatusCode(408).end(); } else { h.response().end(evt.result().body().toString()); } }); }); }); router.post("/member/asset/updateasset").handler(h -> { h.request().bodyHandler(bH -> { vertx.eventBus().send("AssetWorker#UpdateAsset", bH.toString(), new DeliveryOptions().setSendTimeout(3000), evt -> { if (evt.failed()) { h.response().setStatusCode(408).end(); } else { h.response().end(evt.result().body().toString()); } }); }); }); server.requestHandler(router::accept); Integer port = Integer.getInteger("http.port"); String host = System.getProperty("http.address"); log.info("port " + port); log.info("host " + host); if (port == null) { port = 8090; } if (host == null) { host = "127.0.0.1"; } server.listen(port, host, depoyServerOK.completer()); CompositeFuture.all(Arrays.asList(depoyServerOK, dm1)).setHandler(h -> { if (h.succeeded()) { start.complete(); log.info("server start ok"); } else { start.fail(h.cause()); log.info("fail to deploy : " + h.cause().getMessage()); } }); }
From source file:org.eclipse.hono.adapter.VertxBasedAdapterApplication.java
License:Open Source License
private void deployVerticle(final int instanceCount, final Future<Void> resultHandler) { LOG.debug("starting up {} instances of '{}' adapter verticle", instanceCount, this.getName()); @SuppressWarnings("rawtypes") List<Future> results = new ArrayList<>(); for (int i = 1; i <= instanceCount; i++) { final int instanceId = i; final Future<String> result = Future.future(); results.add(result);/* w ww . jav a 2 s. co m*/ vertx.deployVerticle(this.getAdapter(), d -> { if (d.succeeded()) { LOG.debug("verticle instance {} deployed", instanceId); result.complete(); } else { LOG.debug("failed to deploy verticle instance {}", instanceId, d.cause()); result.fail(d.cause()); } }); } CompositeFuture.all(results).setHandler(done -> { if (done.succeeded()) { resultHandler.complete(); } else { resultHandler.fail(done.cause()); } }); }
From source file:org.eclipse.hono.application.HonoApplication.java
License:Open Source License
private void deployServer(final HonoServer firstInstance, final int instanceCount, Future<Void> startFuture) { @SuppressWarnings("rawtypes") List<Future> results = new ArrayList<>(); deployServerInstance(firstInstance, results); for (int i = 1; i < instanceCount; i++) { HonoServer server = serverFactory.getHonoServer(); deployServerInstance(server, results); }/*from w w w . j av a 2s . c o m*/ CompositeFuture.all(results).setHandler(ar -> { if (ar.failed()) { startFuture.fail(ar.cause()); } else { startFuture.complete(); } }); }
From source file:org.eclipse.hono.service.AbstractApplication.java
License:Open Source License
private CompositeFuture deployServiceVerticles() { final int maxInstances = config.getMaxInstances(); @SuppressWarnings("rawtypes") final List<Future> deploymentTracker = new ArrayList<>(); for (ObjectFactory<? extends AbstractServiceBase<?>> serviceFactory : serviceFactories) { AbstractServiceBase<?> serviceInstance = serviceFactory.getObject(); healthCheckServer.registerHealthCheckResources(serviceInstance); final Future<String> deployTracker = Future.future(); vertx.deployVerticle(serviceInstance, deployTracker.completer()); deploymentTracker.add(deployTracker); for (int i = 1; i < maxInstances; i++) { // first instance has already been deployed serviceInstance = serviceFactory.getObject(); log.debug("created new instance of service: {}", serviceInstance); final Future<String> tracker = Future.future(); vertx.deployVerticle(serviceInstance, tracker.completer()); deploymentTracker.add(tracker); }/*from ww w. ja va 2 s . c om*/ } return CompositeFuture.all(deploymentTracker); }