List of usage examples for com.google.common.util.concurrent Futures addCallback
public static <V> void addCallback(ListenableFuture<V> future, FutureCallback<? super V> callback)
From source file:io.druid.client.RoutingDruidClient.java
public ListenableFuture<FinalType> postQuery(URI uri, Query query, HttpResponseHandler<IntermediateType, FinalType> responseHandler) { final ListenableFuture<FinalType> future; try {// w ww .j ava 2 s . co m log.debug("Querying url[%s]", uri); future = httpClient.post(uri.toURL()).setContent(objectMapper.writeValueAsBytes(query)) .setHeader(HttpHeaders.Names.CONTENT_TYPE, isSmile ? QueryResource.APPLICATION_SMILE : QueryResource.APPLICATION_JSON) .go(responseHandler); openConnections.getAndIncrement(); Futures.addCallback(future, new FutureCallback<FinalType>() { @Override public void onSuccess(FinalType result) { openConnections.getAndDecrement(); } @Override public void onFailure(Throwable t) { openConnections.getAndDecrement(); } }); } catch (IOException e) { throw Throwables.propagate(e); } return future; }
From source file:es.udc.pfc.gameroom.GameComponent.java
public final ListenableFuture<Room> newRoom(final String type) { final SettableFuture<Room> future = SettableFuture.create(); Futures.addCallback(getUniqueRoomName(), new FutureCallback<String>() { @Override/*from www .j a v a 2s. co m*/ public void onSuccess(String roomID) { if (roomID == null) { log.severe("Error requesting unique room name"); future.setException(new Exception("Error requesting unique room name")); return; } final Room newRoom; if (type.equals("minichess")) { newRoom = new MiniChessRoom(GameComponent.this, JID.jid(getMUCServiceName(), roomID, null)); } else { log.severe("Unknown game type " + type); future.setException(new Exception("Unknown game type " + type)); return; } rooms.put(roomID, newRoom); newRoom.joinRoom(); newRoom.configureRoom(); future.set(newRoom); } @Override public void onFailure(Throwable t) { future.setException(t); } }); return future; }
From source file:demos.AsynchronousInsert.java
@Override public void run() { try {/*from www. ja va 2 s .c o m*/ logger.info("Preparing to insert metric data points"); Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build(); Session session = cluster.connect("demo"); PreparedStatement insert = session .prepare("insert into metric_data (metric_id, time, value) values (?, ?, ?)"); Random random = new Random(); DateTime time = DateTime.now().minusYears(1); final CountDownLatch latch = new CountDownLatch(NUM_INSERTS); FutureCallback<ResultSet> callback = new FutureCallback<ResultSet>() { @Override public void onSuccess(ResultSet result) { latch.countDown(); } @Override public void onFailure(Throwable t) { logger.warn("There was an error inserting data", t); latch.countDown(); } }; Stopwatch stopwatch = new Stopwatch().start(); for (int i = 0; i < NUM_INSERTS; ++i) { String metricId = "metric-" + Math.abs(random.nextInt() % NUM_METRICS); double value = random.nextDouble(); ResultSetFuture future = session.executeAsync(insert.bind(metricId, time.toDate(), value)); time = time.plusSeconds(10); Futures.addCallback(future, callback); } latch.await(); stopwatch.stop(); logger.info("Finished inserting {} data points in {} ms", NUM_INSERTS, stopwatch.elapsed(TimeUnit.MILLISECONDS)); } catch (InterruptedException e) { logger.info("There was an interrupt while waiting for inserts to complete"); } }
From source file:org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.MonitoringToMdsalWriter.java
@Override public void onStateChanged(final NetconfState state) { Preconditions.checkState(dataBroker != null); final WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(NetconfState.class), state); // FIXME first attempt (right after we register to binding broker) always fails // Is it due to the fact that we are writing from the onSessionInitiated callback ? final CheckedFuture<Void, TransactionCommitFailedException> submit = tx.submit(); Futures.addCallback(submit, new FutureCallback<Void>() { @Override/* w w w. j a v a 2s . c o m*/ public void onSuccess(final Void aVoid) { LOG.debug("Netconf state updated successfully"); } @Override public void onFailure(final Throwable throwable) { LOG.warn("Unable to update netconf state", throwable); } }); }
From source file:org.hawkular.metrics.api.jaxrs.handler.CounterHandler.java
@POST @Path("/{group}") @ApiOperation(value = "Update multiple counters in a single counter group", hidden = true) public void updateCounterForGroup(@Suspended final AsyncResponse asyncResponse, @PathParam("group") String group, Collection<Counter> counters) { for (Counter counter : counters) { counter.setGroup(group);/*from w w w. j a v a2 s .c o m*/ } ListenableFuture<Void> future = metricsService.updateCounters(counters); Futures.addCallback(future, new NoDataCallback<>(asyncResponse)); }
From source file:io.crate.executor.transport.kill.TransportKillNodeAction.java
@Override public void nodeOperation(Request request, final ActionListener<KillResponse> listener) { Futures.addCallback(doKill(request), new FutureCallback<Integer>() { @Override/*from w w w . j ava2 s. co m*/ public void onSuccess(@Nullable Integer result) { assert result != null; listener.onResponse(new KillResponse(result)); } @Override public void onFailure(@Nonnull Throwable t) { listener.onFailure(t); } }); }
From source file:es.udc.pfc.xmpp.component.AbstractXMPPComponent.java
@Override public final void receivedIQ(final IQ iq) { checkNotNull(iq);/*from ww w .ja v a 2 s .c o m*/ log.finest("Received iq: " + iq.toString()); if (iq.isRequest()) { Futures.addCallback(handleIQ(iq), new FutureCallback<IQ>() { @Override public void onSuccess(IQ result) { send(result); } @Override public void onFailure(Throwable t) { // TODO: send an error } }); } else if (iq.isResponse()) { final SettableFuture<IQ> future = futureHandlers.remove(iq.getId()); if (future == null) { log.warning("No handler for ID " + iq.getId()); return; } if (iq.getType() == IQ.Type.result) { future.set(iq); } else if (iq.getType() == IQ.Type.error) { future.setException(new Exception("Error IQ: " + iq.toString())); } } else { log.warning("IQ not request or response"); } }
From source file:fr.duminy.components.swing.listpanel.JListComponentWrapper.java
@Override public void updateItem(final int i) { if (isValidIndex(i, true, true)) { final B oldItem = model.getElementAt(i); final ListenableFuture<B> futureNewItem = itemManager.updateItem(oldItem); Futures.addCallback(futureNewItem, new FutureCallback<B>() { @Override/*ww w . jav a 2 s . c om*/ public void onSuccess(B newItem) { if (oldItem == newItem) { //TODO also give a user feedback throw new IllegalStateException( "The element returned by " + itemManager.getClass().getName() + ".updateItem(oldItem) must not be the same instance as oldItem"); } model.set(i, newItem); } @Override public void onFailure(Throwable t) { if (t instanceof CancellationException) { LOG.info("the user has cancelled the update of an item"); } else { //TODO give a user feedback LOG.error("Can't update the item {} : {}", oldItem, t); } } }); } }
From source file:com.github.nethad.clustermeister.example.fractals.ComputeMandelbrotAsync.java
public void computePicture(final FractalConfiguration config) { try {//from ww w. j a v a2 s . com if (clustermeister == null) { clustermeister = ClustermeisterFactory.create(); } int nbTask = config.bsize; logger.info("Executing " + nbTask + " tasks"); Map<String, Object> jobData = new HashMap<String, Object>(); jobData.put("config", config); Job<MandelbrotResult> job = JobFactory.create("Clustermeister Mandelbrot", jobData); newImage(config); for (int i = 0; i < nbTask; i++) { job.addTask(new MandelbrotCMTask(i, config)); } long start = System.currentTimeMillis(); // List<MandelbrotResult> results = clustermeister.executeJob(job); final List<ListenableFuture<MandelbrotResult>> futures = clustermeister.executeJobAsyncTasks(job); final FutureCallback<MandelbrotResult> callback = new FutureCallback<MandelbrotResult>() { public void onSuccess(MandelbrotResult result) { processPictureLine(result, config); // logger.info("process line {}", result.getRow()); } public void onFailure(Throwable t) { logger.warn("Parts of the picture could not be computed.", t); } }; for (ListenableFuture<MandelbrotResult> future : futures) { Futures.addCallback(future, callback); } Futures.successfulAsList(futures).get(); // wait for all jobs to be finished long elapsed = System.currentTimeMillis() - start; logger.info("Computation performed in " + StringUtils.toStringDuration(elapsed)); // generateMandelbrotImage(results, config); refreshImage(); } catch (Exception ex) { ex.printStackTrace(); } }
From source file:org.anhonesteffort.dsp.plot.SpectrumFrame.java
public SpectrumFrame(ExecutorService executor, DftWidth dftWidth, Integer averaging, Integer frameRate, Integer samplesQueueSize) { super("DFT Plot"); setLayout(new BorderLayout()); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); spectrumPanel = new SpectrumPanel(averaging, frameRate); gridPanel = new SpectrumGridOverlayPanel(); getLayeredPane().add(spectrumPanel, 0, 0); getLayeredPane().add(gridPanel, 1, 0); addWindowListener(this); addWindowListener(spectrumPanel);/*w w w . java 2s. c om*/ getLayeredPane().addComponentListener(this); dftConverter = new SamplesToDftConverter(dftWidth, samplesQueueSize); Filter<DftFrame> decibelConverter = new DftToDecibelConverter(); dftConverter.addSink(decibelConverter); decibelConverter.addSink(spectrumPanel); dftConverterFuture = MoreExecutors.listeningDecorator(executor).submit(dftConverter); Futures.addCallback(dftConverterFuture, this); }