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

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

Introduction

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

Prototype

public static <V> SettableFuture<V> create() 

Source Link

Document

Creates a new SettableFuture that can be completed or cancelled by a later method call.

Usage

From source file:com.facebook.presto.hive.util.AsyncWalker.java

public ListenableFuture<Void> beginWalk(Path path, FileStatusCallback callback) {
    SettableFuture<Void> future = SettableFuture.create();
    recursiveWalk(path, callback, new AtomicLong(), future);
    return future;
}

From source file:io.crate.autocomplete.InformationSchemaDataProvider.java

private ListenableFuture<List<String>> execute(String statement, Object[] args) {
    final SettableFuture<List<String>> result = SettableFuture.create();
    transportAction.get().execute(new SQLRequest(statement, args), new ActionListener<SQLResponse>() {
        @Override// w  w w  .ja va 2  s .co  m
        public void onResponse(SQLResponse response) {
            List<String> rows = new ArrayList<>();
            for (Object[] objects : response.rows()) {
                rows.add((String) objects[0]);
            }
            result.set(rows);
        }

        @Override
        public void onFailure(Throwable e) {
            result.setException(e);
        }
    });
    return result;
}

From source file:com.microsoft.services.sharepoint.ListClient.java

/**
 * Gets lists.//from  w w  w .ja v a2 s  .  co  m
 *
 * @param query the query
 * @return the lists
 */
public ListenableFuture<List<SPList>> getLists(Query query) {
    final SettableFuture<List<SPList>> result = SettableFuture.create();

    String queryOData = generateODataQueryString(query);
    String getListsUrl = getSiteUrl() + "_api/web/lists/?" + queryEncode(queryOData);

    ListenableFuture<JSONObject> request = executeRequestJson(getListsUrl, "GET");

    Futures.addCallback(request, new FutureCallback<JSONObject>() {
        @Override
        public void onFailure(Throwable t) {
            result.setException(t);
        }

        @Override
        public void onSuccess(JSONObject json) {
            try {
                List<SPList> list = SPList.listFromJson(json);
                result.set(list);
            } catch (JSONException e) {
                log(e);
            }
        }
    });

    return result;
}

From source file:com.google.gapid.server.ChildProcess.java

public ListenableFuture<T> start() {
    final ProcessBuilder pb = new ProcessBuilder();
    // Use the base directory as the working directory for the server.
    pb.directory(GapiPaths.base());//from   w  w w .  j av a2s. c  om
    Exception prepareError = prepare(pb);
    if (prepareError != null) {
        return Futures.immediateFailedFuture(prepareError);
    }

    final SettableFuture<T> result = SettableFuture.create();
    serverThread = new Thread(ChildProcess.class.getName() + "-" + name) {
        @Override
        public void run() {
            runProcess(result, pb);
        }
    };
    serverThread.start();
    return result;
}

From source file:org.glowroot.central.util.MoreFutures.java

public static <V> ListenableFuture<V> onSuccessAndFailure(ListenableFuture<V> future, Runnable onSuccess,
        Runnable onFailure) {//from w  w w.jav a  2s. co  m
    SettableFuture<V> outerFuture = SettableFuture.create();
    Futures.addCallback(future, new FutureCallback<V>() {
        @Override
        public void onSuccess(V result) {
            onSuccess.run();
            outerFuture.set(result);
        }

        @Override
        public void onFailure(Throwable t) {
            logger.debug(t.getMessage(), t);
            onFailure.run();
            outerFuture.setException(t);
        }
    }, MoreExecutors.directExecutor());
    return outerFuture;
}

From source file:org.retrostore.android.net.DataFetcher.java

/**
 * Turn the synchronous API requests into an asynchronous one and return a listenable future
 * with the result.// w w w .  jav  a 2 s .  c o m
 */
public ListenableFuture<List<App>> getAppsAsync() {
    final SettableFuture<List<App>> future = SettableFuture.create();
    mRequestExecutor.execute(new Runnable() {
        @Override
        public void run() {
            try {
                List<App> apps = mClient.fetchApps(0, 100);
                updateCache(apps);
                future.set(apps);
            } catch (ApiException e) {
                future.setException(e);
            }
        }
    });
    return future;
}

From source file:utils.teamcity.wallt.controller.api.ApiRequestController.java

@Override
public <T extends ApiResponse> ListenableFuture<T> sendRequest(final ApiVersion version, final String path,
        final Class<T> expectedType) {
    final SettableFuture<T> apiResponseFuture = SettableFuture.create();
    try {//from ww w .  ja v a 2 s.c o  m
        final ApiRequest request = ApiRequestBuilder.newRequest().to(_configuration.getServerUrl())
                .forUser(_configuration.getCredentialsUser())
                .withPassword(_configuration.getCredentialsPassword()).request(path).apiVersion(version)
                .build();

        LOGGER.info("<< REQUEST: to {}", request);

        final AsyncHttpClient.BoundRequestBuilder httpRequest = _httpClient.prepareGet(request.getURI())
                .addHeader(HttpHeaders.ACCEPT, "application/json");

        if (!request.isGuestMode()) {
            final Realm realm = new Realm.RealmBuilder().setPrincipal(request.getUsername())
                    .setPassword(request.getPassword()).setUsePreemptiveAuth(true)
                    .setScheme(Realm.AuthScheme.BASIC).build();
            httpRequest.setRealm(realm);
        }

        if (_configuration.isUseProxy()) {
            // CODEREVIEW Let the user choose the protocol ?
            final ProxyServer proxyServer = new ProxyServer(ProxyServer.Protocol.HTTP,
                    checkNotNull(_configuration.getProxyHost(), "Proxy hostname is not defined"),
                    _configuration.getProxyPort(), _configuration.getProxyCredentialsUser(),
                    _configuration.getProxyCredentialsPassword());
            httpRequest.setProxyServer(proxyServer);
        }

        httpRequest.execute(new AsyncCompletionHandler<Void>() {
            @Override
            public void onThrowable(final Throwable t) {
                super.onThrowable(t);
                apiResponseFuture.setException(t);
            }

            @Override
            public Void onCompleted(final Response response) throws Exception {

                if (response.getStatusCode() != 200) {
                    LOGGER.error(">> RESPONSE: for {} has status code {}", request, response.getStatusCode());
                    apiResponseFuture.setException(new ApiException("Http status code is "
                            + response.getStatusCode() + " when requesting uri: " + response.getUri()));
                    return null;
                }

                final String content = response.getResponseBody(Charsets.UTF_8.name());
                LOGGER.debug(">> RESPONSE: for {} has content: {}", request, content);

                final Gson gson = new GsonBuilder().create();
                final T jsonResponse = gson.fromJson(content, expectedType);
                apiResponseFuture.set(jsonResponse);

                return null;
            }
        });
    } catch (Exception e) {
        apiResponseFuture.setException(e);
    }

    return apiResponseFuture;
}

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

@Override
public ListenableFuture<Node> combineUpdateAttempts(List<ListenableFuture<Node>> stateFutures) {
    final SettableFuture<Node> future = SettableFuture.create();
    final ListenableFuture<List<Node>> allAsList = Futures.allAsList(stateFutures);
    Futures.addCallback(allAsList, new FutureCallback<List<Node>>() {
        @Override//w  w w  .java2  s.  co  m
        public void onSuccess(List<Node> result) {
            for (int i = 0; i < result.size() - 1; i++) {
                if (!result.get(i).equals(result.get(i + 1))) {
                    future.setException(new IllegalStateException("Update futures have different result"));
                }
            }
            future.set(result.get(0));
        }

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

From source file:com.yeetor.engine.EngineDevice.java

public EngineDevice(AdbDevice iDevice) {
    this.device = iDevice;
    minitouch = new Minitouch(iDevice);
    SettableFuture future = SettableFuture.create();

    minitouch.addEventListener(new MinitouchListener() {
        @Override/*from w ww.j  a v a2 s  . c om*/
        public void onStartup(Minitouch minitouch, boolean success) {
            future.set(success);
        }

        @Override
        public void onClose(Minitouch minitouch) {
            minitouchOpen = false;
        }
    });
    minitouch.start();

    // Minitouch?
    try {
        Boolean success = (Boolean) future.get();
        if (success) {
            minitouchOpen = true;
        }
    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    }
}

From source file:c5db.SimpleModuleInformationProvider.java

public ListenableFuture<Service.State> startModule(C5Module module) {
    SettableFuture<Service.State> startedFuture = SettableFuture.create();
    Service.Listener stateChangeListener = new SimpleC5ModuleListener(module, () -> {
        addRunningModule(module);/*w ww  . j a  va 2s .c o  m*/
        startedFuture.set(null);
    }, () -> removeModule(module), failureHandler);

    module.addListener(stateChangeListener, fiber);
    modules.put(module.getModuleType(), module);
    module.start();

    return startedFuture;
}