From: Robert Varga Date: Fri, 29 May 2020 19:17:19 +0000 (+0200) Subject: Promote ForeignShardThreePhaseCommitCohort to dom.spi X-Git-Tag: v6.0.1~4 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=9d64b4aedaf7b8ba84c60f04205daaa198656909;p=mdsal.git Promote ForeignShardThreePhaseCommitCohort to dom.spi This class is really a sharding SPI thing, promote it as a beta construct. This allows us to also promote AbstractShardModificationFactoryBuilder. Change-Id: I7d29ecbb691cefb79775d384898905a300e9af47 Signed-off-by: Robert Varga --- diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java index 078299b3f3..5fe1951979 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java @@ -22,6 +22,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor; import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardWriteTransaction; import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext; +import org.opendaylight.mdsal.dom.spi.shard.ForeignShardThreePhaseCommitCohort; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryShardDataModificationFactoryBuilder.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryShardDataModificationFactoryBuilder.java index e6a5aa2362..5b9478b139 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryShardDataModificationFactoryBuilder.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryShardDataModificationFactoryBuilder.java @@ -9,9 +9,10 @@ package org.opendaylight.mdsal.dom.store.inmemory; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; +import org.opendaylight.mdsal.dom.spi.shard.AbstractShardModificationFactoryBuilder; class InmemoryShardDataModificationFactoryBuilder - extends ShardDataModificationFactoryBuilder { + extends AbstractShardModificationFactoryBuilder { InmemoryShardDataModificationFactoryBuilder(final DOMDataTreeIdentifier root) { super(root); diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ShardDataModificationFactoryBuilder.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/AbstractShardModificationFactoryBuilder.java similarity index 82% rename from dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ShardDataModificationFactoryBuilder.java rename to dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/AbstractShardModificationFactoryBuilder.java index ff7c9724d9..9726aa71bd 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ShardDataModificationFactoryBuilder.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/AbstractShardModificationFactoryBuilder.java @@ -5,28 +5,26 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - -package org.opendaylight.mdsal.dom.store.inmemory; +package org.opendaylight.mdsal.dom.spi.shard; import static java.util.Objects.requireNonNull; +import com.google.common.annotations.Beta; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; -import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext; -import org.opendaylight.mdsal.dom.spi.shard.ModificationContextNodeBuilder; -import org.opendaylight.mdsal.dom.spi.shard.WriteableSubshardBoundaryNode; import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -public abstract class ShardDataModificationFactoryBuilder extends ModificationContextNodeBuilder +@Beta +public abstract class AbstractShardModificationFactoryBuilder extends ModificationContextNodeBuilder implements Builder { - protected final DOMDataTreeIdentifier root; protected final Map childShards = new HashMap<>(); + protected final DOMDataTreeIdentifier root; - public ShardDataModificationFactoryBuilder(final DOMDataTreeIdentifier root) { + public AbstractShardModificationFactoryBuilder(final DOMDataTreeIdentifier root) { this.root = requireNonNull(root); } @@ -39,6 +37,9 @@ public abstract class ShardDataModificationFactoryBuilder extends Modificatio childShards.put(prefix, value); } + @Override + public abstract T build(); + private void putNode(final YangInstanceIdentifier key, final WriteableSubshardBoundaryNode subshardNode) { final Iterator toBoundary = toRelative(key).getPathArguments().iterator(); if (toBoundary.hasNext()) { @@ -58,6 +59,4 @@ public abstract class ShardDataModificationFactoryBuilder extends Modificatio private YangInstanceIdentifier toRelative(final YangInstanceIdentifier key) { return key.relativeTo(root.getRootIdentifier()).get(); } - - public abstract T build(); } diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohort.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/ForeignShardThreePhaseCommitCohort.java similarity index 73% rename from dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohort.java rename to dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/ForeignShardThreePhaseCommitCohort.java index 7847924f0a..5981525d38 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohort.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/ForeignShardThreePhaseCommitCohort.java @@ -5,26 +5,22 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - -package org.opendaylight.mdsal.dom.store.inmemory; +package org.opendaylight.mdsal.dom.spi.shard; import static java.util.Objects.requireNonNull; -import com.google.common.util.concurrent.Futures; +import com.google.common.annotations.Beta; import com.google.common.util.concurrent.ListenableFuture; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; -import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +@Beta public class ForeignShardThreePhaseCommitCohort implements DOMStoreThreePhaseCommitCohort { - private static final Logger LOG = LoggerFactory.getLogger(ForeignShardThreePhaseCommitCohort.class); - private static final ListenableFuture SUCCESS_VALIDATE = Futures.immediateFuture(Boolean.TRUE); - private static final ListenableFuture SUCCESS_FUTURE = Futures.immediateFuture(null); - private final DOMDataTreeIdentifier prefix; private final ForeignShardModificationContext shard; @@ -37,25 +33,25 @@ public class ForeignShardThreePhaseCommitCohort implements DOMStoreThreePhaseCom @Override public ListenableFuture canCommit() { LOG.debug("Validating transaction on foreign shard {}", prefix); - return shard.isModified() ? shard.validate() : SUCCESS_VALIDATE; + return shard.isModified() ? shard.validate() : FluentFutures.immediateTrueFluentFuture(); } @Override public ListenableFuture preCommit() { LOG.debug("Preparing transaction on foreign shard {}", prefix); - return shard.isModified() ? shard.prepare() : SUCCESS_FUTURE; + return shard.isModified() ? shard.prepare() : FluentFutures.immediateNullFluentFuture(); } @Override public ListenableFuture abort() { LOG.debug("Aborting transaction of foreign shard {}", prefix); shard.closeForeignTransaction(); - return SUCCESS_FUTURE; + return FluentFutures.immediateNullFluentFuture(); } @Override public ListenableFuture commit() { LOG.debug("Submitting transaction on foreign shard {}", prefix); - return shard.isModified() ? shard.submit() : SUCCESS_FUTURE; + return shard.isModified() ? shard.submit() : FluentFutures.immediateNullFluentFuture(); } } \ No newline at end of file diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohortTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/ForeignShardThreePhaseCommitCohortTest.java similarity index 75% rename from dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohortTest.java rename to dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/ForeignShardThreePhaseCommitCohortTest.java index 5f2c183c02..8569e5c020 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/ForeignShardThreePhaseCommitCohortTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/ForeignShardThreePhaseCommitCohortTest.java @@ -5,25 +5,23 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.mdsal.dom.store.inmemory; +package org.opendaylight.mdsal.dom.spi.shard; -import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DOM_DATA_TREE_IDENTIFIER; -import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DOM_DATA_TREE_SHARD_PRODUCER; -import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DOM_DATA_TREE_SHARD_WRITE_TRANSACTION; -import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DOM_DATA_TREE_WRITE_CURSOR; -import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.resetMocks; +import static org.opendaylight.mdsal.dom.spi.shard.TestUtils.DOM_DATA_TREE_IDENTIFIER; +import static org.opendaylight.mdsal.dom.spi.shard.TestUtils.DOM_DATA_TREE_SHARD_PRODUCER; +import static org.opendaylight.mdsal.dom.spi.shard.TestUtils.DOM_DATA_TREE_SHARD_WRITE_TRANSACTION; +import static org.opendaylight.mdsal.dom.spi.shard.TestUtils.DOM_DATA_TREE_WRITE_CURSOR; +import static org.opendaylight.mdsal.dom.spi.shard.TestUtils.resetMocks; import org.junit.After; import org.junit.Before; import org.junit.Test; -import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext; public class ForeignShardThreePhaseCommitCohortTest { - @Before public void setUp() throws Exception { doNothing().when(DOM_DATA_TREE_WRITE_CURSOR).close(); @@ -55,7 +53,7 @@ public class ForeignShardThreePhaseCommitCohortTest { foreignShardThreePhaseCommitCohort.commit(); verify(DOM_DATA_TREE_SHARD_WRITE_TRANSACTION).commit(); - assertEquals(null, foreignShardThreePhaseCommitCohort.abort().get()); + assertNull(foreignShardThreePhaseCommitCohort.abort().get()); } @After