List of usage examples for com.google.common.util.concurrent SettableFuture setException
@Override public boolean setException(Throwable throwable)
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; }