X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsamples%2Fclustering-test-app%2Fprovider%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fclustering%2Fit%2Fprovider%2FCarEntryDataTreeCommitCohort.java;h=bd27bcf0dff30f114a70b65d200e5be119200c89;hb=dcc776a5e749d495a66e8753e123a1ddbd15d9c6;hp=270015956294336da2be6cc6c1763dc228a6e28a;hpb=7d53e7984cfbd69fdf78ad07112974aa3e56fc55;p=controller.git diff --git a/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/CarEntryDataTreeCommitCohort.java b/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/CarEntryDataTreeCommitCohort.java index 2700159562..bd27bcf0df 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/CarEntryDataTreeCommitCohort.java +++ b/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/CarEntryDataTreeCommitCohort.java @@ -7,19 +7,19 @@ */ package org.opendaylight.controller.clustering.it.provider; -import com.google.common.base.Optional; import com.google.common.base.Verify; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.FluentFuture; +import java.util.Collection; +import java.util.Optional; import org.opendaylight.mdsal.common.api.DataValidationFailedException; import org.opendaylight.mdsal.common.api.PostCanCommitStep; import org.opendaylight.mdsal.dom.api.DOMDataTreeCandidate; import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohort; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.sal.clustering.it.car.rev140818.Cars; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -40,42 +40,43 @@ public class CarEntryDataTreeCommitCohort implements DOMDataTreeCommitCohort { private static final NodeIdentifier YEAR_NODE_ID = new NodeIdentifier(YEAR_QNAME); @Override - public CheckedFuture canCommit(final Object txId, - final DOMDataTreeCandidate candidate, final SchemaContext ctx) { + public FluentFuture canCommit(final Object txId, final SchemaContext ctx, + final Collection candidates) { - // Simple data validation - verify the year, if present, is >= 1990 + for (DOMDataTreeCandidate candidate : candidates) { + // Simple data validation - verify the year, if present, is >= 1990 - final DataTreeCandidateNode rootNode = candidate.getRootNode(); - final Optional> dataAfter = rootNode.getDataAfter(); + final DataTreeCandidateNode rootNode = candidate.getRootNode(); + final Optional dataAfter = rootNode.getDataAfter(); - LOG.info("In canCommit: modificationType: {}, dataBefore: {}, dataAfter: {}", rootNode.getModificationType(), - rootNode.getDataBefore(), dataAfter); + LOG.info("In canCommit: modificationType: {}, dataBefore: {}, dataAfter: {}", + rootNode.getModificationType(), rootNode.getDataBefore(), dataAfter); - // Note: we don't want to process DELETE modifications but we don't need to explicitly check the - // ModificationType because dataAfter will not be present. Also dataAfter *should* always contain a - // MapEntryNode but we verify anyway. - if (dataAfter.isPresent()) { - final NormalizedNode normalizedNode = dataAfter.get(); - Verify.verify(normalizedNode instanceof DataContainerNode, "Expected type DataContainerNode, actual was %s", - normalizedNode.getClass()); - DataContainerNode entryNode = (DataContainerNode) normalizedNode; - final Optional> possibleYear = - entryNode.getChild(YEAR_NODE_ID); - if (possibleYear.isPresent()) { - final Number year = (Number) possibleYear.get().getValue(); + // Note: we don't want to process DELETE modifications but we don't need to explicitly check the + // ModificationType because dataAfter will not be present. Also dataAfter *should* always contain a + // MapEntryNode but we verify anyway. + if (dataAfter.isPresent()) { + final NormalizedNode normalizedNode = dataAfter.get(); + Verify.verify(normalizedNode instanceof DataContainerNode, + "Expected type DataContainerNode, actual was %s", normalizedNode.getClass()); + DataContainerNode entryNode = (DataContainerNode) normalizedNode; + final Optional possibleYear = entryNode.findChildByArg(YEAR_NODE_ID); + if (possibleYear.isPresent()) { + final Number year = (Number) possibleYear.get().body(); - LOG.info("year is {}", year); + LOG.info("year is {}", year); - if (!(year.longValue() >= 1990)) { - return Futures.immediateFailedCheckedFuture(new DataValidationFailedException( - DOMDataTreeIdentifier.class, candidate.getRootPath(), + if ((year.longValue() < 1990)) { + return FluentFutures.immediateFailedFluentFuture(new DataValidationFailedException( + DOMDataTreeIdentifier.class, candidate.getRootPath(), String.format("Invalid year %d - year must be >= 1990", year))); + } } } } // Return the noop PostCanCommitStep as we're only validating input data and not participating in the // remaining 3PC stages (pre-commit and commit). - return PostCanCommitStep.NOOP_SUCCESS_FUTURE; + return PostCanCommitStep.NOOP_SUCCESSFUL_FUTURE; } }