import com.google.common.base.Verify;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.BiMap;
+import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableBiMap.Builder;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import java.util.Collection;
-import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.opendaylight.mdsal.dom.api.DOMDataTreeShard;
import org.opendaylight.mdsal.dom.store.inmemory.DOMDataTreeShardProducer;
import org.opendaylight.mdsal.dom.store.inmemory.WriteableDOMDataTreeShard;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private volatile ShardedDOMDataTreeWriteTransaction lastTx;
@GuardedBy("this")
- private Map<DOMDataTreeIdentifier, DOMDataTreeProducer> children = Collections.emptyMap();
+ private Map<DOMDataTreeIdentifier, DOMDataTreeProducer> children = ImmutableMap.of();
+ @GuardedBy("this")
+ private Set<YangInstanceIdentifier> childRoots = ImmutableSet.of();
@GuardedBy("this")
private boolean closed;
if (current != null) {
submitTransaction(current);
}
- ret = new ShardedDOMDataTreeWriteTransaction(this, idToProducer, children, true);
+ ret = new ShardedDOMDataTreeWriteTransaction(this, idToProducer, childRoots);
} else {
// Non-isolated case, see if we can reuse the transaction
if (current != null) {
current.getIdentifier());
ret = current;
} else {
- ret = new ShardedDOMDataTreeWriteTransaction(this, idToProducer, children, false);
+ ret = new ShardedDOMDataTreeWriteTransaction(this, idToProducer, childRoots);
}
}
}
children = cb.build();
+ childRoots = ImmutableSet.copyOf(Collections2.transform(children.keySet(),
+ DOMDataTreeIdentifier::getRootIdentifier));
return ret;
}