*/
package org.opendaylight.mdsal.dom.broker;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.base.Preconditions;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.BiMap;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer;
import org.opendaylight.mdsal.dom.api.DOMDataTreeShard;
-import org.opendaylight.mdsal.dom.store.inmemory.DOMDataTreeShardProducer;
-import org.opendaylight.mdsal.dom.store.inmemory.DOMDataTreeShardWriteTransaction;
-import org.opendaylight.mdsal.dom.store.inmemory.WriteableDOMDataTreeShard;
+import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardProducer;
+import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardWriteTransaction;
+import org.opendaylight.mdsal.dom.spi.shard.WriteableDOMDataTreeShard;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.slf4j.Logger;
final BiMap<DOMDataTreeIdentifier, DOMDataTreeShardProducer> idToProducer,
final Map<DOMDataTreeIdentifier, DOMDataTreeProducer> children) {
this.shardMap = ImmutableMap.copyOf(shardMap);
- this.idToProducer = Preconditions.checkNotNull(idToProducer);
- this.children = Preconditions.checkNotNull(children);
+ this.idToProducer = requireNonNull(idToProducer);
+ this.children = requireNonNull(children);
}
static ProducerLayout create(final Map<DOMDataTreeIdentifier, DOMDataTreeShard> shardMap) {
return new ProducerLayout(shardMap, idToProducer, cb.build());
}
- ProducerLayout reshard(final Map<DOMDataTreeIdentifier, DOMDataTreeShard> shardMap) {
- return new ProducerLayout(shardMap, mapIdsToProducer(shardMap), children);
+ ProducerLayout reshard(final Map<DOMDataTreeIdentifier, DOMDataTreeShard> newShardMap) {
+ close();
+ return new ProducerLayout(newShardMap, mapIdsToProducer(newShardMap), children);
}
boolean haveSubtree(final DOMDataTreeIdentifier subtree) {
}
Map<DOMDataTreeIdentifier, DOMDataTreeShardWriteTransaction> createTransactions() {
+ Preconditions.checkState(!idToProducer.isEmpty(),
+ "Cannot create transaction since the producer is not mapped to any shard");
return Maps.transformValues(idToProducer, DOMDataTreeShardProducer::createTransaction);
}
+
+ void close() {
+ idToProducer.values().forEach(DOMDataTreeShardProducer::close);
+ }
+
}