Example usage for com.google.common.util.concurrent SettableFuture set

List of usage examples for com.google.common.util.concurrent SettableFuture set

Introduction

In this page you can find the example usage for com.google.common.util.concurrent SettableFuture set.

Prototype

@Override
    public boolean set(@Nullable V value) 

Source Link

Usage

From source file:com.canoo.dolphin.server.context.DolphinContextTaskQueue.java

public Future<Void> addTask(final Runnable task) {
    Assert.requireNonNull(task, "task");
    taskLock.lock();/*w w w  .jav  a2s  .  com*/
    try {
        final SettableFuture<Void> future = SettableFuture.create();
        tasks.add(new Runnable() {
            @Override
            public void run() {
                try {
                    task.run();
                    future.set(null);
                } catch (Exception e) {
                    future.setException(e);
                }
            }
        });
        LOG.trace("Tasks added to Dolphin Platform context {}", dolphinSessionId);
        taskCondition.signal();
        return future;
    } finally {
        taskLock.unlock();
    }
}

From source file:co.cask.cdap.internal.app.runtime.workflow.AbstractProgramWorkflowRunner.java

/**
 * Adds a listener to the {@link ProgramController} and blocks for completion.
 *
 * @param controller the {@link ProgramController} for the program
 * @param context    the {@link RuntimeContext}
 * @return {@link RuntimeContext} of the completed program
 * @throws Exception if the execution failed
 *//*from   w  w  w  .j av a2  s  . co m*/
protected RuntimeContext executeProgram(final ProgramController controller, final RuntimeContext context)
        throws Exception {
    // Execute the program.
    final SettableFuture<RuntimeContext> completion = SettableFuture.create();
    controller.addListener(new AbstractListener() {
        @Override
        public void completed() {
            completion.set(context);
        }

        @Override
        public void killed() {
            completion.set(context);
        }

        @Override
        public void error(Throwable cause) {
            completion.setException(cause);
        }
    }, Threads.SAME_THREAD_EXECUTOR);

    // Block for completion.
    try {
        return completion.get();
    } catch (ExecutionException e) {
        Throwable cause = e.getCause();
        if (cause instanceof Exception) {
            throw (Exception) cause;
        }
        throw Throwables.propagate(cause);
    } catch (InterruptedException e) {
        try {
            Futures.getUnchecked(controller.stop());
        } catch (Throwable t) {
            // no-op
        }
        // reset the interrupt
        Thread.currentThread().interrupt();
        return null;
    }
}

From source file:com.twitter.heron.statemgr.zookeeper.curator.CuratorStateManager.java

@Override
public ListenableFuture<Boolean> deleteTMasterLocation(String topologyName) {
    // It is a EPHEMERAL node and would be removed automatically
    final SettableFuture<Boolean> result = SettableFuture.create();
    result.set(true);
    return result;
}

From source file:org.opendaylight.openflowplugin.applications.bulk.o.matic.SalBulkFlowServiceImpl.java

private ListenableFuture<RpcResult<Void>> handleResultFuture(
        CheckedFuture<Void, TransactionCommitFailedException> submitFuture) {
    final SettableFuture<RpcResult<Void>> rpcResult = SettableFuture.create();
    Futures.addCallback(submitFuture, new FutureCallback<Void>() {
        @Override//from w  w w .  j  a  va 2s .  c o m
        public void onSuccess(Void result) {
            rpcResult.set(RpcResultBuilder.success(result).build());
        }

        @Override
        public void onFailure(Throwable t) {
            RpcResultBuilder<Void> rpcResultBld = RpcResultBuilder.<Void>failed()
                    .withRpcErrors(Collections.singleton(
                            RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION, null, t.getMessage())));
            rpcResult.set(rpcResultBld.build());
        }
    });
    return rpcResult;
}

From source file:org.opendaylight.netconf.topology.impl.OnlySuccessStateAggregator.java

@Override
public ListenableFuture<Void> combineDeleteAttempts(List<ListenableFuture<Void>> stateFutures) {
    final SettableFuture<Void> future = SettableFuture.create();
    final ListenableFuture<List<Void>> allAsList = Futures.allAsList(stateFutures);
    Futures.addCallback(allAsList, new FutureCallback<List<Void>>() {
        @Override/*from www. ja v  a 2  s  .c om*/
        public void onSuccess(List<Void> result) {
            future.set(null);
        }

        @Override
        public void onFailure(Throwable t) {
            LOG.error("One of the combined delete attempts failed {}", t);
            future.setException(t);
        }
    });
    return future;
}

From source file:org.opendaylight.openflowplugin.applications.bulk.o.matic.SalBulkFlowServiceImpl.java

private <T> ListenableFuture<RpcResult<Void>> handleResultFuture(ListenableFuture<List<T>> submitFuture) {
    final SettableFuture<RpcResult<Void>> rpcResult = SettableFuture.create();
    Futures.addCallback(submitFuture, new FutureCallback<List<T>>() {
        @Override/*from   w w w.j a  v  a 2s .c  om*/
        public void onSuccess(List<T> result) {
            rpcResult.set(RpcResultBuilder.success((Void) null).build());
        }

        @Override
        public void onFailure(Throwable t) {
            RpcResultBuilder<Void> rpcResultBld = RpcResultBuilder.<Void>failed()
                    .withRpcErrors(Collections.singleton(
                            RpcResultBuilder.newError(RpcError.ErrorType.APPLICATION, null, t.getMessage())));
            rpcResult.set(rpcResultBld.build());
        }
    });
    return rpcResult;
}

From source file:org.robotninjas.protobuf.netty.client.NettyRpcChannel.java

private ListenableFuture<Message> doCallMethod(MethodDescriptor method, final RpcController controller,
        Message request, final Message responsePrototype, boolean blocking) {

    ListenableFuture<NettyRpcProto.RpcResponse> result = new RpcCall(buildRequest(blocking, method, request));
    channel.writeAndFlush(result);/*from ww w.j  a  v  a  2s . c o  m*/
    return Futures.transform(result, new AsyncFunction<NettyRpcProto.RpcResponse, Message>() {
        public ListenableFuture<Message> apply(NettyRpcProto.RpcResponse input) {
            SettableFuture<Message> response = SettableFuture.create();
            try {
                final Message.Builder builder = responsePrototype.newBuilderForType();
                Message result = builder.mergeFrom(input.getResponseMessage()).build();
                response.set(result);
            } catch (InvalidProtocolBufferException e) {
                controller.setFailed(nullToEmpty(e.getMessage()));
                response.setException(e);
            }
            return response;
        }
    });

}

From source file:co.cask.cdap.common.twill.AbstractMasterTwillRunnable.java

private Service.Listener createServiceListener(final String name, final SettableFuture<String> future) {
    return new ServiceListenerAdapter() {
        @Override//from   w  ww .  j  ava 2s .  c  om
        public void terminated(Service.State from) {
            LOG.info("Service " + name + " terminated");
            future.set(name);
        }

        @Override
        public void failed(Service.State from, Throwable failure) {
            LOG.error("Service " + name + " failed", failure);
            future.setException(failure);
        }
    };
}

From source file:io.datakernel.service.ServiceGraphModule.java

private static ListenableFuture<?> combineFutures(List<ListenableFuture<?>> futures, final Executor executor) {
    final SettableFuture<?> resultFuture = SettableFuture.create();
    final AtomicInteger count = new AtomicInteger(futures.size());
    final AtomicReference<Throwable> exception = new AtomicReference<>();
    for (ListenableFuture<?> future : futures) {
        final ListenableFuture<?> finalFuture = future != null ? future : Futures.immediateFuture(null);
        finalFuture.addListener(new Runnable() {
            @Override/*  ww w.  j  a  v  a  2s .  c  o  m*/
            public void run() {
                try {
                    finalFuture.get();
                } catch (InterruptedException | ExecutionException e) {
                    exception.set(Throwables.getRootCause(e));
                }
                if (count.decrementAndGet() == 0) {
                    if (exception.get() != null)
                        resultFuture.setException(exception.get());
                    else
                        resultFuture.set(null);
                }
            }
        }, executor);
    }
    return resultFuture;
}

From source file:com.twitter.heron.statemgr.zookeeper.curator.CuratorStateManager.java

@Override
public ListenableFuture<Boolean> deleteSchedulerLocation(String topologyName) {
    // if scheduler is service, the znode is ephemeral and it's deleted automatically
    if (isSchedulerService) {
        final SettableFuture<Boolean> result = SettableFuture.create();
        result.set(true);
        return result;
    } else {/*  w ww.ja  v  a  2 s  .c  om*/
        return deleteNode(getSchedulerLocationPath(topologyName));
    }
}