Example usage for com.google.common.util.concurrent Futures immediateFailedCheckedFuture

List of usage examples for com.google.common.util.concurrent Futures immediateFailedCheckedFuture

Introduction

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

Prototype

@GwtIncompatible("TODO")
@CheckReturnValue
public static <V, X extends Exception> CheckedFuture<V, X> immediateFailedCheckedFuture(X exception) 

Source Link

Document

Returns a CheckedFuture which has an exception set immediately upon construction.

Usage

From source file:org.apache.s4.comm.staging.BlockingThreadPoolExecutorService.java

@Override
public ListenableFuture<?> submit(Runnable task) {
    try {/*from w  w w  . ja va2 s  .  c  om*/
        queueingPermits.acquire();
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        return Futures.immediateFailedCheckedFuture(e);
    }
    ListenableFuture<?> future = super.submit(new RunnableWithPermitRelease(task));
    return future;
}

From source file:org.opendaylight.streamhandler.impl.StreamhandlerImpl.java

@Override
public Future<RpcResult<QuerySqlRelativeApiOutput>> querySqlRelativeApi(QuerySqlRelativeApiInput input) {

    final SettableFuture<RpcResult<QuerySqlRelativeApiOutput>> futureResult = SettableFuture.create();
    String query = input.getQueryString();
    Short timeRange = input.getTimeRange();
    Short limit = input.getLimit();
    List<String> eventFields = input.getEventFields();
    List<Map<String, Object>> output = null;

    if (query == null) {
        return Futures.immediateFailedCheckedFuture(
                new TransactionCommitFailedException("invalid-input", RpcResultBuilder
                        .newError(ErrorType.APPLICATION, "Field missing", "Mandatory field Query missing")));
    }/* w  w w  . j a  v  a 2s.c  om*/
    if (limit == null) {
        limit = Short.parseShort(commonServices.defaultLimit);
    }
    if (timeRange == null && limit != null) {
        if (commonServices.dbType.equalsIgnoreCase(StreamConstants.HBASE)) {
            if (checkIfQueryContainsStreamWithSpaces(query)) {
                query = updateWhenQueryContainsStream(query);
                query = amendLimitToQuery(query, limit);
            } else if (checkIfQueryContainsAlertWithSpaces(query)) {
                query = updateWhenQueryContainsAlert(query);
                query = amendLimitToQuery(query, limit);
            } else if (checkIfQueryContainsDashboardWithSpaces(query)) {
                query = updateWhenQueryContainsDashboard(query);
                query = amendLimitToQuery(query, limit);
            } else if (checkIfQueryContainsData(query)) {
                query = updateWhenQueryContainsData(query);
                query = amendLimitToQuery(query, limit);
            } else {

                return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException(
                        "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid query",
                                "supported columns are stream, alert, dashboard and data ")));
            }

        } else {
            return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                    RpcResultBuilder.newError(ErrorType.APPLICATION, "DB type not supported",
                            "DB type " + commonServices.dbType + "not supported")));

        }

    } else if (timeRange != null && limit != null) {
        now.add(Calendar.MINUTE, -timeRange);
        String formattedTimestamp = sdf.format(now.getTime());

        if (commonServices.dbType.equalsIgnoreCase(StreamConstants.HBASE)) {
            if (checkIfQueryContainsStreamWithSpaces(query)) {
                query = replaceFirstCentinelForDBType(query);
                if (checkIfQueryContainsStreamDot(query)) {
                    query = query.replace(StreamConstants.STREAM_DOT,
                            StreamConstants.CENTINEL_DOT + StreamConstants.STREAM_DOT);
                    query = query + " AND centinel.stream.event_timestamp>="
                            + getSingleQuotedValue(formattedTimestamp);
                } else if (!checkIfQueryContainsStreamDot(query)) {
                    query = query + " where centinel.stream.event_timestamp>="
                            + getSingleQuotedValue(formattedTimestamp);
                }
                query = replaceFirstStream(query);
                query = amendLimitToQuery(query, limit);
            } else if (checkIfQueryContainsAlertWithSpaces(query)) {
                query = replaceFirstCentinelForDBType(query);
                if (checkIfQueryContainsAlertDot(query)) {
                    query = query.replace(StreamConstants.ALERT_DOT,
                            StreamConstants.CENTINEL_DOT + StreamConstants.ALERT_DOT);
                    query = query + " AND centinel.alert.check_result:triggeredAt>="
                            + getSingleQuotedValue(formattedTimestamp);
                } else if (!checkIfQueryContainsAlertDot(query)) {
                    query = query + " where centinel.alert.check_result:triggeredAt>="
                            + getSingleQuotedValue(formattedTimestamp);
                }
                query = replaceFirstAlert(query);
                query = amendLimitToQuery(query, limit);
            } else if (checkIfQueryContainsDashboardWithSpaces(query)) {
                query = replaceFirstCentinelForDBType(query);

                if (checkIfQueryContainsDashboardDot(query)) {
                    query = query.replace(StreamConstants.DASHBOARD_DOT,
                            StreamConstants.CENTINEL_DOT + StreamConstants.DASHBOARD_DOT);
                    query = query + AND + "centinel.dashboard.resetTime>="
                            + getSingleQuotedValue(formattedTimestamp);

                } else if (!checkIfQueryContainsDashboardDot(query)) {
                    query = query + WHERE + "centinel.dashboard.resetTime>="
                            + getSingleQuotedValue(formattedTimestamp);
                }
                query = replaceFirstDashboard(query);
                query = amendLimitToQuery(query, limit);

            } else if (checkIfQueryContainsData(query)) {
                query = updateWhenQueryContainsData(query);
                query = amendLimitToQuery(query, limit);
            } else {
                return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException(
                        "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid query",
                                "supported columns are stream, alert, dashboard and data ")));
            }
        } else {
            return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                    RpcResultBuilder.newError(ErrorType.APPLICATION, "DB type not supported",
                            "DB type " + commonServices.dbType + "not supported")));
        }
    }

    query = query.replace(StreamConstants.COLON, StreamConstants.UNDERSCORE);
    query = commonServices.matchRegEx(query);

    Map<String, String> drillQuery = new HashMap<String, String>();
    drillQuery.put(StreamConstants.QUERY_TYPE, StreamConstants.SQL);
    drillQuery.put(StreamConstants.QUERY, query);

    LOG.info("Drill Query: " + query);

    ClientResponse response = commonServices.drillRESTPost(drillQuery, commonServices.drillHostname,
            commonServices.drillPort);

    if (response != null && response.getStatus() != 200) {
        LOG.info("Error in Drill: " + response.getStatus());
        return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                RpcResultBuilder.newError(ErrorType.APPLICATION, "Error connecting drill",
                        response.getClientResponseStatus().toString())));

    } else {

        output = commonServices.parseResponse(response.getEntity(String.class), eventFields);

    }

    List<Records> recordList = new ArrayList<Records>();

    for (Map<String, Object> out : output) {

        Iterator<Entry<String, Object>> itr = out.entrySet().iterator();
        List<Fields> fieldsList = new ArrayList<Fields>();
        while (itr.hasNext()) {
            Entry<String, Object> obj = itr.next();
            fieldsList.add(new FieldsBuilder().setFieldValue(obj.getValue().toString())
                    .setFieldName(obj.getKey()).build());
        }

        Records recordObj = new RecordsBuilder().setFields(fieldsList).build();
        recordList.add(recordObj);
    }

    QuerySqlRelativeApiOutput queryOutput = new QuerySqlRelativeApiOutputBuilder().setRecords(recordList)
            .build();
    futureResult.set(RpcResultBuilder.<QuerySqlRelativeApiOutput>success(queryOutput).build());
    return futureResult;
}

From source file:org.apache.hadoop.fs.s3a.BlockingThreadPoolExecutorService.java

@Override
public <T> ListenableFuture<T> submit(Callable<T> task) {
    try {/*from   www . j  a v  a 2  s .  c om*/
        queueingPermits.acquire();
    } catch (InterruptedException e) {
        Thread.currentThread().interrupt();
        return Futures.immediateFailedCheckedFuture(e);
    }
    return super.submit(new CallableWithPermitRelease<T>(task));
}

From source file:org.opendaylight.netvirt.elan.l2gw.utils.ElanL2GatewayMulticastUtils.java

/**
 * Updates the remote mcast mac table for all the devices in this elan
 * includes all the dpn tep ips and other devices tep ips in broadcast
 * locator set.//  w ww. ja va2  s  . com
 *
 * @param elanName
 *            the elan to be updated
 * @return the listenable future
 */
@SuppressWarnings("checkstyle:IllegalCatch")
public ListenableFuture<Void> updateRemoteMcastMacOnElanL2GwDevices(String elanName) {
    try {
        WriteTransaction transaction = broker.newWriteOnlyTransaction();
        for (L2GatewayDevice device : ElanL2GwCacheUtils.getInvolvedL2GwDevices(elanName).values()) {
            prepareRemoteMcastMacUpdateOnDevice(transaction, elanName, device);
        }
        return transaction.submit();
    } catch (RuntimeException e) {
        LOG.error("Failed to configure mcast mac on elan " + elanName, e);
        return Futures.immediateFailedCheckedFuture(e);
    }
}

From source file:org.opendaylight.faas.fabric.general.EndPointRegister.java

@Override
public Future<RpcResult<Void>> locateEndpoint(LocateEndpointInput input) {

    final RpcResult<Void> result = RpcResultBuilder.<Void>success().build();

    if (input == null) {
        return Futures.immediateFailedCheckedFuture(new IllegalArgumentException("endpoint can not be empty!"));
    }//from  ww  w .  j ava2 s . c  om
    final Uuid epId = input.getEndpointId();

    if (epId == null) {
        return Futures.immediateFailedCheckedFuture(new IllegalArgumentException("endpoint can not be empty!"));
    }
    final FabricId fabricid = input.getFabricId();
    final FabricInstance fabricObj = FabricInstanceCache.INSTANCE.retrieveFabric(fabricid);
    if (fabricObj == null) {
        return Futures.immediateFailedFuture(new IllegalArgumentException("fabric is not exist!"));
    }

    ReadWriteTransaction trans = dataBroker.newReadWriteTransaction();

    EndpointBuilder epBuilder = new EndpointBuilder();
    LocationBuilder locBuilder = new LocationBuilder(input.getLocation());
    epBuilder.setEndpointUuid(epId);
    epBuilder.setLocation(locBuilder.build());

    final InstanceIdentifier<Endpoint> eppath = Constants.DOM_ENDPOINTS_PATH.child(Endpoint.class,
            new EndpointKey(epId));
    trans.merge(LogicalDatastoreType.OPERATIONAL, eppath, epBuilder.build());

    CheckedFuture<Void, TransactionCommitFailedException> future = trans.submit();

    return Futures.transform(future, new AsyncFunction<Void, RpcResult<Void>>() {

        @Override
        public ListenableFuture<RpcResult<Void>> apply(Void input) throws Exception {
            return Futures.immediateFuture(result);
        }
    }, executor);
}

From source file:org.opendaylight.distributed.tx.impl.CachingReadWriteTx.java

public <T extends DataObject> CheckedFuture<Void, DTxException> asyncMerge(
        final LogicalDatastoreType logicalDatastoreType, final InstanceIdentifier<T> instanceIdentifier,
        final T t) {
    increaseOperation();/*from  w  w w  .  ja va  2 s . c o  m*/
    CheckedFuture<Optional<T>, ReadFailedException> readFuture = null;
    try {
        readFuture = delegate.read(logicalDatastoreType, instanceIdentifier);
    } catch (Exception e) {
        readFuture = Futures
                .immediateFailedCheckedFuture(new ReadFailedException("Read exception in merge action"));
    }

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

    Futures.addCallback(readFuture, new FutureCallback<Optional<T>>() {
        @Override
        public void onSuccess(final Optional<T> result) {
            synchronized (this) {
                cache.add(new CachedData(logicalDatastoreType, instanceIdentifier, result.orNull(),
                        ModifyAction.MERGE));
            }

            final ListeningExecutorService executorService = MoreExecutors
                    .listeningDecorator(executorPoolPerCache);
            final ListenableFuture asyncMergeFuture = executorService.submit(new Callable() {
                @Override
                public Object call() throws Exception {
                    delegate.merge(logicalDatastoreType, instanceIdentifier, t);
                    return null;
                }
            });

            Futures.addCallback(asyncMergeFuture, new FutureCallback() {
                @Override
                public void onSuccess(@Nullable Object result) {
                    decreaseOperation();
                    retFuture.set(null);
                }

                @Override
                public void onFailure(Throwable t) {
                    decreaseOperation();
                    LOG.trace("async merge failure");
                    retFuture.setException(new DTxException.EditFailedException("async merge failure", t));
                }
            });
        }

        @Override
        public void onFailure(final Throwable t) {
            decreaseOperation();
            retFuture.setException(
                    new DTxException.ReadFailedException("failed to read from node in merge action", t));
        }
    });

    return Futures.makeChecked(retFuture, new Function<Exception, DTxException>() {
        @Nullable
        @Override
        public DTxException apply(@Nullable Exception e) {
            e = (Exception) e.getCause();
            return e instanceof DTxException ? (DTxException) e : new DTxException("merge operation failed", e);
        }
    });
}

From source file:org.opendaylight.toaster.impl.ToasterServiceImpl.java

@Override
public Future<RpcResult<java.lang.Void>> makeToast(final MakeToastInput input) {
    LOG.info("makeToast: {}", input);

    String name = ManagementFactory.getRuntimeMXBean().getName();
    LOG.info(name);/*from ww  w  .  j a  v  a  2 s  .co m*/
    // get pid  
    String pid = name.split("@")[0];
    LOG.info("#########pid is:" + pid);
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//?
    String time = df.format(new Date());
    LOG.info("#########time is " + time);// new Date()??
    String tid = Long.toString(Thread.currentThread().getId());
    LOG.info("#########tid is:" + tid);
    record("makeToast", time, pid, tid);

    final InstanceIdentifier<Toaster> TOASTER_IID = InstanceIdentifier.builder(Toaster.class).build();
    final ReadWriteTransaction tx = broker.newReadWriteTransaction();
    ListenableFuture<Optional<Toaster>> readFuture = tx.read(LogicalDatastoreType.OPERATIONAL, TOASTER_IID);

    //Optional<Toaster>ListenableFuture??VoidListenableFuture
    final ListenableFuture<Void> commitFuture = Futures.transform(readFuture,
            new AsyncFunction<Optional<Toaster>, Void>() {

                @Override
                public ListenableFuture<Void> apply(final Optional<Toaster> toasterData) throws Exception {
                    //?toastertasterStatus
                    ToasterStatus toasterStatus = ToasterStatus.Down;
                    if (toasterData.isPresent()) {
                        toasterStatus = toasterData.get().getToasterStatus();
                    }

                    //???Up
                    if (toasterStatus == ToasterStatus.Up) {
                        //Up?
                        LOG.info("the toaster is already using,please wait a moment!");
                        return Futures.immediateFailedCheckedFuture(
                                new TransactionCommitFailedException("", RpcResultBuilder.newWarning(
                                        ErrorType.APPLICATION, "in-use", "Toaster is busy", null, null, null)));
                    } else {
                        //down??Up?
                        tx.put(LogicalDatastoreType.OPERATIONAL, TOASTER_IID,
                                new ToasterBuilder().setToasterStatus(ToasterStatus.Up).build());
                        return tx.submit();
                    }
                }
            });

    //callback
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {
        @Override
        public void onSuccess(final Void result) {
            // data store?makeToast
            LOG.info("******Task Starts******");
            currentMakeToastTask.set(executor.submit(new MakeToastTask(input)));
        }

        @Override
        public void onFailure(final Throwable ex) {
            LOG.debug("Failed to commit Toaster status", ex);
        }
    });

    return Futures.immediateFuture(RpcResultBuilder.<Void>success().build());
}

From source file:org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext.java

@Override
public CheckedFuture<? extends YangTextSchemaSource, SchemaSourceException> getSource(
        final SourceIdentifier sourceIdentifier) {
    final YangModuleInfo yangModuleInfo = sourceIdentifierToModuleInfo.get(sourceIdentifier);

    if (yangModuleInfo == null) {
        LOG.debug("Unknown schema source requested: {}, available sources: {}", sourceIdentifier,
                sourceIdentifierToModuleInfo.keySet());
        return Futures.immediateFailedCheckedFuture(
                new SchemaSourceException("Unknown schema source: " + sourceIdentifier));
    }//from www .j av  a  2  s .co m

    return Futures.immediateCheckedFuture(
            YangTextSchemaSource.delegateForByteSource(sourceIdentifier, new ByteSource() {
                @Override
                public InputStream openStream() throws IOException {
                    return yangModuleInfo.getModuleSourceStream();
                }
            }));
}

From source file:org.opendaylight.controller.sal.connect.netconf.sal.tx.NetconfDeviceReadOnlyTx.java

@Override
public CheckedFuture<Boolean, ReadFailedException> exists(LogicalDatastoreType store,
        YangInstanceIdentifier path) {/*  w ww.j a  va  2 s.  co  m*/
    CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> data = read(store, path);

    try {
        return Futures.immediateCheckedFuture(data.get().isPresent());
    } catch (InterruptedException | ExecutionException e) {
        return Futures.immediateFailedCheckedFuture(new ReadFailedException("Exists failed", e));
    }
}

From source file:org.opendaylight.controller.sal.connect.netconf.schema.NetconfRemoteSchemaYangSourceProvider.java

@Override
public CheckedFuture<YangTextSchemaSource, SchemaSourceException> getSource(
        final SourceIdentifier sourceIdentifier) {
    final String moduleName = sourceIdentifier.getName();

    // If formatted revision is SourceIdentifier.NOT_PRESENT_FORMATTED_REVISION, we have to omit it from request
    final String formattedRevision = sourceIdentifier.getRevision()
            .equals(SourceIdentifier.NOT_PRESENT_FORMATTED_REVISION) ? null : sourceIdentifier.getRevision();
    final Optional<String> revision = Optional.fromNullable(formattedRevision);
    final NormalizedNode<?, ?> getSchemaRequest = createGetSchemaRequest(moduleName, revision);

    logger.trace("{}: Loading YANG schema source for {}:{}", id, moduleName, revision);

    final ListenableFuture<YangTextSchemaSource> transformed = Futures.transform(
            rpc.invokeRpc(SchemaPath.create(true, NetconfMessageTransformUtil.GET_SCHEMA_QNAME),
                    getSchemaRequest),/*from   ww w  .j  a  va  2 s  . com*/
            new ResultToYangSourceTransformer(id, sourceIdentifier, moduleName, revision));

    final CheckedFuture<YangTextSchemaSource, SchemaSourceException> checked = Futures.makeChecked(transformed,
            MAPPER);

    // / FIXME remove this get, it is only present to wait until source is retrieved
    // (goal is to limit concurrent schema download, since NetconfDevice listener does not handle concurrent messages properly)
    // TODO retest this
    try {
        logger.trace("{}: Blocking for {}", id, sourceIdentifier);
        checked.checkedGet();
    } catch (final SchemaSourceException e) {
        return Futures.immediateFailedCheckedFuture(e);
    }

    return checked;
}