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;
@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);
}
@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);
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;
+ }
}