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

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

Introduction

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

Prototype

@Override
    public boolean setException(Throwable throwable) 

Source Link

Usage

From source file:io.viewserver.client.ClientSubscription.java

public Future<List<Map<String, Object>>> getSnapshot() {
    SettableFuture<List<Map<String, Object>>> future = SettableFuture.create();
    deserialiserOperator.addEventHandler(new DeserialiserEventHandlerBase() {
        @Override/*from w  ww.  j ava 2  s  . c  o m*/
        public void onSubscriptionError(DeserialiserOperator deserialiserOperator, String msg) {
            future.setException(new ViewServerClientException(msg));
        }

        @Override
        public void onSnapshotComplete(DeserialiserOperator deserialiserOperator) {
            ArrayList<Map<String, Object>> snapshot = new ArrayList<>();
            Schema schema = deserialiserOperator.getOutput().getSchema();
            IRowSequence allRows = deserialiserOperator.getOutput().getAllRows();
            List<ColumnHolder> columnHolders = schema.getColumnHolders();
            int count = columnHolders.size();
            while (allRows.moveNext()) {
                HashMap<String, Object> row = new HashMap<>();
                for (int i = 0; i < count; i++) {
                    ColumnHolder columnHolder = columnHolders.get(i);
                    if (columnHolder == null) {
                        continue;
                    }
                    row.put(columnHolder.getName(),
                            ColumnHolderUtils.getValue(columnHolder, allRows.getRowId()));
                }
                snapshot.add(row);
            }
            future.set(snapshot);
        }
    });
    return future;
}

From source file:io.crate.operation.join.SinglePagePageableTaskIterable.java

@Override
public ListenableFuture<Void> fetchPage(PageInfo pageInfo) throws NoSuchElementException {
    this.pageInfo(pageInfo);

    final SettableFuture<Void> future = SettableFuture.create();
    Futures.addCallback(currentTaskResult.fetch(pageInfo), new FutureCallback<PageableTaskResult>() {
        @Override// w w  w . j ava 2s . com
        public void onSuccess(@Nullable PageableTaskResult result) {
            if (result == null) {
                future.setException(new IllegalArgumentException("PageableTaskResult is null"));
            }
            currentTaskResult = result;
            future.set(null);
        }

        @Override
        public void onFailure(Throwable t) {
            future.setException(t);
        }
    });
    return future;
}

From source file:c5db.util.WrappingKeySerializingExecutor.java

/**
 * Create a Runnable that runs a task which produces a value, then sets the passed-in Future
 * with the produced value.//  ww  w.j  av  a2s  . c  om
 */
private <T> Runnable createFutureSettingTaskRunner(CheckedSupplier<T, Exception> task,
        SettableFuture<T> setWhenFinished) {
    return () -> {
        try {
            setWhenFinished.set(task.get());
        } catch (Throwable t) {
            LOG.error("Error executing task", t);
            setWhenFinished.setException(t);
        }
    };
}

From source file:org.midonet.midolman.state.zkManagers.TunnelZoneZkManager.java

public Set<TunnelZone.HostConfig> getZoneMembershipsForHosts(UUID zoneId, Set<UUID> hosts)
        throws StateAccessException, SerializationException {
    Map<UUID, Future<byte[]>> futures = new HashMap<UUID, Future<byte[]>>();
    for (UUID host : hosts) {
        String zoneMembershipPath = paths.getTunnelZoneMembershipPath(zoneId, host);
        final SettableFuture<byte[]> f = SettableFuture.create();
        zk.asyncGet(zoneMembershipPath, new DirectoryCallback<byte[]>() {
            @Override// www.j  a  v  a 2 s  .co m
            public void onTimeout() {
                f.setException(new TimeoutException());
            }

            @Override
            public void onError(KeeperException e) {
                f.setException(e);
            }

            @Override
            public void onSuccess(byte[] data) {
                f.set(data);
            }
        }, null);
        futures.put(host, f);
    }

    Set<TunnelZone.HostConfig> configs = new HashSet<TunnelZone.HostConfig>();
    for (Map.Entry<UUID, Future<byte[]>> entry : futures.entrySet()) {
        try {
            TunnelZone.HostConfig.Data config = serializer.deserialize(entry.getValue().get(),
                    TunnelZone.HostConfig.Data.class);
            configs.add(new TunnelZone.HostConfig(entry.getKey(), config));
        } catch (InterruptedException ie) {
            Thread.currentThread().interrupt();
            throw new StateAccessException(ie);
        } catch (ExecutionException ee) {
            if (ee.getCause() instanceof KeeperException.NoNodeException) {
                // ignore, membership simply didn't exist
            } else {
                throw new StateAccessException(ee.getCause());
            }
        }
    }
    return configs;
}

From source file:zipkin2.collector.scribe.ScribeSpanConsumer.java

@Override
public ListenableFuture<ResultCode> log(List<LogEntry> messages) {
    metrics.incrementMessages();/*w ww .j  a  va2  s  .  com*/
    List<Span> spans;
    try {
        spans = messages.stream().filter(m -> m.category.equals(category))
                .map(m -> m.message.getBytes(StandardCharsets.ISO_8859_1))
                .map(b -> Base64.getMimeDecoder().decode(b)) // finagle-zipkin uses mime encoding
                .peek(b -> metrics.incrementBytes(b.length)).map(SpanBytesDecoder.THRIFT::decodeOne)
                .collect(Collectors.toList());
    } catch (RuntimeException e) {
        metrics.incrementMessagesDropped();
        return Futures.immediateFailedFuture(e);
    }

    SettableFuture<ResultCode> result = SettableFuture.create();
    collector.accept(spans, new Callback<Void>() {
        @Override
        public void onSuccess(@Nullable Void value) {
            result.set(ResultCode.OK);
        }

        @Override
        public void onError(Throwable t) {
            result.setException(t);
        }
    });
    return result;
}

From source file:io.crate.operation.join.CollectingPageableTaskIterable.java

@Override
public ListenableFuture<Void> fetchPage(PageInfo pageInfo) throws NoSuchElementException {
    this.pageInfo(pageInfo);

    final SettableFuture<Void> future = SettableFuture.create();
    Futures.addCallback(currentTaskResult.fetch(pageInfo), new FutureCallback<PageableTaskResult>() {
        @Override/* ww w  .  j a v a 2s.c  o  m*/
        public void onSuccess(@Nullable PageableTaskResult result) {
            if (result == null) {
                future.setException(new IllegalArgumentException("PageableTaskResult is null"));
            } else {
                pages.add(result.page());
                future.set(null);
            }
        }

        @Override
        public void onFailure(Throwable t) {
            future.setException(t);
        }
    });
    return future;
}

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

/**
 * Asynchronously fetch and return all media images associated with the app with the given ID.
 *///from w w  w .j a  v  a2s.  c o  m
public ListenableFuture<List<MediaImage>> fetchMediaImages(final String appId) {
    final SettableFuture<List<MediaImage>> future = SettableFuture.create();
    mRequestExecutor.execute(new Runnable() {
        @Override
        public void run() {
            try {
                future.set(mClient.fetchMediaImages(appId));
            } catch (ApiException e) {
                future.setException(e);
            }
        }
    });
    return future;
}

From source file:io.flutter.plugins.googlesignin.BackgroundTaskRunner.java

/**
 * Executes the specified task in a background thread and returns a future with which the caller
 * can be notified of task completion./*from  w ww. j  av  a2 s . c o  m*/
 *
 * <p>Note: the future will be notified on the background thread. To be notified on the UI thread,
 * use {@link #runInBackground(Callable,Callback)}.
 */
public <T> ListenableFuture<T> runInBackground(final Callable<T> task) {
    final SettableFuture<T> future = SettableFuture.create();

    executor.execute(new Runnable() {
        @Override
        public void run() {
            if (!future.isCancelled()) {
                try {
                    future.set(task.call());
                } catch (Throwable t) {
                    future.setException(t);
                }
            }
        }
    });

    return future;
}

From source file:org.fcrepo.kernel.utils.iterators.PersistingRdfStreamConsumer.java

@Override
public ListenableFuture<Boolean> consumeAsync() {
    // TODO make this actually asynch
    final SettableFuture<Boolean> result = SettableFuture.create();
    try {//from  w  w  w.  ja v a  2 s  .c  om
        consume();
        result.set(true);
    } catch (final Exception e) {
        LOGGER.warn("Got exception consuming RDF stream", e);
        result.setException(e);
        result.set(false);
    }
    return result;
}

From source file:com.microsoft.windowsazure.mobileservices.http.MobileServiceHttpClient.java

/**
 * Makes a request over HTTP// www. jav a 2  s  .c om
 *
 * @param path           The path of the request URI
 * @param content        The byte array to send as the request body
 * @param httpMethod     The HTTP Method used to invoke the API
 * @param requestHeaders The extra headers to send in the request
 * @param parameters     The query string parameters sent in the request
 * @param features       The features used in the request
 */
public ListenableFuture<ServiceFilterResponse> request(String path, byte[] content, String httpMethod,
        List<Pair<String, String>> requestHeaders, List<Pair<String, String>> parameters,
        EnumSet<MobileServiceFeatures> features) {
    final SettableFuture<ServiceFilterResponse> future = SettableFuture.create();

    if (path == null || path.trim().equals("")) {
        future.setException(new IllegalArgumentException("request path cannot be null"));
        return future;
    }

    if (httpMethod == null || httpMethod.trim().equals("")) {
        future.setException(new IllegalArgumentException("httpMethod cannot be null"));
        return future;
    }

    Uri.Builder uriBuilder = Uri.parse(mClient.getAppUrl().toString()).buildUpon();
    uriBuilder.path(path);

    if (parameters != null && parameters.size() > 0) {
        for (Pair<String, String> parameter : parameters) {
            uriBuilder.appendQueryParameter(parameter.first, parameter.second);
        }
    }

    ServiceFilterRequestImpl request;
    String url = uriBuilder.build().toString();

    if (httpMethod.equalsIgnoreCase(HttpGet.METHOD_NAME)) {
        request = new ServiceFilterRequestImpl(new HttpGet(url), mClient.getAndroidHttpClientFactory());
    } else if (httpMethod.equalsIgnoreCase(HttpPost.METHOD_NAME)) {
        request = new ServiceFilterRequestImpl(new HttpPost(url), mClient.getAndroidHttpClientFactory());
    } else if (httpMethod.equalsIgnoreCase(HttpPut.METHOD_NAME)) {
        request = new ServiceFilterRequestImpl(new HttpPut(url), mClient.getAndroidHttpClientFactory());
    } else if (httpMethod.equalsIgnoreCase(HttpPatch.METHOD_NAME)) {
        request = new ServiceFilterRequestImpl(new HttpPatch(url), mClient.getAndroidHttpClientFactory());
    } else if (httpMethod.equalsIgnoreCase(HttpDelete.METHOD_NAME)) {
        request = new ServiceFilterRequestImpl(new HttpDelete(url), mClient.getAndroidHttpClientFactory());
    } else {
        future.setException(new IllegalArgumentException("httpMethod not supported"));
        return future;
    }

    String featuresHeader = MobileServiceFeatures.featuresToString(features);
    if (featuresHeader != null) {
        if (requestHeaders == null) {
            requestHeaders = new ArrayList<Pair<String, String>>();
        }

        boolean containsFeatures = false;
        for (Pair<String, String> header : requestHeaders) {
            if (header.first.equals(X_ZUMO_FEATURES)) {
                containsFeatures = true;
                break;
            }
        }

        if (!containsFeatures) {
            // Clone header list to prevent changing user's list
            requestHeaders = new ArrayList<Pair<String, String>>(requestHeaders);
            requestHeaders.add(new Pair<String, String>(X_ZUMO_FEATURES, featuresHeader));
        }
    }

    if (requestHeaders != null && requestHeaders.size() > 0) {
        for (Pair<String, String> header : requestHeaders) {
            request.addHeader(header.first, header.second);
        }
    }

    if (content != null) {
        try {
            request.setContent(content);
        } catch (Exception e) {
            future.setException(e);
            return future;
        }
    }

    MobileServiceConnection conn = mClient.createConnection();

    new RequestAsyncTask(request, conn) {
        @Override
        protected void onPostExecute(ServiceFilterResponse response) {
            if (mTaskException != null) {
                future.setException(mTaskException);
            } else {
                future.set(response);
            }
        }
    }.executeTask();

    return future;
}