X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-inmemory-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fstore%2Finmemory%2FInMemoryDOMStoreThreePhaseCommitCohort.java;h=ef1a61859134db94e985f4e7f8e8907662f1b4e2;hb=5e09dedf6a5423744d9d56a464adf3664459db6d;hp=6f16abb33d3c010b352d129aeac7df7661d5f668;hpb=0f351bbc28ddf2cddfe30c8d018646d81953fa17;p=mdsal.git diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreThreePhaseCommitCohort.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreThreePhaseCommitCohort.java index 6f16abb33d..ef1a618591 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreThreePhaseCommitCohort.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreThreePhaseCommitCohort.java @@ -9,39 +9,44 @@ package org.opendaylight.mdsal.dom.store.inmemory; import static com.google.common.base.Preconditions.checkState; +import static java.util.Objects.requireNonNull; -import com.google.common.base.Preconditions; +import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.mdsal.common.api.OptimisticLockFailedException; import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.mdsal.dom.spi.store.AbstractDOMStoreTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction; -import org.opendaylight.yangtools.yang.data.api.schema.tree.ConflictingModificationAppliedException; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; +import org.opendaylight.yangtools.yang.common.Empty; +import org.opendaylight.yangtools.yang.data.tree.api.ConflictingModificationAppliedException; +import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; +import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModification; +import org.opendaylight.yangtools.yang.data.tree.api.DataValidationFailedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; class InMemoryDOMStoreThreePhaseCommitCohort implements DOMStoreThreePhaseCommitCohort { private static final Logger LOG = LoggerFactory.getLogger(InMemoryDOMStoreThreePhaseCommitCohort.class); - private static final ListenableFuture SUCCESSFUL_FUTURE = Futures.immediateFuture(null); + private static final ListenableFuture SUCCESSFUL_FUTURE = Futures.immediateFuture(Empty.value()); private static final ListenableFuture CAN_COMMIT_FUTURE = Futures.immediateFuture(Boolean.TRUE); + private final SnapshotBackedWriteTransaction transaction; private final DataTreeModification modification; private final InMemoryDOMDataStore store; - private DataTreeCandidate candidate; private final Exception operationError; + @VisibleForTesting + DataTreeCandidate candidate; + InMemoryDOMStoreThreePhaseCommitCohort(final InMemoryDOMDataStore store, - final SnapshotBackedWriteTransaction writeTransaction, - final DataTreeModification modification, - final Exception operationError) { - this.transaction = Preconditions.checkNotNull(writeTransaction); - this.modification = Preconditions.checkNotNull(modification); - this.store = Preconditions.checkNotNull(store); + final SnapshotBackedWriteTransaction transaction, final DataTreeModification modification, + final Exception operationError) { + this.transaction = requireNonNull(transaction); + this.modification = requireNonNull(modification); + this.store = requireNonNull(store); this.operationError = operationError; } @@ -88,7 +93,7 @@ class InMemoryDOMStoreThreePhaseCommitCohort implements DOMStoreThreePhaseCommit @SuppressWarnings("checkstyle:IllegalCatch") @Override - public final ListenableFuture preCommit() { + public final ListenableFuture preCommit() { try { candidate = store.prepare(modification); return SUCCESSFUL_FUTURE; @@ -99,7 +104,7 @@ class InMemoryDOMStoreThreePhaseCommitCohort implements DOMStoreThreePhaseCommit } @Override - public final ListenableFuture abort() { + public final ListenableFuture abort() { candidate = null; return SUCCESSFUL_FUTURE; } @@ -109,15 +114,12 @@ class InMemoryDOMStoreThreePhaseCommitCohort implements DOMStoreThreePhaseCommit } @Override - public ListenableFuture commit() { + public ListenableFuture commit() { checkState(candidate != null, "Proposed subtree must be computed"); - /* - * The commit has to occur atomically with regard to listener - * registrations. - */ + // The commit has to occur atomically with regard to listener registrations. store.commit(candidate); - return SUCCESSFUL_FUTURE; + return CommitInfo.emptyFluentFuture(); } }