Cleanup ShardedDOMTransactionChainAdapter
[mdsal.git] / dom / mdsal-dom-broker / src / main / java / org / opendaylight / mdsal / dom / broker / ShardedDOMTransactionChainAdapter.java
index e10c1e07c902fe9d1e55faa58fe7957f7ea81256..8ffa21b232ff256f5fae4a06f6c75ca920195cb8 100644 (file)
@@ -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<CommitInfo>() {
             @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<LogicalDatastoreType, NoopCloseDataProducer> producersMap =
@@ -176,12 +172,10 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain {
             producersMap.values().forEach(NoopCloseDataProducer::closeDelegate);
         }
 
-        @Nonnull
         @Override
-        public <T extends DOMDataTreeListener> ListenerRegistration<T> registerListener(
-                @Nonnull final T listener, @Nonnull final Collection<DOMDataTreeIdentifier> subtrees,
-                         final boolean allowRxMerges, @Nonnull final Collection<DOMDataTreeProducer> producers)
-                throws DOMDataTreeLoopException {
+        public <T extends DOMDataTreeListener> ListenerRegistration<T> registerListener(final T listener,
+                final Collection<DOMDataTreeIdentifier> subtrees, final boolean allowRxMerges,
+                final Collection<DOMDataTreeProducer> 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<DOMDataTreeIdentifier> 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<DOMDataTreeIdentifier> 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<DOMDataTreeIdentifier> subtrees) {
-                return delegateTreeProducer.createProducer(subtrees);
-            }
+        @Override
+        public DOMDataTreeProducer createProducer(final Collection<DOMDataTreeIdentifier> 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);
             }
         }
     }