- boolean treeChange = true;
- for (DOMStore ds : datastores.values()) {
- if (!(ds instanceof DOMStoreTreeChangePublisher)) {
- treeChange = false;
- break;
- }
+ Builder<Class<? extends DOMDataBrokerExtension>, DOMDataBrokerExtension> extBuilder = ImmutableMap.builder();
+ if (isSupported(datastores, DOMStoreTreeChangePublisher.class)) {
+ extBuilder.put(DOMDataTreeChangeService.class, new DOMDataTreeChangeService() {
+ @Override
+ public <L extends DOMDataTreeChangeListener> ListenerRegistration<L> registerDataTreeChangeListener(
+ final DOMDataTreeIdentifier treeId, final L listener) {
+ DOMStore store = getTxFactories().get(treeId.getDatastoreType());
+ checkState(store != null, "Requested logical data store is not available.");
+
+ return ((DOMStoreTreeChangePublisher) store).registerTreeChangeListener(
+ treeId.getRootIdentifier(), listener);
+ }
+ });