Example usage for com.google.common.util.concurrent ListenableFuture get

List of usage examples for com.google.common.util.concurrent ListenableFuture get

Introduction

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

Prototype

V get() throws InterruptedException, ExecutionException;

Source Link

Document

Waits if necessary for the computation to complete, and then retrieves its result.

Usage

From source file:org.opendaylight.centinel.impl.CentinelImpl.java

/** 
 *    delete Alert Message Count Rule in configurational data store. 
 * /*from   ww  w.j a  va2 s.co  m*/
 */

@Override
public Future<RpcResult<DeleteAlertMessageCountRuleOutput>> deleteAlertMessageCountRule(
        DeleteAlertMessageCountRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<DeleteAlertMessageCountRuleOutput>> futureResult = SettableFuture.create();
    LOG.info("DeleteAlertMessageCountRuleOutput: " + input);
    final DeleteAlertMessageCountRuleOutputBuilder deleteAlertMessageCountRuleOutputBuilder = new DeleteAlertMessageCountRuleOutputBuilder();
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountOperator(input.getMessageCountOperator());
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountCount(input.getMessageCountCount());
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountGrace(input.getMessageCountGrace());
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountBacklog(input.getMessageCountBacklog());
    deleteAlertMessageCountRuleOutputBuilder.setRuleID(input.getRuleID());
    deleteAlertMessageCountRuleOutputBuilder.setNodeType(input.getNodeType());
    deleteAlertMessageCountRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier());
    deleteAlertMessageCountRuleOutputBuilder.setStreamID(input.getStreamID());
    deleteAlertMessageCountRuleOutputBuilder.setTimeStamp(input.getTimeStamp());
    deleteAlertMessageCountRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier());

    ListenableFuture<Optional<AlertMessageCountRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertMessageCountRuleRecordId);

    ListenableFuture<Optional<AlertMessageCountRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId);

    String configId = null;

    try {

        AlertMessageCountRuleRecord operationalRecord = readFutureOperational.get().get();
        List<StreamAlertMessageCountRuleList> streamAlertRuleList = new ArrayList<StreamAlertMessageCountRuleList>();

        if (!operationalRecord.getStreamAlertMessageCountRuleList().isEmpty()) {

            streamAlertRuleList = operationalRecord.getStreamAlertMessageCountRuleList();
            Iterator<StreamAlertMessageCountRuleList> itearator = streamAlertRuleList.iterator();

            StreamAlertMessageCountRuleList operationalObject = null;

            while (itearator.hasNext()) {

                operationalObject = itearator.next();
                if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                        && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {

                    configId = operationalObject.getConfigID();

                }
            }

        }

    } catch (InterruptedException | ExecutionException e) {

        futureResult.set(RpcResultBuilder.<DeleteAlertMessageCountRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;
    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            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();
                        StreamAlertMessageCountRuleList configObject = null;
                        Iterator<StreamAlertMessageCountRuleList> iterator = streamAlertRuleList.iterator();

                        while (iterator.hasNext()) {

                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {

                                tx.delete(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId
                                        .child(StreamAlertMessageCountRuleList.class, configObject.getKey()));

                            }
                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {
        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder.<DeleteAlertMessageCountRuleOutput>success(
                    deleteAlertMessageCountRuleOutputBuilder.build()).build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.debug("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<DeleteAlertMessageCountRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}

From source file:org.opendaylight.centinel.impl.CentinelImpl.java

/** 
 *    delete alert field Content rule in configurational data store. 
 * /* w ww.j a v  a  2s.c  o m*/
 */

@Override
public Future<RpcResult<DeleteAlertFieldContentRuleOutput>> deleteAlertFieldContentRule(
        DeleteAlertFieldContentRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<DeleteAlertFieldContentRuleOutput>> futureResult = SettableFuture.create();
    LOG.info("DeleteAlertFieldContentRuleOutput: " + input);
    final DeleteAlertFieldContentRuleOutputBuilder deleteAlertFieldContentRuleOutputBuilder = new DeleteAlertFieldContentRuleOutputBuilder();
    deleteAlertFieldContentRuleOutputBuilder.setFieldContentBacklog(input.getFieldContentBacklog());
    deleteAlertFieldContentRuleOutputBuilder
            .setFieldContentCompareToValue(input.getFieldContentCompareToValue());
    deleteAlertFieldContentRuleOutputBuilder.setFieldContentField(input.getFieldContentField());
    deleteAlertFieldContentRuleOutputBuilder.setFieldContentGrace(input.getFieldContentGrace());
    deleteAlertFieldContentRuleOutputBuilder.setRuleID(input.getRuleID());
    deleteAlertFieldContentRuleOutputBuilder.setNodeType(input.getNodeType());
    deleteAlertFieldContentRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier());
    deleteAlertFieldContentRuleOutputBuilder.setStreamID(input.getStreamID());
    deleteAlertFieldContentRuleOutputBuilder.setTimeStamp(input.getTimeStamp());
    deleteAlertFieldContentRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier());

    ListenableFuture<Optional<AlertFieldContentRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertFeildContentRuleRecordId);

    ListenableFuture<Optional<AlertFieldContentRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertFeildContentRuleRecordId);

    String configId = null;

    try {

        AlertFieldContentRuleRecord operationalRecord = readFutureOperational.get().get();
        List<StreamAlertFieldContentRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldContentRuleList>();

        if (!operationalRecord.getStreamAlertFieldContentRuleList().isEmpty()) {

            streamAlertRuleList = operationalRecord.getStreamAlertFieldContentRuleList();
            Iterator<StreamAlertFieldContentRuleList> itearator = streamAlertRuleList.iterator();

            StreamAlertFieldContentRuleList operationalObject = null;

            while (itearator.hasNext()) {

                operationalObject = itearator.next();
                if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                        && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {

                    configId = operationalObject.getConfigID();

                }
            }

        }

    } catch (InterruptedException | ExecutionException e) {

        futureResult.set(RpcResultBuilder.<DeleteAlertFieldContentRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;
    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            new AsyncFunction<Optional<AlertFieldContentRuleRecord>, Void>() {

                @Override
                public ListenableFuture<Void> apply(
                        final Optional<AlertFieldContentRuleRecord> alertFieldContentRuleRecord)
                        throws Exception {

                    List<StreamAlertFieldContentRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldContentRuleList>();

                    if (alertFieldContentRuleRecord.isPresent()) {

                        streamAlertRuleList = alertFieldContentRuleRecord.get()
                                .getStreamAlertFieldContentRuleList();
                        StreamAlertFieldContentRuleList configObject = null;
                        Iterator<StreamAlertFieldContentRuleList> iterator = streamAlertRuleList.iterator();

                        while (iterator.hasNext()) {

                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {

                                tx.delete(LogicalDatastoreType.CONFIGURATION, alertFeildContentRuleRecordId
                                        .child(StreamAlertFieldContentRuleList.class, configObject.getKey()));

                            }
                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {
        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder.<DeleteAlertFieldContentRuleOutput>success(
                    deleteAlertFieldContentRuleOutputBuilder.build()).build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.debug("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<DeleteAlertFieldContentRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}

From source file:org.opendaylight.centinel.impl.CentinelImpl.java

/** 
 *    Update Alert Message Count Rule in configurational data store. 
 * //from w w w . j  a v a  2  s  .  c o  m
 */

@Override
public Future<RpcResult<UpdateAlertMessageCountRuleOutput>> updateAlertMessageCountRule(
        final UpdateAlertMessageCountRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<UpdateAlertMessageCountRuleOutput>> futureResult = SettableFuture.create();
    LOG.info("updateAlertMessageCountRule: " + input);
    final UpdateAlertMessageCountRuleOutputBuilder updateAlertMessageCountRuleOutputBuilder = new UpdateAlertMessageCountRuleOutputBuilder();
    updateAlertMessageCountRuleOutputBuilder.setMessageCountOperator(input.getMessageCountOperator());
    updateAlertMessageCountRuleOutputBuilder.setMessageCountCount(input.getMessageCountCount());
    updateAlertMessageCountRuleOutputBuilder.setMessageCountGrace(input.getMessageCountGrace());
    updateAlertMessageCountRuleOutputBuilder.setMessageCountBacklog(input.getMessageCountBacklog());
    updateAlertMessageCountRuleOutputBuilder.setRuleID(input.getRuleID());
    updateAlertMessageCountRuleOutputBuilder.setNodeType(input.getNodeType());
    updateAlertMessageCountRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier());
    updateAlertMessageCountRuleOutputBuilder.setStreamID(input.getStreamID());
    updateAlertMessageCountRuleOutputBuilder.setTimeStamp(input.getTimeStamp());
    updateAlertMessageCountRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier());

    ListenableFuture<Optional<AlertMessageCountRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertMessageCountRuleRecordId);

    ListenableFuture<Optional<AlertMessageCountRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId);

    String configId = null;

    try {

        AlertMessageCountRuleRecord operationalRecord = readFutureOperational.get().get();
        List<StreamAlertMessageCountRuleList> streamAlertRuleList = new ArrayList<StreamAlertMessageCountRuleList>();

        if (!operationalRecord.getStreamAlertMessageCountRuleList().isEmpty()) {

            streamAlertRuleList = operationalRecord.getStreamAlertMessageCountRuleList();
            Iterator<StreamAlertMessageCountRuleList> itearator = streamAlertRuleList.iterator();

            StreamAlertMessageCountRuleList operationalObject = null;

            while (itearator.hasNext()) {

                operationalObject = itearator.next();
                if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                        && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {

                    configId = operationalObject.getConfigID();

                }
            }

        }

    } catch (InterruptedException | ExecutionException e) {

        futureResult.set(RpcResultBuilder.<UpdateAlertMessageCountRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;

    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            new AsyncFunction<Optional<AlertMessageCountRuleRecord>, Void>() {

                @Override
                public ListenableFuture<Void> apply(
                        final Optional<AlertMessageCountRuleRecord> alertMessageCountRuleRecord)
                        throws Exception {

                    List<StreamAlertMessageCountRuleList> streamAlertRuleList = new ArrayList<StreamAlertMessageCountRuleList>();
                    List<StreamAlertMessageCountRuleList> updatedStreamAlertRuleList = new ArrayList<StreamAlertMessageCountRuleList>();

                    if (alertMessageCountRuleRecord.isPresent()) {

                        streamAlertRuleList = alertMessageCountRuleRecord.get()
                                .getStreamAlertMessageCountRuleList();
                        StreamAlertMessageCountRuleList configObject = null;
                        Iterator<StreamAlertMessageCountRuleList> iterator = streamAlertRuleList.iterator();

                        while (iterator.hasNext()) {

                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {

                                updatedStreamAlertRuleList
                                        .add(buildUpdateAlertMessageCountRuleRecord(input, configObject));
                                tx.merge(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId,
                                        new AlertMessageCountRuleRecordBuilder()
                                                .setStreamAlertMessageCountRuleList(updatedStreamAlertRuleList)
                                                .build());

                            }
                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {
        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder.<UpdateAlertMessageCountRuleOutput>success(
                    updateAlertMessageCountRuleOutputBuilder.build()).build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.debug("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<UpdateAlertMessageCountRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}

From source file:org.opendaylight.netvirt.vpnmanager.VpnInterfaceManager.java

@SuppressWarnings("checkstyle:IllegalCatch")
@Override/*from   ww  w .  j  a  v a  2  s.  c o m*/
public void remove(InstanceIdentifier<VpnInterface> identifier, VpnInterface vpnInterface) {
    LOG.trace("Remove event - key: {}, value: {}", identifier, vpnInterface);
    LOG.info("VPN Interface remove event - intfName {}", vpnInterface.getName());
    removeInterfaceFromUnprocessedList(identifier, vpnInterface);

    final VpnInterfaceKey key = identifier.firstKeyOf(VpnInterface.class, VpnInterfaceKey.class);
    final String interfaceName = key.getName();
    BigInteger dpId = BigInteger.ZERO;

    Interface interfaceState = InterfaceUtils.getInterfaceStateFromOperDS(dataBroker, interfaceName);
    if (interfaceState != null) {
        try {
            dpId = InterfaceUtils.getDpIdFromInterface(interfaceState);
        } catch (Exception e) {
            LOG.error(
                    "Unable to retrieve dpnId from interface operational data store for interface {}. Fetching "
                            + "from vpn interface op data store. ",
                    interfaceName, e);
            dpId = BigInteger.ZERO;
        }

        final int ifIndex = interfaceState.getIfIndex();
        final BigInteger dpnId = dpId;
        DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance();
        dataStoreCoordinator.enqueueJob("VPNINTERFACE-" + interfaceName, () -> {
            WriteTransaction writeConfigTxn = dataBroker.newWriteOnlyTransaction();
            WriteTransaction writeOperTxn = dataBroker.newWriteOnlyTransaction();
            WriteTransaction writeInvTxn = dataBroker.newWriteOnlyTransaction();
            List<ListenableFuture<Void>> futures = new ArrayList<>();

            InstanceIdentifier<VpnInterface> interfaceId = VpnUtil.getVpnInterfaceIdentifier(interfaceName);
            final Optional<VpnInterface> optVpnInterface = VpnUtil.read(dataBroker,
                    LogicalDatastoreType.OPERATIONAL, interfaceId);
            if (optVpnInterface.isPresent()) {
                VpnInterface vpnOpInterface = optVpnInterface.get();
                processVpnInterfaceDown(dpnId.equals(BigInteger.ZERO) ? vpnOpInterface.getDpnId() : dpnId,
                        interfaceName, ifIndex, false, true, writeConfigTxn, writeOperTxn, writeInvTxn,
                        interfaceState);
                ListenableFuture<Void> operFuture = writeOperTxn.submit();
                try {
                    operFuture.get();
                } catch (ExecutionException e) {
                    LOG.error("Exception encountered while submitting operational future for remove "
                            + "VpnInterface {}: {}", vpnInterface.getName(), e);
                    return null;
                }
                futures.add(writeConfigTxn.submit());
                futures.add(writeInvTxn.submit());
            } else {
                LOG.warn("VPN interface {} was unavailable in operational data store to handle remove event",
                        interfaceName);
            }
            return futures;
        });

    } else if (Boolean.TRUE.equals(vpnInterface.isIsRouterInterface())) {
        DataStoreJobCoordinator dataStoreCoordinator = DataStoreJobCoordinator.getInstance();
        dataStoreCoordinator.enqueueJob("VPNINTERFACE-" + vpnInterface.getName(), () -> {
            WriteTransaction writeConfigTxn = dataBroker.newWriteOnlyTransaction();
            deleteFibEntryForRouterInterface(vpnInterface, writeConfigTxn);
            List<ListenableFuture<Void>> futures = new ArrayList<>();
            futures.add(writeConfigTxn.submit());
            return futures;
        });
    } else {
        LOG.warn("Handling removal of VPN interface {} skipped as interfaceState is not available",
                interfaceName);
    }
}

From source file:org.opendaylight.centinel.impl.CentinelAlertConditionImpl.java

@Override
public Future<RpcResult<DeleteAlertFieldValueRuleOutput>> deleteAlertFieldValueRule(
        final DeleteAlertFieldValueRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<DeleteAlertFieldValueRuleOutput>> futureResult = SettableFuture.create();
    boolean idMatches = false;
    if (input.getStreamID() == null || input.getStreamID().isEmpty() || input.getStreamID().trim().isEmpty()
            || input.getRuleID() == null || input.getRuleID().isEmpty() || input.getRuleID().trim().isEmpty()) {
        LOG.debug("Invalid Parameters for DeleteAlertFieldValueRule");
        return Futures.immediateFailedCheckedFuture(
                new TransactionCommitFailedException("inalid-input", RpcResultBuilder.newError(
                        ErrorType.APPLICATION, "invalid-input", "StreamId and RuleId are mandatory fields")));
    }//from   www.  j  av a2 s.  c o  m
    final DeleteAlertFieldValueRuleOutputBuilder deleteAlertFieldValueRuleOutputBuilder = new DeleteAlertFieldValueRuleOutputBuilder();
    deleteAlertFieldValueRuleOutputBuilder
            .setStreamID("The alert with this" + input.getStreamID() + "is deleted");

    ListenableFuture<Optional<AlertFieldValueRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertFieldValueRuleRecordId);

    ListenableFuture<Optional<AlertFieldValueRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertFieldValueRuleRecordId);

    String configId = null;

    try {
        Optional<AlertFieldValueRuleRecord> record = readFutureOperational.get();
        if (record.isPresent()) {
            AlertFieldValueRuleRecord operationalRecord = readFutureOperational.get().get();
            List<StreamAlertFieldValueRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldValueRuleList>();

            if (!operationalRecord.getStreamAlertFieldValueRuleList().isEmpty()) {
                streamAlertRuleList = operationalRecord.getStreamAlertFieldValueRuleList();
                Iterator<StreamAlertFieldValueRuleList> itearator = streamAlertRuleList.iterator();
                StreamAlertFieldValueRuleList operationalObject = null;

                while (itearator.hasNext()) {
                    operationalObject = itearator.next();
                    if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                            && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {
                        configId = operationalObject.getConfigID();
                        idMatches = true;

                    }
                }
                if (!idMatches) {
                    return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException(
                            "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                                    "Invalid Stream/Rule id or The stream/rule is not present in operational data store")));

                }

            }

        } else {
            return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                    RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                            "Record is not present in operational data store")));
        }
    } catch (InterruptedException | ExecutionException e) {
        deleteAlertFieldValueRuleOutputBuilder
                .setStreamID("The alert with this" + input.getStreamID() + "is not present");
        futureResult.set(RpcResultBuilder.<DeleteAlertFieldValueRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;
    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            new AsyncFunction<Optional<AlertFieldValueRuleRecord>, Void>() {

                @Override
                public ListenableFuture<Void> apply(
                        final Optional<AlertFieldValueRuleRecord> alertFieldValueRuleRecord) throws Exception {

                    List<StreamAlertFieldValueRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldValueRuleList>();

                    if (alertFieldValueRuleRecord.isPresent()) {

                        streamAlertRuleList = alertFieldValueRuleRecord.get()
                                .getStreamAlertFieldValueRuleList();
                        StreamAlertFieldValueRuleList configObject = null;
                        Iterator<StreamAlertFieldValueRuleList> iterator = streamAlertRuleList.iterator();
                        while (iterator.hasNext()) {
                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {

                                tx.delete(LogicalDatastoreType.CONFIGURATION, alertFieldValueRuleRecordId
                                        .child(StreamAlertFieldValueRuleList.class, configObject.getKey()));

                            }
                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {

        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder
                    .<DeleteAlertFieldValueRuleOutput>success(deleteAlertFieldValueRuleOutputBuilder.build())
                    .build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.info("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<DeleteAlertFieldValueRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}

From source file:org.opendaylight.centinel.impl.CentinelAlertConditionImpl.java

@Override
public Future<RpcResult<UpdateAlertFieldValueRuleOutput>> updateAlertFieldValueRule(
        final UpdateAlertFieldValueRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<UpdateAlertFieldValueRuleOutput>> futureResult = SettableFuture.create();
    boolean idMatches = false;
    if (input.getStreamID() == null || input.getStreamID().isEmpty() || input.getStreamID().trim().isEmpty()
            || input.getRuleID() == null || input.getRuleID().isEmpty() || input.getRuleID().trim().isEmpty()) {
        LOG.debug("Invalid Parameters for UpdateAlertFieldValueRule");
        return Futures.immediateFailedCheckedFuture(
                new TransactionCommitFailedException("inalid-input", RpcResultBuilder.newError(
                        ErrorType.APPLICATION, "invalid-input", "StreamId and RuleId are mandatory fields")));
    }/*w ww  .j a v a2  s.  c  o  m*/
    final UpdateAlertFieldValueRuleOutputBuilder updateAlertFieldValueRuleOutputBuilder = new UpdateAlertFieldValueRuleOutputBuilder();
    updateAlertFieldValueRuleOutputBuilder.setFieldValueBacklog(input.getFieldValueBacklog());
    updateAlertFieldValueRuleOutputBuilder.setFieldValueField(input.getFieldValueField());
    updateAlertFieldValueRuleOutputBuilder.setFieldValueGrace(input.getFieldValueGrace());
    updateAlertFieldValueRuleOutputBuilder.setFieldValueThreshhold(input.getFieldValueThreshhold());
    updateAlertFieldValueRuleOutputBuilder.setFieldValueThreshholdType(input.getFieldValueThreshholdType());
    updateAlertFieldValueRuleOutputBuilder.setFieldValueThreshholdType(input.getFieldValueThreshholdType());
    updateAlertFieldValueRuleOutputBuilder.setRuleID(input.getRuleID());
    updateAlertFieldValueRuleOutputBuilder.setNodeType(input.getNodeType());
    updateAlertFieldValueRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier());
    updateAlertFieldValueRuleOutputBuilder.setStreamID(input.getStreamID());
    updateAlertFieldValueRuleOutputBuilder.setTimeStamp(input.getTimeStamp());
    updateAlertFieldValueRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier());
    updateAlertFieldValueRuleOutputBuilder.setAlertName(input.getAlertName());

    ListenableFuture<Optional<AlertFieldValueRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertFieldValueRuleRecordId);

    ListenableFuture<Optional<AlertFieldValueRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertFieldValueRuleRecordId);

    String configId = null;

    try {
        Optional<AlertFieldValueRuleRecord> record = readFutureOperational.get();
        if (record.isPresent()) {
            AlertFieldValueRuleRecord operationalRecord = readFutureOperational.get().get();
            List<StreamAlertFieldValueRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldValueRuleList>();

            if (!operationalRecord.getStreamAlertFieldValueRuleList().isEmpty()) {
                streamAlertRuleList = operationalRecord.getStreamAlertFieldValueRuleList();
                Iterator<StreamAlertFieldValueRuleList> itearator = streamAlertRuleList.iterator();
                StreamAlertFieldValueRuleList operationalObject = null;

                while (itearator.hasNext()) {
                    operationalObject = itearator.next();
                    if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                            && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {
                        configId = operationalObject.getConfigID();
                        idMatches = true;

                    }
                }
                if (!idMatches) {
                    return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException(
                            "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                                    "Invalid Stream/Rule id or The stream/rule is not present in operational data store")));

                }

            }

        } else {
            return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                    RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                            "Record is not present in operational data store")));
        }
    } catch (InterruptedException | ExecutionException e) {
        futureResult.set(RpcResultBuilder.<UpdateAlertFieldValueRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;
    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            new AsyncFunction<Optional<AlertFieldValueRuleRecord>, Void>() {

                @Override
                public ListenableFuture<Void> apply(
                        final Optional<AlertFieldValueRuleRecord> alertFieldValueRuleRecord) throws Exception {

                    List<StreamAlertFieldValueRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldValueRuleList>();
                    List<StreamAlertFieldValueRuleList> updatedStreamAlertRuleList = new ArrayList<StreamAlertFieldValueRuleList>();
                    if (alertFieldValueRuleRecord.isPresent()) {
                        streamAlertRuleList = alertFieldValueRuleRecord.get()
                                .getStreamAlertFieldValueRuleList();
                        StreamAlertFieldValueRuleList configObject = null;
                        Iterator<StreamAlertFieldValueRuleList> iterator = streamAlertRuleList.iterator();
                        while (iterator.hasNext()) {
                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {
                                updatedStreamAlertRuleList
                                        .add(buildUpdateAlertFieldValueRuleRecord(input, configObject));

                                tx.merge(LogicalDatastoreType.CONFIGURATION, alertFieldValueRuleRecordId,
                                        new AlertFieldValueRuleRecordBuilder()
                                                .setStreamAlertFieldValueRuleList(updatedStreamAlertRuleList)
                                                .build());

                            }
                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {

        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder
                    .<UpdateAlertFieldValueRuleOutput>success(updateAlertFieldValueRuleOutputBuilder.build())
                    .build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.info("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<UpdateAlertFieldValueRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}

From source file:org.waveprotocol.box.server.frontend.FragmentsFetcher.java

@Timed
boolean fetchWavelet(FragmentsBuffer buffer, ParticipantId loggedInUser,
        ListenableFuture<Supplement> supplementFuture, int minBlipReplySize, int maxBlipReplySize,
        int maxBlipCount) throws WaveServerException {
    WaveletName waveletName = buffer.getWaveletName();
    if (waveletProvider.checkExistence(waveletName)
            && waveletProvider.checkAccessPermission(waveletName, loggedInUser)) {
        Pair<HashedVersion, Long> versionAndTime = waveletProvider.getLastModifiedVersionAndTime(waveletName);
        HashedVersion lastModifiedVersion = versionAndTime.first;
        long lastModifiedTime = versionAndTime.second;
        buffer.setLastModifiedVersion(lastModifiedVersion);
        buffer.setLastModifiedTime(lastModifiedTime);
        if (lastModifiedVersion.getVersion() != 0) {
            if (IdUtil.isConversationalId(waveletName.waveletId)) {
                // First request obtains index and manifest documents of last version.
                FragmentsRequest firstRequest = new FragmentsRequest.Builder()
                        .addRange(SegmentId.INDEX_ID, lastModifiedVersion.getVersion())
                        .addRange(SegmentId.MANIFEST_ID, lastModifiedVersion.getVersion()).build();
                fetchFragmentsRequest(buffer, firstRequest);
                Interval indexInterval = buffer.getIntervals().get(SegmentId.INDEX_ID);
                Interval manifestInterval = buffer.getIntervals().get(SegmentId.MANIFEST_ID);
                buffer.removeSegment(SegmentId.MANIFEST_ID);
                if (manifestInterval != null) {
                    Supplement supplement = null;
                    if (supplementFuture != null) {
                        Timer timer = Timing.start("Waiting for supplement");
                        try {
                            supplement = supplementFuture.get();
                        } catch (InterruptedException | ExecutionException ex) {
                            throw new WaveServerException("Getting of supplement error", ex);
                        } finally {
                            Timing.stop(timer);
                        }/*from ww  w  . j a va  2  s  .  c  o m*/
                    }
                    String firstBlipId = null;
                    if (supplement != null) {
                        ScreenPosition screenPosition = supplement.getScreenPosition(waveletName.waveletId);
                        if (screenPosition != null) {
                            firstBlipId = screenPosition.getBlipId();
                        }
                    }
                    StartVersionHelper lookVersionHelper = new StartVersionHelper(supplement);
                    // Second request obtains obligatory segments in specified version range.
                    ReadableBlipSnapshot manifestSnapshot = (ReadableBlipSnapshot) manifestInterval
                            .getSnapshot(lastModifiedVersion.getVersion());
                    DocumentBasedManifest manifest = getManifest(manifestSnapshot.getContent());
                    ManifestBlip firstBlip = null;
                    if (firstBlipId != null) {
                        firstBlip = findBlip(manifest.getRootThread(), firstBlipId);
                    }
                    NavigatorImpl<ManifestThread, ManifestBlip> navigator = new NavigatorImpl();
                    navigator.init(new ManifestAdapter(manifest));
                    if (firstBlip == null) {
                        firstBlip = navigator.getFirstBlip(manifest.getRootThread());
                    }
                    ImmutableSet.Builder<SegmentId> segmentIds = ImmutableSet.<SegmentId>builder()
                            .add(SegmentId.PARTICIPANTS_ID, SegmentId.MANIFEST_ID, SegmentId.TAGS_ID);
                    if (maxBlipCount == -1 || maxBlipCount > 0 && firstBlip != null) {
                        segmentIds.add(SegmentId.ofBlipId(firstBlip.getId()));
                    }
                    ReadableIndexSnapshot indexSnapshot = (ReadableIndexSnapshot) indexInterval
                            .getSnapshot(lastModifiedVersion.getVersion());
                    Map<SegmentId, VersionRange> ranges = getRanges(waveletName.waveletId, segmentIds.build(),
                            indexSnapshot, lastModifiedVersion.getVersion(), lookVersionHelper);
                    FragmentsRequest secondRequest = new FragmentsRequest.Builder().addRanges(ranges).build();
                    fetchFragmentsRequest(buffer, secondRequest);
                    if (maxBlipCount > 1 && firstBlip != null) {
                        // Next requests obtains optional segments.
                        Set<SegmentId> attendantBlips = getAttendantBlips(navigator, firstBlip,
                                maxBlipCount - 1);
                        ranges = getRanges(waveletName.waveletId, attendantBlips, indexSnapshot,
                                lastModifiedVersion.getVersion(), lookVersionHelper);
                        if (!ranges.isEmpty()) {
                            fetchOptionalFragments(buffer, ranges,
                                    minBlipReplySize != -1 ? buffer.getSerializedSize() + minBlipReplySize : -1,
                                    maxBlipReplySize != -1 ? buffer.getSerializedSize() + maxBlipReplySize
                                            : -1);
                        }
                    }
                }
            }
            if (buffer.isEmpty()) {
                FragmentsRequest secondRequest = new FragmentsRequest.Builder()
                        .setStartVersion(lastModifiedVersion.getVersion())
                        .setEndVersion(lastModifiedVersion.getVersion()).build();
                fetchFragmentsRequest(buffer, secondRequest);
            }
            return true;
        }
    }
    return false;
}

From source file:org.opendaylight.centinel.impl.CentinelAlertConditionImpl.java

@Override
public Future<RpcResult<UpdateAlertFieldContentRuleOutput>> updateAlertFieldContentRule(
        final UpdateAlertFieldContentRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<UpdateAlertFieldContentRuleOutput>> futureResult = SettableFuture.create();
    boolean idMatches = false;
    if (input.getStreamID() == null || input.getStreamID().isEmpty() || input.getStreamID().trim().isEmpty()
            || input.getRuleID() == null || input.getRuleID().isEmpty() || input.getRuleID().trim().isEmpty()) {
        LOG.debug("Invalid Parameters for UpdateAlertFieldContentRule");
        return Futures.immediateFailedCheckedFuture(
                new TransactionCommitFailedException("inalid-input", RpcResultBuilder.newError(
                        ErrorType.APPLICATION, "invalid-input", "StreamId and RuleId are mandatory fields")));
    }/*from w  w w.  j  a  va2s  .com*/
    final UpdateAlertFieldContentRuleOutputBuilder updateAlertFieldContentRuleOutputBuilder = new UpdateAlertFieldContentRuleOutputBuilder();
    updateAlertFieldContentRuleOutputBuilder.setFieldContentBacklog(input.getFieldContentBacklog());
    updateAlertFieldContentRuleOutputBuilder
            .setFieldContentCompareToValue(input.getFieldContentCompareToValue());
    updateAlertFieldContentRuleOutputBuilder.setFieldContentField(input.getFieldContentField());
    updateAlertFieldContentRuleOutputBuilder.setFieldContentGrace(input.getFieldContentGrace());
    updateAlertFieldContentRuleOutputBuilder.setRuleID(input.getRuleID());
    updateAlertFieldContentRuleOutputBuilder.setNodeType(input.getNodeType());
    updateAlertFieldContentRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier());
    updateAlertFieldContentRuleOutputBuilder.setStreamID(input.getStreamID());
    updateAlertFieldContentRuleOutputBuilder.setTimeStamp(input.getTimeStamp());
    updateAlertFieldContentRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier());
    updateAlertFieldContentRuleOutputBuilder.setAlertName(input.getAlertName());

    ListenableFuture<Optional<AlertFieldContentRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertFeildContentRuleRecordId);

    ListenableFuture<Optional<AlertFieldContentRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertFeildContentRuleRecordId);

    String configId = null;

    try {
        Optional<AlertFieldContentRuleRecord> record = readFutureOperational.get();
        if (record.isPresent()) {
            AlertFieldContentRuleRecord operationalRecord = readFutureOperational.get().get();
            List<StreamAlertFieldContentRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldContentRuleList>();

            if (!operationalRecord.getStreamAlertFieldContentRuleList().isEmpty()) {
                streamAlertRuleList = operationalRecord.getStreamAlertFieldContentRuleList();
                Iterator<StreamAlertFieldContentRuleList> itearator = streamAlertRuleList.iterator();
                StreamAlertFieldContentRuleList operationalObject = null;

                while (itearator.hasNext()) {
                    operationalObject = itearator.next();
                    if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                            && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {
                        configId = operationalObject.getConfigID();
                        idMatches = true;

                    }
                }

                if (!idMatches) {
                    return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException(
                            "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                                    "Invalid Stream/Rule id or The stream/rule is not present in operational data store")));

                }

            }

        } else {
            return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                    RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                            "Record is not present in operational data store")));
        }

    } catch (InterruptedException | ExecutionException e) {
        futureResult.set(RpcResultBuilder.<UpdateAlertFieldContentRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;
    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            new AsyncFunction<Optional<AlertFieldContentRuleRecord>, Void>() {

                @Override
                public ListenableFuture<Void> apply(
                        final Optional<AlertFieldContentRuleRecord> alertFieldContentRuleRecord)
                        throws Exception {

                    List<StreamAlertFieldContentRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldContentRuleList>();
                    List<StreamAlertFieldContentRuleList> updatedStreamAlertRuleList = new ArrayList<StreamAlertFieldContentRuleList>();
                    if (alertFieldContentRuleRecord.isPresent()) {
                        streamAlertRuleList = alertFieldContentRuleRecord.get()
                                .getStreamAlertFieldContentRuleList();
                        StreamAlertFieldContentRuleList configObject = null;
                        Iterator<StreamAlertFieldContentRuleList> iterator = streamAlertRuleList.iterator();
                        while (iterator.hasNext()) {
                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {
                                updatedStreamAlertRuleList
                                        .add(buildUpdateAlertFieldContentRuleRecord(input, configObject));
                                tx.merge(LogicalDatastoreType.CONFIGURATION, alertFeildContentRuleRecordId,
                                        new AlertFieldContentRuleRecordBuilder()
                                                .setStreamAlertFieldContentRuleList(updatedStreamAlertRuleList)
                                                .build());

                            }

                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {
        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder.<UpdateAlertFieldContentRuleOutput>success(
                    updateAlertFieldContentRuleOutputBuilder.build()).build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.info("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<UpdateAlertFieldContentRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}

From source file:org.opendaylight.centinel.impl.CentinelAlertConditionImpl.java

@Override
public Future<RpcResult<DeleteAlertMessageCountRuleOutput>> deleteAlertMessageCountRule(
        DeleteAlertMessageCountRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<DeleteAlertMessageCountRuleOutput>> futureResult = SettableFuture.create();
    boolean idMatches = false;
    if (input.getStreamID() == null || input.getStreamID().isEmpty() || input.getStreamID().trim().isEmpty()
            || input.getRuleID() == null || input.getRuleID().isEmpty() || input.getRuleID().trim().isEmpty()) {
        LOG.debug("Invalid Parameters for DeleteAlertMessageCountRule");
        return Futures.immediateFailedCheckedFuture(
                new TransactionCommitFailedException("inalid-input", RpcResultBuilder.newError(
                        ErrorType.APPLICATION, "invalid-input", "StreamId and RuleId are mandatory fields")));
    }//from w  w w .j  a  va2s  . c  o m
    final DeleteAlertMessageCountRuleOutputBuilder deleteAlertMessageCountRuleOutputBuilder = new DeleteAlertMessageCountRuleOutputBuilder();
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountOperator(input.getMessageCountOperator());
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountCount(input.getMessageCountCount());
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountGrace(input.getMessageCountGrace());
    deleteAlertMessageCountRuleOutputBuilder.setMessageCountBacklog(input.getMessageCountBacklog());
    deleteAlertMessageCountRuleOutputBuilder.setRuleID(input.getRuleID());
    deleteAlertMessageCountRuleOutputBuilder.setNodeType(input.getNodeType());
    deleteAlertMessageCountRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier());
    deleteAlertMessageCountRuleOutputBuilder.setStreamID(input.getStreamID());
    deleteAlertMessageCountRuleOutputBuilder.setTimeStamp(input.getTimeStamp());
    deleteAlertMessageCountRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier());
    deleteAlertMessageCountRuleOutputBuilder.setAlertName(input.getAlertName());
    deleteAlertMessageCountRuleOutputBuilder.setConfigID(input.getConfigID());

    ListenableFuture<Optional<AlertMessageCountRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertMessageCountRuleRecordId);

    ListenableFuture<Optional<AlertMessageCountRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId);

    String configId = null;

    try {

        Optional<AlertMessageCountRuleRecord> record = readFutureOperational.get();
        if (record.isPresent()) {
            AlertMessageCountRuleRecord operationalRecord = readFutureOperational.get().get();

            List<StreamAlertMessageCountRuleList> streamAlertRuleList = new ArrayList<StreamAlertMessageCountRuleList>();

            if (!operationalRecord.getStreamAlertMessageCountRuleList().isEmpty()) {

                streamAlertRuleList = operationalRecord.getStreamAlertMessageCountRuleList();
                Iterator<StreamAlertMessageCountRuleList> itearator = streamAlertRuleList.iterator();

                StreamAlertMessageCountRuleList operationalObject = null;

                while (itearator.hasNext()) {

                    operationalObject = itearator.next();
                    if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                            && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {

                        configId = operationalObject.getConfigID();
                        idMatches = true;

                    }
                }
                if (!idMatches) {
                    return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException(
                            "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                                    "Invalid Stream/Rule id or The stream/rule is not present in operational data store")));

                }

            }

        } else {
            return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                    RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                            "Record is not present in operational data store")));
        }
    } catch (InterruptedException | ExecutionException e) {

        futureResult.set(RpcResultBuilder.<DeleteAlertMessageCountRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;
    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            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();
                        StreamAlertMessageCountRuleList configObject = null;
                        Iterator<StreamAlertMessageCountRuleList> iterator = streamAlertRuleList.iterator();

                        while (iterator.hasNext()) {

                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {

                                tx.delete(LogicalDatastoreType.CONFIGURATION, alertMessageCountRuleRecordId
                                        .child(StreamAlertMessageCountRuleList.class, configObject.getKey()));

                            }
                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {
        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder.<DeleteAlertMessageCountRuleOutput>success(
                    deleteAlertMessageCountRuleOutputBuilder.build()).build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.info("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<DeleteAlertMessageCountRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}

From source file:org.opendaylight.centinel.impl.CentinelAlertConditionImpl.java

@Override
public Future<RpcResult<DeleteAlertFieldContentRuleOutput>> deleteAlertFieldContentRule(
        DeleteAlertFieldContentRuleInput input) {
    final ReadWriteTransaction tx = dataProvider.newReadWriteTransaction();
    final SettableFuture<RpcResult<DeleteAlertFieldContentRuleOutput>> futureResult = SettableFuture.create();
    boolean idMatches = false;
    if (input.getStreamID() == null || input.getStreamID().isEmpty() || input.getStreamID().trim().isEmpty()
            || input.getRuleID() == null || input.getRuleID().isEmpty() || input.getRuleID().trim().isEmpty()) {
        LOG.debug("Invalid Parameters for DeleteAlertFieldContentRule");
        return Futures.immediateFailedCheckedFuture(
                new TransactionCommitFailedException("inalid-input", RpcResultBuilder.newError(
                        ErrorType.APPLICATION, "invalid-input", "StreamId and RuleId are mandatory fields")));
    }// w  w  w.  j  a va2 s  .c  o  m
    final DeleteAlertFieldContentRuleOutputBuilder deleteAlertFieldContentRuleOutputBuilder = new DeleteAlertFieldContentRuleOutputBuilder();
    deleteAlertFieldContentRuleOutputBuilder.setFieldContentBacklog(input.getFieldContentBacklog());
    deleteAlertFieldContentRuleOutputBuilder
            .setFieldContentCompareToValue(input.getFieldContentCompareToValue());
    deleteAlertFieldContentRuleOutputBuilder.setFieldContentField(input.getFieldContentField());
    deleteAlertFieldContentRuleOutputBuilder.setFieldContentGrace(input.getFieldContentGrace());
    deleteAlertFieldContentRuleOutputBuilder.setRuleTypeClassifier(input.getRuleTypeClassifier());
    deleteAlertFieldContentRuleOutputBuilder.setRuleID(input.getRuleID());
    deleteAlertFieldContentRuleOutputBuilder.setNodeType(input.getNodeType());
    deleteAlertFieldContentRuleOutputBuilder.setStreamID(input.getStreamID());
    deleteAlertFieldContentRuleOutputBuilder.setTimeStamp(input.getTimeStamp());
    deleteAlertFieldContentRuleOutputBuilder.setAlertTypeClassifier(input.getAlertTypeClassifier());
    deleteAlertFieldContentRuleOutputBuilder.setAlertName(input.getAlertName());
    deleteAlertFieldContentRuleOutputBuilder.setConfigID(input.getConfigID());

    ListenableFuture<Optional<AlertFieldContentRuleRecord>> readFutureOperational = tx
            .read(LogicalDatastoreType.OPERATIONAL, alertFeildContentRuleRecordId);

    ListenableFuture<Optional<AlertFieldContentRuleRecord>> readFutureConfigure = tx
            .read(LogicalDatastoreType.CONFIGURATION, alertFeildContentRuleRecordId);

    String configId = null;

    try {

        Optional<AlertFieldContentRuleRecord> record = readFutureOperational.get();
        if (record.isPresent()) {
            AlertFieldContentRuleRecord operationalRecord = readFutureOperational.get().get();
            List<StreamAlertFieldContentRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldContentRuleList>();

            if (!operationalRecord.getStreamAlertFieldContentRuleList().isEmpty()) {

                streamAlertRuleList = operationalRecord.getStreamAlertFieldContentRuleList();
                Iterator<StreamAlertFieldContentRuleList> itearator = streamAlertRuleList.iterator();

                StreamAlertFieldContentRuleList operationalObject = null;

                while (itearator.hasNext()) {

                    operationalObject = itearator.next();
                    if (operationalObject.getRuleID().equalsIgnoreCase(input.getRuleID())
                            && operationalObject.getStreamID().equalsIgnoreCase(input.getStreamID())) {

                        configId = operationalObject.getConfigID();
                        idMatches = true;

                    }
                }
                if (!idMatches) {
                    return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException(
                            "invalid-input", RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                                    "Invalid Stream/Rule id or The stream/rule is not present in operational data store")));

                }

            }

        } else {
            return Futures.immediateFailedCheckedFuture(new TransactionCommitFailedException("invalid-input",
                    RpcResultBuilder.newError(ErrorType.APPLICATION, "invalid-input",
                            "Record is not present in operational data store")));
        }
    } catch (InterruptedException | ExecutionException e) {

        futureResult.set(RpcResultBuilder.<DeleteAlertFieldContentRuleOutput>failed()
                .withRpcErrors(((TransactionCommitFailedException) e).getErrorList()).build());
        return futureResult;

    }
    final String configID = configId;
    final ListenableFuture<Void> commitFuture = Futures.transform(readFutureConfigure,
            new AsyncFunction<Optional<AlertFieldContentRuleRecord>, Void>() {

                @Override
                public ListenableFuture<Void> apply(
                        final Optional<AlertFieldContentRuleRecord> alertFieldContentRuleRecord)
                        throws Exception {

                    List<StreamAlertFieldContentRuleList> streamAlertRuleList = new ArrayList<StreamAlertFieldContentRuleList>();

                    if (alertFieldContentRuleRecord.isPresent()) {

                        streamAlertRuleList = alertFieldContentRuleRecord.get()
                                .getStreamAlertFieldContentRuleList();
                        StreamAlertFieldContentRuleList configObject = null;
                        Iterator<StreamAlertFieldContentRuleList> iterator = streamAlertRuleList.iterator();

                        while (iterator.hasNext()) {

                            configObject = iterator.next();

                            if (configObject.getConfigID().equalsIgnoreCase(configID)) {

                                tx.delete(LogicalDatastoreType.CONFIGURATION, alertFeildContentRuleRecordId
                                        .child(StreamAlertFieldContentRuleList.class, configObject.getKey()));

                            }
                        }

                    }

                    return tx.submit();
                }

            });
    Futures.addCallback(commitFuture, new FutureCallback<Void>() {
        @Override
        public void onSuccess(final Void result) {

            futureResult.set(RpcResultBuilder.<DeleteAlertFieldContentRuleOutput>success(
                    deleteAlertFieldContentRuleOutputBuilder.build()).build());
        }

        @Override
        public void onFailure(final Throwable ex) {

            LOG.info("Failed to commit Rule", ex);

            futureResult.set(RpcResultBuilder.<DeleteAlertFieldContentRuleOutput>failed()
                    .withRpcErrors(((TransactionCommitFailedException) ex).getErrorList()).build());

        }
    });

    return futureResult;
}