Removed DataChangeListener in favour of DataTreeChangeListener
[mdsal.git] / dom / mdsal-dom-broker / src / main / java / org / opendaylight / mdsal / dom / broker / ShardedDOMDataTreeProducer.java
index d11ea898dec1806595e79363c7fc5ff201c46869..83a073d70149325a23bb4db67d300b55d4b5817e 100644 (file)
@@ -27,7 +27,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerBusyException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeProducerException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeShard;
-import org.opendaylight.mdsal.dom.api.DOMDataWriteTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStore;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionChain;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction;
@@ -43,10 +43,13 @@ final class ShardedDOMDataTreeProducer implements DOMDataTreeProducer {
     @GuardedBy("this")
     private Map<DOMDataTreeIdentifier, DOMDataTreeProducer> children = Collections.emptyMap();
     @GuardedBy("this")
-    private DOMDataWriteTransaction openTx;
+    private DOMDataTreeWriteTransaction openTx;
     @GuardedBy("this")
     private boolean closed;
 
+    @GuardedBy("this")
+    private ShardedDOMDataTreeListenerContext<?> attachedListener;
+
     ShardedDOMDataTreeProducer(final ShardedDOMDataTree dataTree, final Map<DOMDataTreeIdentifier, DOMDataTreeShard> shardMap, final Set<DOMDataTreeShard> shards) {
         this.dataTree = Preconditions.checkNotNull(dataTree);
 
@@ -92,7 +95,7 @@ final class ShardedDOMDataTreeProducer implements DOMDataTreeProducer {
     }
 
     @Override
-    public synchronized DOMDataWriteTransaction createTransaction(final boolean isolated) {
+    public synchronized DOMDataTreeWriteTransaction createTransaction(final boolean isolated) {
         Preconditions.checkState(!closed, "Producer is already closed");
         Preconditions.checkState(openTx == null, "Transaction %s is still open", openTx);
 
@@ -219,4 +222,12 @@ final class ShardedDOMDataTreeProducer implements DOMDataTreeProducer {
         Preconditions.checkState(openTx.equals(transaction));
         openTx = null;
     }
+
+    synchronized void boundToListener(ShardedDOMDataTreeListenerContext<?> listener) {
+        // FIXME: Add option to dettach
+        Preconditions.checkState(this.attachedListener == null,
+                "Producer %s is already attached to other listener.",
+                listener.getListener());
+        this.attachedListener = listener;
+    }
 }