List of usage examples for com.google.common.util.concurrent AsyncFunction AsyncFunction
AsyncFunction
From source file:com.microsoft.intellij.helpers.o365.Office365ManagerImpl.java
private ListenableFuture<Application> createServicePrincipalForApp(final Application application) throws AzureCmdException { ServicePrincipal servicePrincipal = new ServicePrincipal(); servicePrincipal.setappId(application.getappId()); servicePrincipal.setaccountEnabled(true); return Futures.transform(getDirectoryClient().getservicePrincipals().add(servicePrincipal), new AsyncFunction<ServicePrincipal, Application>() { @Override/* ww w .j a v a2s . c o m*/ public ListenableFuture<Application> apply(ServicePrincipal servicePrincipal) throws Exception { return Futures.immediateFuture(application); } }); }
From source file:google.registry.bigquery.BigqueryConnection.java
/** * Starts an asynchronous job to run the provided query, store the results in a temporary table, * and then extract the contents of that table to the given GCS filepath in the specified * destination format, optionally printing headers. * * <p>Returns a ListenableFuture that holds the destination GCS URI on success. *//* w w w .j av a 2s .c o m*/ public ListenableFuture<String> extractQuery(String querySql, final String destinationUri, final DestinationFormat destinationFormat, final boolean printHeader) { // Note: although BigQuery queries save their results to an auto-generated anonymous table, // we can't rely on that for running the extract job because it may not be fully replicated. // Tracking bug for query-to-GCS support is b/13777340. DestinationTable tempTable = buildTemporaryTable().build(); return Futures.transformAsync(query(querySql, tempTable), new AsyncFunction<DestinationTable, String>() { @Override public ListenableFuture<String> apply(DestinationTable tempTable) { return extractTable(tempTable, destinationUri, destinationFormat, printHeader); } }); }
From source file:org.opendaylight.faas.fabric.general.FabricServiceAPIProvider.java
@Override public Future<RpcResult<Void>> rmLogicalRouter(RmLogicalRouterInput input) { FabricId fabricId = input.getFabricId(); NodeId nodeid = input.getNodeId();/*from w w w .jav a2s. com*/ final FabricInstance fabricObj = FabricInstanceCache.INSTANCE.retrieveFabric(fabricId); if (fabricObj == null) { return Futures.immediateFailedFuture( new IllegalArgumentException(String.format("fabric %s does not exist", fabricId))); } final InstanceIdentifier<Node> routerIId = MdSalUtils.createNodeIId(fabricId.getValue(), nodeid); ReadOnlyTransaction trans = dataBroker.newReadOnlyTransaction(); CheckedFuture<Optional<Node>, ReadFailedException> readFuture = trans.read(LogicalDatastoreType.OPERATIONAL, routerIId); return Futures.transform(readFuture, new AsyncFunction<Optional<Node>, RpcResult<Void>>() { @Override public ListenableFuture<RpcResult<Void>> apply(Optional<Node> optional) throws Exception { if (optional.isPresent()) { Node lr = optional.get(); fabricObj.notifyLogicRouterRemoved(lr); WriteTransaction wt = dataBroker.newWriteOnlyTransaction(); wt.delete(LogicalDatastoreType.OPERATIONAL, routerIId); MdSalUtils.wrapperSubmit(wt, executor); } return Futures.immediateFuture(RpcResultBuilder.<Void>success().build()); } }, executor); }
From source file:org.opendaylight.centinel.impl.CentinelImpl.java
/** * sets alert message count rule in configurational data store * // w w w. j av a 2 s . c o m */ @Override public Future<RpcResult<SetAlertMessageCountRuleOutput>> setAlertMessageCountRule( final SetAlertMessageCountRuleInput input) { final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction(); final SettableFuture<RpcResult<SetAlertMessageCountRuleOutput>> futureResult = SettableFuture.create(); LOG.info("setAlertMessageCountRule: " + input); final SetAlertMessageCountRuleOutputBuilder setAlertMessageCountRuleOutputBuilder = new SetAlertMessageCountRuleOutputBuilder(); setAlertMessageCountRuleOutputBuilder.setMessageCountOperator(input.getMessageCountOperator()); setAlertMessageCountRuleOutputBuilder.setMessageCountCount(input.getMessageCountCount()); setAlertMessageCountRuleOutputBuilder.setMessageCountGrace(input.getMessageCountGrace()); setAlertMessageCountRuleOutputBuilder.setMessageCountBacklog(input.getMessageCountBacklog()); setAlertMessageCountRuleOutputBuilder.setRuleID(input.getRuleID()); setAlertMessageCountRuleOutputBuilder.setNodeType(input.getNodeType()); setAlertMessageCountRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier()); setAlertMessageCountRuleOutputBuilder.setStreamID(input.getStreamID()); setAlertMessageCountRuleOutputBuilder.setTimeStamp(input.getTimeStamp()); setAlertMessageCountRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier()); ListenableFuture<Optional<AlertMessageCountRuleRecord>> readFuture = tx .read(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId); final ListenableFuture<Void> commitFuture = Futures.transform(readFuture, new AsyncFunction<Optional<AlertMessageCountRuleRecord>, Void>() { @Override public ListenableFuture<Void> apply( final Optional<AlertMessageCountRuleRecord> alertMessageCountRuleRecord) throws Exception { List<StreamAlertMessageCountRuleList> streamAlertRuleList = new ArrayList<StreamAlertMessageCountRuleList>(); if (alertMessageCountRuleRecord.isPresent()) { streamAlertRuleList = alertMessageCountRuleRecord.get() .getStreamAlertMessageCountRuleList(); } streamAlertRuleList.add(buildAlertMessageCountRuleRecord(input)); tx.put(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId, new AlertMessageCountRuleRecordBuilder() .setStreamAlertMessageCountRuleList(streamAlertRuleList).build()); return tx.submit(); } }); Futures.addCallback(commitFuture, new FutureCallback<Void>() { @Override public void onSuccess(final Void result) { futureResult.set(RpcResultBuilder .<SetAlertMessageCountRuleOutput>success(setAlertMessageCountRuleOutputBuilder.build()) .build()); } @Override public void onFailure(final Throwable ex) { LOG.debug("Failed to commit Rule", ex); futureResult.set(RpcResultBuilder.<SetAlertMessageCountRuleOutput>failed() .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build()); } }); return futureResult; }
From source file:org.opendaylight.faas.fabric.general.FabricManagementAPIProvider.java
@Override public Future<RpcResult<Void>> addNodeToFabric(AddNodeToFabricInput input) { final RpcResult<Void> result = RpcResultBuilder.<Void>success().build(); final FabricId fabricId = input.getFabricId(); final NodeRef device = input.getNodeRef(); final DeviceRole role = input.getRole(); final InstanceIdentifier<DeviceNodes> path = Constants.DOM_FABRICS_PATH .child(Node.class, new NodeKey(fabricId)).augmentation(FabricNode.class) .child(FabricAttribute.class).child(DeviceNodes.class, new DeviceNodesKey(device)); final FabricInstance fabricObj = FabricInstanceCache.INSTANCE.retrieveFabric(fabricId); if (fabricObj == null) { return Futures.immediateFailedFuture(new IllegalArgumentException("fabric is not exist!")); }/* w ww. j ava 2 s . co m*/ WriteTransaction trans = dataBroker.newWriteOnlyTransaction(); // set fabric attribute DeviceNodesBuilder dnodeBuilder = new DeviceNodesBuilder(); dnodeBuilder.setKey(new DeviceNodesKey(device)).setDeviceRef(device).build(); fabricObj.addNodeToFabric(dnodeBuilder, input); trans.put(LogicalDatastoreType.OPERATIONAL, path, dnodeBuilder.build(), true); // set node attribute @SuppressWarnings("unchecked") InstanceIdentifier<Node> noderef = (InstanceIdentifier<Node>) device.getValue(); NodeId deviceid = noderef.firstKeyOf(Node.class).getNodeId(); TopologyId topoid = noderef.firstKeyOf(Topology.class).getTopologyId(); final InstanceIdentifier<SupportingNode> suplNodeIid = MdSalUtils.createFNodeIId(input.getFabricId()) .child(SupportingNode.class, new SupportingNodeKey(deviceid, topoid)); SupportingNodeBuilder suplNodeBuilder = new SupportingNodeBuilder(); suplNodeBuilder.setNodeRef(deviceid); suplNodeBuilder.setTopologyRef(topoid); suplNodeBuilder.setKey(new SupportingNodeKey(deviceid, topoid)); trans.put(LogicalDatastoreType.OPERATIONAL, suplNodeIid, suplNodeBuilder.build(), true); CheckedFuture<Void, TransactionCommitFailedException> future = trans.submit(); return Futures.transform(future, new AsyncFunction<Void, RpcResult<Void>>() { @SuppressWarnings("unchecked") @Override public ListenableFuture<RpcResult<Void>> apply(Void submitResult) throws Exception { fabricObj.notifyDeviceAdded((InstanceIdentifier<Node>) device.getValue(), role); return Futures.immediateFuture(result); } }); }
From source file:org.opendaylight.vbd.impl.VbdBridgeDomain.java
private ListenableFuture<List<InstanceIdentifier<Link>>> findPrunableLinks( final KeyedInstanceIdentifier<Node, NodeKey> vbdNode) { LOG.debug("Finding prunable links for node {}", PPrint.node(vbdNode)); final NodeId deletedNodeId = vbdNode.getKey().getNodeId(); // read the topology to find the links final ReadOnlyTransaction rTx = chain.newReadOnlyTransaction(); return Futures.transform(rTx.read(LogicalDatastoreType.OPERATIONAL, topology), new AsyncFunction<Optional<Topology>, List<InstanceIdentifier<Link>>>() { @Override/*www . j av a 2s . c o m*/ public ListenableFuture<List<InstanceIdentifier<Link>>> apply( @Nonnull Optional<Topology> result) throws Exception { final List<InstanceIdentifier<Link>> prunableLinks = new ArrayList<>(); if (result.isPresent()) { final List<Link> links = result.get().getLink(); for (final Link link : links) { // check if this link's source or destination matches the deleted node final Source src = link.getSource(); final Destination dst = link.getDestination(); if (src.getSourceNode().equals(deletedNodeId)) { LOG.debug("Link {} src matches deleted node id {}, adding to prunable list", link.getLinkId(), deletedNodeId); final InstanceIdentifier<Link> linkIID = topology.child(Link.class, link.getKey()); prunableLinks.add(linkIID); } else if (dst.getDestNode().equals(deletedNodeId)) { LOG.debug("Link {} dst matches deleted node id {}, adding to prunable list", link.getLinkId(), deletedNodeId); final InstanceIdentifier<Link> linkIID = topology.child(Link.class, link.getKey()); prunableLinks.add(linkIID); } } } else { // result is null or not present LOG.warn("Tried to read virtual bridge topology {}, but got null or absent optional!", PPrint.topology(topology)); } return Futures.immediateFuture(prunableLinks); } }); }
From source file:org.opendaylight.faas.fabric.general.FabricServiceAPIProvider.java
@Override public Future<RpcResult<Void>> rmLogicalPort(RmLogicalPortInput input) { FabricId fabricId = input.getFabricId(); NodeId deviceId = input.getLogicalDevice(); TpId tpid = input.getTpId();/*from ww w . ja v a 2 s .c o m*/ final InstanceIdentifier<TerminationPoint> tpIId = MdSalUtils.createLogicPortIId(fabricId, deviceId, tpid); WriteTransaction trans = dataBroker.newWriteOnlyTransaction(); trans.delete(LogicalDatastoreType.OPERATIONAL, tpIId); return Futures.transform(trans.submit(), new AsyncFunction<Void, RpcResult<Void>>() { @Override public ListenableFuture<RpcResult<Void>> apply(Void submitResult) throws Exception { return Futures.immediateFuture(RpcResultBuilder.<Void>success().build()); } }, executor); }
From source file:org.opendaylight.openflowplugin.applications.frsync.impl.strategy.SyncPlanPushStrategyIncrementalImpl.java
ListenableFuture<RpcResult<Void>> addMissingGroups(final NodeId nodeId, final InstanceIdentifier<FlowCapableNode> nodeIdent, final List<ItemSyncBox<Group>> groupsAddPlan, final SyncCrudCounters counters) { if (groupsAddPlan.isEmpty()) { LOG.trace("no groups configured for node: {} -> SKIPPING", nodeId.getValue()); return RpcResultBuilder.<Void>success().buildFuture(); }/* ww w . j a v a 2 s .co m*/ ListenableFuture<RpcResult<Void>> chainedResult; try { if (!groupsAddPlan.isEmpty()) { final CrudCounts groupCrudCounts = counters.getGroupCrudCounts(); groupCrudCounts.setAdded(ReconcileUtil.countTotalPushed(groupsAddPlan)); groupCrudCounts.setUpdated(ReconcileUtil.countTotalUpdated(groupsAddPlan)); if (LOG.isDebugEnabled()) { LOG.debug("adding groups: planSteps={}, toAddTotal={}, toUpdateTotal={}", groupsAddPlan.size(), groupCrudCounts.getAdded(), groupCrudCounts.getUpdated()); } chainedResult = flushAddGroupPortionAndBarrier(nodeIdent, groupsAddPlan.get(0)); for (final ItemSyncBox<Group> groupsPortion : Iterables.skip(groupsAddPlan, 1)) { chainedResult = Futures.transform(chainedResult, new AsyncFunction<RpcResult<Void>, RpcResult<Void>>() { @Override public ListenableFuture<RpcResult<Void>> apply(final RpcResult<Void> input) throws Exception { final ListenableFuture<RpcResult<Void>> result; if (input.isSuccessful()) { result = flushAddGroupPortionAndBarrier(nodeIdent, groupsPortion); } else { // pass through original unsuccessful rpcResult result = Futures.immediateFuture(input); } return result; } }); } } else { chainedResult = RpcResultBuilder.<Void>success().buildFuture(); } } catch (IllegalStateException e) { chainedResult = RpcResultBuilder.<Void>failed() .withError(RpcError.ErrorType.APPLICATION, "failed to add missing groups", e).buildFuture(); } return chainedResult; }
From source file:com.microsoft.intellij.helpers.o365.Office365ManagerImpl.java
@Override @NotNull//from w w w . ja v a 2s. com public ListenableFuture<List<ServicePrincipal>> getO365ServicePrincipalsForApp( @NotNull final Application application) { return requestFutureWithToken(new RequestCallback<ListenableFuture<List<ServicePrincipal>>>() { @Override public ListenableFuture<List<ServicePrincipal>> execute() throws Throwable { @SuppressWarnings("unchecked") ListenableFuture<List<ServicePrincipal>>[] futures = new ListenableFuture[] { getServicePrincipalsForApp(application), getServicePrincipalsForO365() }; final String[] filterAppIds = new String[] { ServiceAppIds.SHARE_POINT, ServiceAppIds.EXCHANGE, ServiceAppIds.AZURE_ACTIVE_DIRECTORY }; return Futures.transform(Futures.allAsList(futures), new AsyncFunction<List<List<ServicePrincipal>>, List<ServicePrincipal>>() { @Override public ListenableFuture<List<ServicePrincipal>> apply( List<List<ServicePrincipal>> lists) throws Exception { // According to Guava documentation for allAsList, the list of results is in the // same order as the input list. So first we get the service principals for the app // filtered for O365 and Graph service principals. final List<ServicePrincipal> servicePrincipalsForApp = Lists.newArrayList( Iterables.filter(lists.get(0), new Predicate<ServicePrincipal>() { @Override public boolean apply(final ServicePrincipal servicePrincipal) { // we are only interested in O365 and Graph service principals return Iterators.any(Iterators.forArray(filterAppIds), new Predicate<String>() { @Override public boolean apply(String appId) { return appId.equals(servicePrincipal.getappId()); } }); } })); // next we get the O365/graph service principals final List<ServicePrincipal> servicePrincipalsForO365 = lists.get(1); // then we add service principals from servicePrincipalsForO365 to servicePrincipalsForApp // where the service principal is not available in the latter Iterable<ServicePrincipal> servicePrincipalsToBeAdded = Iterables .filter(servicePrincipalsForO365, new Predicate<ServicePrincipal>() { @Override public boolean apply(ServicePrincipal servicePrincipal) { return !servicePrincipalsForApp.contains(servicePrincipal); } }); Iterables.addAll(servicePrincipalsForApp, servicePrincipalsToBeAdded); // assign the appid to the service principal and reset permissions on new service principals; // we do Lists.newArrayList calls below to create a copy of the service lists because Lists.transform // invokes the transformation function lazily and this causes problems for us; we force immediate // evaluation of our transfomer by copying the elements to a new list List<ServicePrincipal> servicePrincipals = Lists .newArrayList(Lists.transform(servicePrincipalsForApp, new Function<ServicePrincipal, ServicePrincipal>() { @Override public ServicePrincipal apply( ServicePrincipal servicePrincipal) { if (!servicePrincipal.getappId() .equals(application.getappId())) { servicePrincipal.setappId(application.getappId()); servicePrincipal.setoauth2Permissions( Lists.newArrayList(Lists.transform( servicePrincipal.getoauth2Permissions(), new Function<OAuth2Permission, OAuth2Permission>() { @Override public OAuth2Permission apply( OAuth2Permission oAuth2Permission) { oAuth2Permission .setisEnabled(false); return oAuth2Permission; } }))); } return servicePrincipal; } })); return Futures.immediateFuture(servicePrincipals); } }); } }); }
From source file:org.opendaylight.faas.fabric.general.FabricServiceAPIProvider.java
@Override public Future<RpcResult<CreateLogicalRouterOutput>> createLogicalRouter(final CreateLogicalRouterInput input) { final RpcResultBuilder<CreateLogicalRouterOutput> resultBuilder = RpcResultBuilder .<CreateLogicalRouterOutput>success(); final CreateLogicalRouterOutputBuilder outputBuilder = new CreateLogicalRouterOutputBuilder(); FabricId fabricId = input.getFabricId(); String name = input.getName(); final FabricInstance fabricObj = FabricInstanceCache.INSTANCE.retrieveFabric(fabricId); if (fabricObj == null) { return Futures.immediateFailedFuture( new IllegalArgumentException(String.format("fabric %s does not exist", fabricId))); }//from w w w.j av a 2 s . c o m final String uuid = UUID.randomUUID().toString(); final NodeId newNodeId = new NodeId(name == null ? uuid : name); final InstanceIdentifier<Node> newRouterIId = MdSalUtils.createNodeIId(fabricId.getValue(), newNodeId); NodeBuilder nodeBuilder = new NodeBuilder(); nodeBuilder.setKey(new NodeKey(newNodeId)); nodeBuilder.setNodeId(newNodeId); nodeBuilder.setSupportingNode(createDefaultSuplNode(fabricId)); LrAttributeBuilder lrAttr = new LrAttributeBuilder(); lrAttr.setName(name); lrAttr.setLrUuid(new Uuid(uuid)); fabricObj.buildLogicalRouter(newNodeId, lrAttr, input); LogicalRouterAugmentBuilder lrCtx = new LogicalRouterAugmentBuilder(); lrCtx.setLrAttribute(lrAttr.build()); nodeBuilder.addAugmentation(LogicalRouterAugment.class, lrCtx.build()); final Node lr = nodeBuilder.build(); WriteTransaction trans = dataBroker.newWriteOnlyTransaction(); trans.put(LogicalDatastoreType.OPERATIONAL, newRouterIId, lr, true); return Futures.transform(trans.submit(), new AsyncFunction<Void, RpcResult<CreateLogicalRouterOutput>>() { @Override public ListenableFuture<RpcResult<CreateLogicalRouterOutput>> apply(Void submitResult) throws Exception { outputBuilder.setLrUuid(new Uuid(uuid)); outputBuilder.setName(input.getName()); outputBuilder.setNodeId(newNodeId); fabricObj.notifyLogicRouterCreated(newNodeId, lr); return Futures.immediateFuture(resultBuilder.withResult(outputBuilder.build()).build()); } }, executor); }