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:org.opendaylight.ovsdb.lib.impl.OvsdbClientImpl.java

private void populateSchema(final List<String> dbNames, final Map<String, DatabaseSchema> schema,
        final SettableFuture<Map<String, DatabaseSchema>> sfuture) {

    if (dbNames == null || dbNames.isEmpty()) {
        return;//from w w w  . j av  a  2  s  .  c  om
    }

    Futures.transform(rpc.get_schema(Lists.newArrayList(dbNames.get(0))),
            new com.google.common.base.Function<JsonNode, Void>() {
                @Override
                public Void apply(JsonNode jsonNode) {
                    try {
                        schema.put(dbNames.get(0), DatabaseSchema.fromJson(dbNames.get(0), jsonNode));
                        if (schema.size() > 1 && !sfuture.isCancelled()) {
                            populateSchema(dbNames.subList(1, dbNames.size()), schema, sfuture);
                        } else if (schema.size() == 1) {
                            sfuture.set(schema);
                        }
                    } catch (Exception e) {
                        sfuture.setException(e);
                    }
                    return null;
                }
            });
}

From source file:io.crate.action.sql.DDLAnalysisDispatcher.java

@Override
public ListenableFuture<Long> visitAddColumnAnalysis(final AddColumnAnalysis analysis, Void context) {
    final SettableFuture<Long> result = SettableFuture.create();
    if (analysis.newPrimaryKeys()) {
        Plan plan = genCountStarPlan(analysis.table());
        Job job = executorProvider.get().newJob(plan);
        ListenableFuture<List<TaskResult>> resultFuture = Futures
                .allAsList(executorProvider.get().execute(job));
        Futures.addCallback(resultFuture, new FutureCallback<List<TaskResult>>() {
            @Override/*w  ww  . j ava  2s.  c  o  m*/
            public void onSuccess(@Nullable List<TaskResult> resultList) {
                assert resultList != null && resultList.size() == 1;
                Object[][] rows = resultList.get(0).rows();
                if ((Long) rows[0][0] == 0L) {
                    addColumnToTable(analysis, result);
                } else {
                    result.setException(new UnsupportedOperationException(
                            "Cannot add a primary key column to a table that isn't empty"));
                }
            }

            @Override
            public void onFailure(@Nonnull Throwable t) {
                result.setException(t);
            }
        });
    } else {
        addColumnToTable(analysis, result);
    }
    return result;
}

From source file:com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.java

/**
 * Delete an element from a Mobile Service Table
 *
 * @param element    The JsonObject to undelete
 * @param parameters A list of user-defined parameters and values to include in the
 *                   request URI query string
 *///  www  . j  a v  a 2  s . co m
public ListenableFuture<Void> delete(JsonObject element, List<Pair<String, String>> parameters) {

    validateId(element);

    final SettableFuture<Void> future = SettableFuture.create();

    Object id = null;
    String version = null;

    try {
        id = validateId(element);
    } catch (Exception e) {
        future.setException(e);
        return future;
    }

    if (!isNumericType(id)) {
        version = getVersionSystemProperty(element);
    }

    EnumSet<MobileServiceFeatures> features = mFeatures.clone();
    if (parameters != null && parameters.size() > 0) {
        features.add(MobileServiceFeatures.AdditionalQueryParameters);
    }

    parameters = addSystemProperties(mSystemProperties, parameters);
    List<Pair<String, String>> requestHeaders = null;
    if (version != null) {
        requestHeaders = new ArrayList<Pair<String, String>>();
        requestHeaders.add(new Pair<String, String>("If-Match", getEtagFromValue(version)));
        features.add(MobileServiceFeatures.OpportunisticConcurrency);
    }

    ListenableFuture<Pair<JsonObject, ServiceFilterResponse>> internalFuture = this.executeTableOperation(
            TABLES_URL + mTableName + "/" + id.toString(), null, "DELETE", requestHeaders, parameters,
            features);

    Futures.addCallback(internalFuture, new FutureCallback<Pair<JsonObject, ServiceFilterResponse>>() {
        @Override
        public void onFailure(Throwable exc) {
            future.setException(exc);
        }

        @Override
        public void onSuccess(Pair<JsonObject, ServiceFilterResponse> result) {
            future.set(null);
        }
    });

    return future;
}

From source file:com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.java

/**
 * Undelete an element from a Mobile Service Table
 *
 * @param element    The JsonObject to undelete
 * @param parameters A list of user-defined parameters and values to include in the
 *                   request URI query string
 *///  w ww . j  a v  a  2  s.  c  om
public ListenableFuture<JsonObject> undelete(final JsonObject element, List<Pair<String, String>> parameters) {
    final SettableFuture<JsonObject> future = SettableFuture.create();

    Object id = null;
    String version = null;

    try {
        id = validateId(element);
    } catch (Exception e) {
        future.setException(e);
        return future;
    }

    if (!isNumericType(id)) {
        version = getVersionSystemProperty(element);
    }

    EnumSet<MobileServiceFeatures> features = mFeatures.clone();
    if (parameters != null && parameters.size() > 0) {
        features.add(MobileServiceFeatures.AdditionalQueryParameters);
    }

    parameters = addSystemProperties(mSystemProperties, parameters);
    List<Pair<String, String>> requestHeaders = null;
    if (version != null) {
        requestHeaders = new ArrayList<Pair<String, String>>();
        requestHeaders.add(new Pair<String, String>("If-Match", getEtagFromValue(version)));
        features.add(MobileServiceFeatures.OpportunisticConcurrency);
    }

    ListenableFuture<Pair<JsonObject, ServiceFilterResponse>> internalFuture = this.executeTableOperation(
            TABLES_URL + mTableName + "/" + id.toString(), null, "POST", requestHeaders, parameters, features);

    Futures.addCallback(internalFuture, new FutureCallback<Pair<JsonObject, ServiceFilterResponse>>() {
        @Override
        public void onFailure(Throwable exc) {
            future.setException(exc);
        }

        @Override
        public void onSuccess(Pair<JsonObject, ServiceFilterResponse> result) {
            JsonObject patchedJson = patchOriginalEntityWithResponseEntity(element, result.first);

            updateVersionFromETag(result.second, patchedJson);

            future.set(patchedJson);
        }
    });

    return future;
}

From source file:com.microsoft.sharepointservices.DocLibClient.java

/**
 * Get a FileSystemItem from a path in a document library
 * /*from   ww w  . j ava 2s . co  m*/
 * @param library
 *            the document library
 * @param path
 *            the path
 * @return OfficeFuture<List<FileSystemItem>>
 */
public ListenableFuture<FileSystemItem> getFileSystemItem(String path, final String library) {

    final SettableFuture<FileSystemItem> files = SettableFuture.create();

    String getFilesUrl;
    if (library != null) {
        getFilesUrl = getSiteUrl() + "_api/web/lists/GetByTitle('%s')/files(%s)";
        getFilesUrl = String.format(getFilesUrl, urlEncode(library), getUrlPath(path));
    } else {
        getFilesUrl = getSiteUrl() + String.format("_api/files(%s)", getUrlPath(path));
    }

    try {
        ListenableFuture<JSONObject> request = executeRequestJson(getFilesUrl, "GET");

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

            @Override
            public void onSuccess(JSONObject json) {
                try {
                    FileSystemItem item = new FileSystemItem();
                    item.loadFromJson(json);
                    files.set(item);
                } catch (Throwable e) {
                    files.setException(e);
                }
            }
        });

    } catch (Throwable t) {
        files.setException(t);
    }
    return files;
}

From source file:org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode.java

@StateTransition(currentState = { State.UNINITIALIZED, State.STOPPED,
        State.ERRORED }, desiredState = State.ACTIVE)
protected ListenableFuture<Void> doActivate() {
    final SettableFuture<Void> returnVal = SettableFuture.create();

    try {/* w  ww .j av  a2s  . com*/
        addFutureCallback(activate(), new FutureCallback<Void>() {
            @Override
            public void onSuccess(final Void result) {
                try {
                    setState(State.ACTIVE);
                } finally {
                    returnVal.set(null);
                }

            }

            @Override
            public void onFailure(final Throwable t) {
                setState(State.ERRORED);
                if (_broker.isManagementMode()) {
                    LOGGER.warn("Failed to make " + this + " active.", t);
                    returnVal.set(null);
                } else {
                    returnVal.setException(t);
                }
            }
        }, getTaskExecutor());
    } catch (RuntimeException e) {
        setState(State.ERRORED);
        returnVal.set(null);
        if (_broker.isManagementMode()) {
            LOGGER.warn("Failed to make " + this + " active.", e);
        } else {
            throw e;
        }
    }
    return returnVal;
}

From source file:com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.java

/**
 * Updates an element from a Mobile Service Table
 *
 * @param element    The JsonObject to update
 * @param parameters A list of user-defined parameters and values to include in the
 *                   request URI query string
 *//*from ww w. ja v a 2  s . co m*/
public ListenableFuture<JsonObject> update(final JsonObject element, List<Pair<String, String>> parameters) {
    final SettableFuture<JsonObject> future = SettableFuture.create();

    Object id = null;
    String version = null;
    String content = null;

    try {
        id = validateId(element);
    } catch (Exception e) {
        future.setException(e);
        return future;
    }

    if (!isNumericType(id)) {
        version = getVersionSystemProperty(element);
        content = removeSystemProperties(element).toString();
    } else {
        content = element.toString();
    }

    EnumSet<MobileServiceFeatures> features = mFeatures.clone();
    if (parameters != null && parameters.size() > 0) {
        features.add(MobileServiceFeatures.AdditionalQueryParameters);
    }

    parameters = addSystemProperties(mSystemProperties, parameters);
    List<Pair<String, String>> requestHeaders = null;
    if (version != null) {
        requestHeaders = new ArrayList<Pair<String, String>>();
        requestHeaders.add(new Pair<String, String>("If-Match", getEtagFromValue(version)));
        features.add(MobileServiceFeatures.OpportunisticConcurrency);
    }

    ListenableFuture<Pair<JsonObject, ServiceFilterResponse>> internalFuture = this.executeTableOperation(
            TABLES_URL + mTableName + "/" + id.toString(), content, "PATCH", requestHeaders, parameters,
            features);

    Futures.addCallback(internalFuture, new FutureCallback<Pair<JsonObject, ServiceFilterResponse>>() {
        @Override
        public void onFailure(Throwable exc) {
            future.setException(exc);
        }

        @Override
        public void onSuccess(Pair<JsonObject, ServiceFilterResponse> result) {
            JsonObject patchedJson = patchOriginalEntityWithResponseEntity(element, result.first);

            updateVersionFromETag(result.second, patchedJson);

            future.set(patchedJson);
        }
    });

    return future;
}

From source file:org.apache.qpid.server.virtualhostnode.RedirectingVirtualHostNodeImpl.java

@StateTransition(currentState = { State.UNINITIALIZED, State.STOPPED,
        State.ERRORED }, desiredState = State.ACTIVE)
private ListenableFuture<Void> doActivate() {
    final SettableFuture<Void> resultFuture = SettableFuture.create();
    Map<String, Object> attributes = new HashMap<>();
    attributes.put(ConfiguredObject.NAME, getName());
    attributes.put(ConfiguredObject.TYPE, RedirectingVirtualHostImpl.VIRTUAL_HOST_TYPE);

    final ListenableFuture<VirtualHost> virtualHostFuture = getObjectFactory().createAsync(VirtualHost.class,
            attributes, this);

    addFutureCallback(virtualHostFuture, new FutureCallback<VirtualHost>() {
        @Override//from w  w  w .ja v  a 2 s  .com
        public void onSuccess(final VirtualHost virtualHost) {
            _virtualHost = (RedirectingVirtualHostImpl) virtualHost;
            setState(State.ACTIVE);
            resultFuture.set(null);

        }

        @Override
        public void onFailure(final Throwable t) {
            setState(State.ERRORED);
            if (((Broker) getParent()).isManagementMode()) {
                LOGGER.warn("Failed to make {} active.", this, t);
                resultFuture.set(null);
            } else {
                resultFuture.setException(t);
            }
        }
    }, getTaskExecutor());

    return resultFuture;
}

From source file:io.crate.action.sql.DDLAnalysisDispatcher.java

@Override
public ListenableFuture<Long> visitAlterTableAnalysis(final AlterTableAnalysis analysis, Void context) {
    final SettableFuture<Long> result = SettableFuture.create();
    final String[] indices;
    boolean updateTemplate = false;
    if (analysis.table().isPartitioned()) {
        if (analysis.partitionName().isPresent()) {
            indices = new String[] { analysis.partitionName().get().stringValue() };
        } else {/*from   w w  w.jav  a2s  . c o m*/
            updateTemplate = true; // only update template when updating whole partitioned table
            indices = analysis.table().concreteIndices();
        }
    } else {
        indices = new String[] { analysis.table().ident().name() };
    }

    if (analysis.table().isAlias()) {
        throw new AlterTableAliasException(analysis.table().ident().name());
    }

    final List<ListenableFuture<?>> results = new ArrayList<>(indices.length + (updateTemplate ? 1 : 0));
    if (updateTemplate) {
        final SettableFuture<?> templateFuture = SettableFuture.create();
        results.add(templateFuture);

        // update template
        final String templateName = PartitionName.templateName(analysis.table().ident().name());
        GetIndexTemplatesRequest getRequest = new GetIndexTemplatesRequest(templateName);

        transportGetIndexTemplatesAction.execute(getRequest, new ActionListener<GetIndexTemplatesResponse>() {
            @Override
            public void onResponse(GetIndexTemplatesResponse response) {
                String mapping;
                try {
                    mapping = response.getIndexTemplates().get(0).getMappings()
                            .get(Constants.DEFAULT_MAPPING_TYPE).string();
                } catch (IOException e) {
                    templateFuture.setException(e);
                    return;
                }
                ImmutableSettings.Builder settingsBuilder = ImmutableSettings.builder();
                settingsBuilder.put(response.getIndexTemplates().get(0).settings());
                settingsBuilder.put(analysis.settings());

                PutIndexTemplateRequest request = new PutIndexTemplateRequest(templateName).create(false)
                        .mapping(Constants.DEFAULT_MAPPING_TYPE, mapping).settings(settingsBuilder.build())
                        .template(response.getIndexTemplates().get(0).template());
                for (ObjectObjectCursor<String, AliasMetaData> container : response.getIndexTemplates().get(0)
                        .aliases()) {
                    Alias alias = new Alias(container.key);
                    request.alias(alias);
                }
                transportPutIndexTemplateAction.execute(request,
                        new ActionListener<PutIndexTemplateResponse>() {
                            @Override
                            public void onResponse(PutIndexTemplateResponse putIndexTemplateResponse) {
                                templateFuture.set(null);
                            }

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

            }

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

    }
    // update every concrete index
    for (String index : indices) {
        UpdateSettingsRequest request = new UpdateSettingsRequest(analysis.settings(), index);
        final SettableFuture<?> future = SettableFuture.create();
        results.add(future);
        transportUpdateSettingsAction.execute(request, new ActionListener<UpdateSettingsResponse>() {
            @Override
            public void onResponse(UpdateSettingsResponse updateSettingsResponse) {
                future.set(null);
            }

            @Override
            public void onFailure(Throwable e) {
                future.setException(e);
            }
        });
    }
    Futures.addCallback(Futures.allAsList(results), new FutureCallback<List<?>>() {
        @Override
        public void onSuccess(@Nullable List<?> resultList) {
            result.set(null);
        }

        @Override
        public void onFailure(@Nonnull Throwable t) {
            result.setException(t);
        }
    });

    return result;
}

From source file:co.cask.cdap.data.stream.AbstractStreamCoordinator.java

@Override
public ListenableFuture<Integer> nextGeneration(final StreamConfig streamConfig, final int lowerBound) {
    return Futures.transform(
            propertyStore.get().update(streamConfig.getName(), new PropertyUpdater<StreamProperty>() {
                @Override/*from   ww w .j av a  2s. c  o  m*/
                public ListenableFuture<StreamProperty> apply(@Nullable final StreamProperty property) {
                    final SettableFuture<StreamProperty> resultFuture = SettableFuture.create();
                    updateExecutor.execute(new Runnable() {

                        @Override
                        public void run() {
                            try {
                                long currentTTL = (property == null) ? streamConfig.getTTL()
                                        : property.getTTL();
                                int newGeneration = ((property == null) ? lowerBound : property.getGeneration())
                                        + 1;
                                // Create the generation directory
                                Locations.mkdirsIfNotExists(StreamUtils
                                        .createGenerationLocation(streamConfig.getLocation(), newGeneration));
                                resultFuture.set(new StreamProperty(newGeneration, currentTTL));
                            } catch (IOException e) {
                                resultFuture.setException(e);
                            }
                        }
                    });
                    return resultFuture;
                }
            }), new Function<StreamProperty, Integer>() {
                @Override
                public Integer apply(StreamProperty property) {
                    return property.getGeneration();
                }
            });
}