Merge "BUG 2854 : Do not add empty read write transactions to the replicable journal"
[controller.git] / opendaylight / md-sal / sal-inmemory-datastore / src / main / java / org / opendaylight / controller / md / sal / dom / store / impl / tree / ListenerWalker.java
index 0c297a2e2b5091c39c5c85784291c21fc7bb3cab..f8169c4e48c0508228084ad414d7924fccd6abcc 100644 (file)
@@ -8,37 +8,31 @@
 package org.opendaylight.controller.md.sal.dom.store.impl.tree;
 
 import com.google.common.base.Preconditions;
-import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
-import java.util.concurrent.locks.Lock;
+import org.opendaylight.controller.md.sal.dom.spi.RegistrationTreeSnapshot;
+import org.opendaylight.controller.md.sal.dom.store.impl.DataChangeListenerRegistration;
 
 /**
  * A walking context, pretty much equivalent to an iterator, but it
  * exposes the underlying tree structure.
  *
  * @author Robert Varga
+ *
+ * @deprecated Superseded by {@link RegistrationTreeSnapshot}.
  */
+@Deprecated
 public class ListenerWalker implements AutoCloseable {
-    private static final AtomicIntegerFieldUpdater<ListenerWalker> CLOSED_UPDATER = AtomicIntegerFieldUpdater.newUpdater(ListenerWalker.class, "closed");
-    private final Lock lock;
-    private final ListenerNode node;
-
-    // Used via CLOSED_UPDATER
-    @SuppressWarnings("unused")
-    private volatile int closed = 0;
+    private final RegistrationTreeSnapshot<DataChangeListenerRegistration<?>> delegate;
 
-    ListenerWalker(final Lock lock, final ListenerNode node) {
-        this.lock = Preconditions.checkNotNull(lock);
-        this.node = Preconditions.checkNotNull(node);
+    ListenerWalker(final RegistrationTreeSnapshot<DataChangeListenerRegistration<?>> delegate) {
+        this.delegate = Preconditions.checkNotNull(delegate);
     }
 
     public ListenerNode getRootNode() {
-        return node;
+        return new ListenerNode(delegate.getRootNode());
     }
 
     @Override
     public void close() {
-        if (CLOSED_UPDATER.compareAndSet(this, 0, 1)) {
-            lock.unlock();
-        }
+        delegate.close();
     }
 }
\ No newline at end of file