Fix modernization issues
[controller.git] / opendaylight / md-sal / sal-dom-spi / src / main / java / org / opendaylight / controller / sal / core / spi / data / AbstractSnapshotBackedTransactionChain.java
index f80c80001f6bfd33abd95e2d3abaa58770a234d7..5a47b975203fe05d43fb405e3b10b898d167ae19 100644 (file)
@@ -7,11 +7,14 @@
  */
 package org.opendaylight.controller.sal.core.spi.data;
 
+import static com.google.common.base.Preconditions.checkState;
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.annotations.Beta;
-import com.google.common.base.Preconditions;
 import java.util.AbstractMap.SimpleEntry;
 import java.util.Map.Entry;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
+import org.opendaylight.controller.sal.core.spi.data.SnapshotBackedReadTransaction.TransactionClosePrototype;
 import org.opendaylight.controller.sal.core.spi.data.SnapshotBackedWriteTransaction.TransactionReadyPrototype;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
@@ -23,10 +26,12 @@ import org.slf4j.LoggerFactory;
  * supplier and backend commit coordinator.
  *
  * @param <T> transaction identifier type
+ * @deprecated Use {@link org.opendaylight.mdsal.dom.spi.store.AbstractSnapshotBackedTransactionChain} instead.
  */
+@Deprecated
 @Beta
 public abstract class AbstractSnapshotBackedTransactionChain<T> extends TransactionReadyPrototype<T>
-        implements DOMStoreTransactionChain {
+        implements DOMStoreTransactionChain, TransactionClosePrototype<T> {
     private abstract static class State {
         /**
          * Allocate a new snapshot.
@@ -40,11 +45,11 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         private final AbstractSnapshotBackedTransactionChain<?> chain;
 
         Idle(final AbstractSnapshotBackedTransactionChain<?> chain) {
-            this.chain = Preconditions.checkNotNull(chain);
+            this.chain = requireNonNull(chain);
         }
 
         @Override
-        protected DataTreeSnapshot getSnapshot(Object transactionId) {
+        protected DataTreeSnapshot getSnapshot(final Object transactionId) {
             return chain.takeSnapshot();
         }
     }
@@ -59,7 +64,7 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         private volatile DataTreeSnapshot snapshot;
 
         Allocated(final DOMStoreWriteTransaction transaction) {
-            this.transaction = Preconditions.checkNotNull(transaction);
+            this.transaction = requireNonNull(transaction);
         }
 
         public DOMStoreWriteTransaction getTransaction() {
@@ -67,9 +72,9 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         }
 
         @Override
-        protected DataTreeSnapshot getSnapshot(Object transactionId) {
+        protected DataTreeSnapshot getSnapshot(final Object transactionId) {
             final DataTreeSnapshot ret = snapshot;
-            Preconditions.checkState(ret != null,
+            checkState(ret != null,
                     "Could not get snapshot for transaction %s - previous transaction %s is not ready yet",
                     transactionId, transaction.getIdentifier());
             return ret;
@@ -77,8 +82,7 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
 
         void setSnapshot(final DataTreeSnapshot snapshot) {
             final boolean success = SNAPSHOT_UPDATER.compareAndSet(this, null, snapshot);
-            Preconditions.checkState(success, "Transaction %s has already been marked as ready",
-                    transaction.getIdentifier());
+            checkState(success, "Transaction %s has already been marked as ready", transaction.getIdentifier());
         }
     }
 
@@ -89,11 +93,11 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         private final String message;
 
         Shutdown(final String message) {
-            this.message = Preconditions.checkNotNull(message);
+            this.message = requireNonNull(message);
         }
 
         @Override
-        protected DataTreeSnapshot getSnapshot(Object transactionId) {
+        protected DataTreeSnapshot getSnapshot(final Object transactionId) {
             throw new IllegalStateException(message);
         }
     }
@@ -112,7 +116,7 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         state = idleState;
     }
 
-    private Entry<State, DataTreeSnapshot> getSnapshot(T transactionId) {
+    private Entry<State, DataTreeSnapshot> getSnapshot(final T transactionId) {
         final State localState = state;
         return new SimpleEntry<>(localState, localState.getSnapshot(transactionId));
     }
@@ -127,9 +131,15 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         return newReadOnlyTransaction(nextTransactionIdentifier());
     }
 
-    protected DOMStoreReadTransaction newReadOnlyTransaction(T transactionId) {
+    protected DOMStoreReadTransaction newReadOnlyTransaction(final T transactionId) {
         final Entry<State, DataTreeSnapshot> entry = getSnapshot(transactionId);
-        return SnapshotBackedTransactions.newReadTransaction(transactionId, getDebugTransactions(), entry.getValue());
+        return SnapshotBackedTransactions.newReadTransaction(transactionId, getDebugTransactions(), entry.getValue(),
+            this);
+    }
+
+    @Override
+    public void transactionClosed(final SnapshotBackedReadTransaction<T> tx) {
+        // Defaults to no-op
     }
 
     @Override
@@ -137,7 +147,7 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         return newReadWriteTransaction(nextTransactionIdentifier());
     }
 
-    protected DOMStoreReadWriteTransaction newReadWriteTransaction(T transactionId) {
+    protected DOMStoreReadWriteTransaction newReadWriteTransaction(final T transactionId) {
         Entry<State, DataTreeSnapshot> entry;
         DOMStoreReadWriteTransaction ret;
 
@@ -155,7 +165,7 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         return newWriteOnlyTransaction(nextTransactionIdentifier());
     }
 
-    protected DOMStoreWriteTransaction newWriteOnlyTransaction(T transactionId) {
+    protected DOMStoreWriteTransaction newWriteOnlyTransaction(final T transactionId) {
         Entry<State, DataTreeSnapshot> entry;
         DOMStoreWriteTransaction ret;
 
@@ -194,8 +204,8 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         if (localState instanceof Allocated) {
             final Allocated allocated = (Allocated)localState;
             final DOMStoreWriteTransaction transaction = allocated.getTransaction();
-            Preconditions.checkState(tx.equals(transaction), "Mis-ordered ready transaction %s last allocated was %s",
-                    tx, transaction);
+            checkState(tx.equals(transaction), "Mis-ordered ready transaction %s last allocated was %s", tx,
+                transaction);
             allocated.setSnapshot(tree);
         } else {
             LOG.debug("Ignoring transaction {} readiness due to state {}", tx, localState);
@@ -209,8 +219,7 @@ public abstract class AbstractSnapshotBackedTransactionChain<T> extends Transact
         final State localState = state;
 
         do {
-            Preconditions.checkState(!CLOSED.equals(localState), "Transaction chain %s has been closed", this);
-
+            checkState(!CLOSED.equals(localState), "Transaction chain %s has been closed", this);
             if (FAILED.equals(localState)) {
                 LOG.debug("Ignoring user close in failed state");
                 return;