X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fbroker%2FShardedDOMTransactionChainAdapter.java;h=8ffa21b232ff256f5fae4a06f6c75ca920195cb8;hb=3495e8e67ee130cb83ce19b4b347d8eca5a1bb05;hp=e10c1e07c902fe9d1e55faa58fe7957f7ea81256;hpb=c241dcfa5322ac10810a1068ccd2eb57f6f2dbb2;p=mdsal.git diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMTransactionChainAdapter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMTransactionChainAdapter.java index e10c1e07c9..8ffa21b232 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMTransactionChainAdapter.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMTransactionChainAdapter.java @@ -5,10 +5,11 @@ * 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.broker; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkState; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ClassToInstanceMap; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; @@ -18,12 +19,8 @@ import java.util.Collections; import java.util.EnumMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import org.opendaylight.mdsal.common.api.AsyncTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.mdsal.common.api.TransactionChainListener; import org.opendaylight.mdsal.dom.api.DOMDataTreeCursorAwareTransaction; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.mdsal.dom.api.DOMDataTreeListener; @@ -34,8 +31,10 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.mdsal.dom.api.DOMDataTreeService; import org.opendaylight.mdsal.dom.api.DOMDataTreeServiceExtension; +import org.opendaylight.mdsal.dom.api.DOMDataTreeTransaction; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.api.DOMTransactionChain; +import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener; import org.opendaylight.yangtools.concepts.ListenerRegistration; public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { @@ -43,7 +42,7 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { private final DOMDataTreeService dataTreeService; private final Object txChainIdentifier; private final AtomicLong txNum = new AtomicLong(); - private final TransactionChainListener txChainListener; + private final DOMTransactionChainListener txChainListener; private final CachedDataTreeService cachedDataTreeService; private TransactionChainWriteTransaction writeTx; private TransactionChainReadTransaction readTx; @@ -51,12 +50,9 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { private boolean finished = false; public ShardedDOMTransactionChainAdapter(final Object txChainIdentifier, - final DOMDataTreeService dataTreeService, - final TransactionChainListener txChainListener) { - Preconditions.checkNotNull(dataTreeService); - Preconditions.checkNotNull(txChainIdentifier); - this.dataTreeService = dataTreeService; - this.txChainIdentifier = txChainIdentifier; + final DOMDataTreeService dataTreeService, final DOMTransactionChainListener txChainListener) { + this.dataTreeService = requireNonNull(dataTreeService); + this.txChainIdentifier = requireNonNull(txChainIdentifier); this.txChainListener = txChainListener; this.cachedDataTreeService = new CachedDataTreeService(dataTreeService); } @@ -110,7 +106,7 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { checkWriteTxClosed(); writeTxCommitFuture.addCallback(new FutureCallback() { @Override - public void onSuccess(@Nullable final CommitInfo result) { + public void onSuccess(final CommitInfo result) { txChainListener.onTransactionChainSuccessful(ShardedDOMTransactionChainAdapter.this); } @@ -139,18 +135,18 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { } private void checkWriteTxClosed() { - Preconditions.checkState(writeTx == null); + checkState(writeTx == null); } private void checkReadTxClosed() { - Preconditions.checkState(readTx == null); + checkState(readTx == null); } private void checkRunning() { - Preconditions.checkState(!finished); + checkState(!finished); } - public void transactionFailed(final AsyncTransaction tx, final Throwable cause) { + public void transactionFailed(final DOMDataTreeTransaction tx, final Throwable cause) { txChainListener.onTransactionChainFailed(this, tx, cause); if (writeTx != null) { writeTx.cancel(); @@ -162,7 +158,7 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { finished = true; } - static class CachedDataTreeService implements DOMDataTreeService { + private static class CachedDataTreeService implements DOMDataTreeService { private final DOMDataTreeService delegateTreeService; private final Map producersMap = @@ -176,12 +172,10 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { producersMap.values().forEach(NoopCloseDataProducer::closeDelegate); } - @Nonnull @Override - public ListenerRegistration registerListener( - @Nonnull final T listener, @Nonnull final Collection subtrees, - final boolean allowRxMerges, @Nonnull final Collection producers) - throws DOMDataTreeLoopException { + public ListenerRegistration registerListener(final T listener, + final Collection subtrees, final boolean allowRxMerges, + final Collection producers) throws DOMDataTreeLoopException { return delegateTreeService.registerListener(listener, subtrees, allowRxMerges, producers); } @@ -191,49 +185,43 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain { } @Override - public DOMDataTreeProducer createProducer(@Nonnull final Collection subtrees) { - Preconditions.checkState(subtrees.size() == 1); - NoopCloseDataProducer producer = null; - for (final DOMDataTreeIdentifier treeId : subtrees) { - producer = - new NoopCloseDataProducer(delegateTreeService.createProducer(Collections.singleton(treeId))); - producersMap.putIfAbsent(treeId.getDatastoreType(), - producer); - } + public DOMDataTreeProducer createProducer(final Collection subtrees) { + checkState(subtrees.size() == 1); + DOMDataTreeIdentifier treeId = subtrees.iterator().next(); + NoopCloseDataProducer producer = new NoopCloseDataProducer(delegateTreeService.createProducer( + Collections.singleton(treeId))); + producersMap.putIfAbsent(treeId.getDatastoreType(), producer); return producer; } + } - static class NoopCloseDataProducer implements DOMDataTreeProducer { - - private final DOMDataTreeProducer delegateTreeProducer; + private static final class NoopCloseDataProducer implements DOMDataTreeProducer { + private final DOMDataTreeProducer delegateTreeProducer; - NoopCloseDataProducer(final DOMDataTreeProducer delegateTreeProducer) { - this.delegateTreeProducer = delegateTreeProducer; - } + NoopCloseDataProducer(final DOMDataTreeProducer delegateTreeProducer) { + this.delegateTreeProducer = delegateTreeProducer; + } - @Nonnull - @Override - public DOMDataTreeCursorAwareTransaction createTransaction(final boolean isolated) { - return delegateTreeProducer.createTransaction(isolated); - } + @Override + public DOMDataTreeCursorAwareTransaction createTransaction(final boolean isolated) { + return delegateTreeProducer.createTransaction(isolated); + } - @Nonnull - @Override - public DOMDataTreeProducer createProducer(@Nonnull final Collection subtrees) { - return delegateTreeProducer.createProducer(subtrees); - } + @Override + public DOMDataTreeProducer createProducer(final Collection subtrees) { + return delegateTreeProducer.createProducer(subtrees); + } - @Override - public void close() throws DOMDataTreeProducerException { - // noop - } + @Override + public void close() { + // noop + } - public void closeDelegate() { - try { - delegateTreeProducer.close(); - } catch (final DOMDataTreeProducerException e) { - throw new IllegalStateException("Trying to close DOMDataTreeProducer with open transaction", e); - } + public void closeDelegate() { + try { + delegateTreeProducer.close(); + } catch (final DOMDataTreeProducerException e) { + throw new IllegalStateException("Trying to close DOMDataTreeProducer with open transaction", e); } } }