List of usage examples for com.google.common.util.concurrent ListenableFuture get
V get() throws InterruptedException, ExecutionException;
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; }