import org.opendaylight.mdsal.dom.spi.shard.WriteableDOMDataTreeShard;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final Map<DOMDataTreeIdentifier, ChildShardContext> childShards = new HashMap<>();
@GuardedBy("this")
private final List<ShardProxyProducer> producers = new ArrayList<>();
- private final DistributedDataStore distributedDataStore;
+
+ private final DistributedShardChangePublisher publisher;
DistributedShardFrontend(final DistributedDataStore distributedDataStore,
final DataStoreClient client,
final DOMDataTreeIdentifier shardRoot) {
- this.distributedDataStore = Preconditions.checkNotNull(distributedDataStore);
this.client = Preconditions.checkNotNull(client);
this.shardRoot = Preconditions.checkNotNull(shardRoot);
+
+ publisher = new DistributedShardChangePublisher(client, Preconditions.checkNotNull(distributedDataStore),
+ shardRoot, childShards);
}
@Override
@SuppressWarnings("unchecked")
public <L extends DOMDataTreeChangeListener> ListenerRegistration<L> registerTreeChangeListener(
final YangInstanceIdentifier treeId, final L listener) {
-
- final List<PathArgument> toStrip = new ArrayList<>(shardRoot.getRootIdentifier().getPathArguments());
- final List<PathArgument> stripFrom = new ArrayList<>(treeId.getPathArguments());
-
- while (!toStrip.isEmpty()) {
- stripFrom.remove(0);
- toStrip.remove(0);
- }
-
- return (ListenerRegistration<L>) new ProxyRegistration(distributedDataStore
- .registerProxyListener(treeId, YangInstanceIdentifier.create(stripFrom), listener), listener);
- }
-
- private static class ProxyRegistration implements ListenerRegistration<DOMDataTreeChangeListener> {
-
- private ListenerRegistration<org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener> proxy;
- private DOMDataTreeChangeListener listener;
-
- private ProxyRegistration(
- final ListenerRegistration<
- org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener> proxy,
- final DOMDataTreeChangeListener listener) {
- this.proxy = proxy;
- this.listener = listener;
- }
-
- @Override
- public DOMDataTreeChangeListener getInstance() {
- return listener;
- }
-
- @Override
- public void close() {
- proxy.close();
- }
+ return publisher.registerTreeChangeListener(treeId, listener);
}
-
}