X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FBindingDOMDataBrokerAdapter.java;h=1c43f1287648d4ef48d3fef5f0a15e41e54c1e7d;hp=b17be166156574b9a7381fae6155682cd40044a9;hb=2e60ef3a567b79d1fa016fd762e0022139fe4896;hpb=f84f3b8fb24b1ee2074fbbb3f5c64e3ba3191e3e diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataBrokerAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataBrokerAdapter.java index b17be16615..1c43f12876 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataBrokerAdapter.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataBrokerAdapter.java @@ -13,14 +13,19 @@ import com.google.common.collect.ImmutableSet; import java.util.Set; import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; +import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeService; +import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.binding.impl.BindingDOMAdapterBuilder.Factory; import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; +import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeService; import org.opendaylight.controller.md.sal.dom.api.DOMService; -import org.opendaylight.controller.sal.core.api.model.SchemaService; +import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.DataObject; /** * The DataBrokerImpl simply defers to the DOMDataBroker for all its operations. @@ -32,7 +37,7 @@ import org.opendaylight.controller.sal.core.api.model.SchemaService; * */ -public class BindingDOMDataBrokerAdapter extends AbstractForwardedDataBroker implements DataBroker { +public class BindingDOMDataBrokerAdapter extends AbstractForwardedDataBroker implements DataBroker, DataTreeChangeService { static final Factory BUILDER_FACTORY = new BindingDOMAdapterBuilder.Factory() { @@ -43,14 +48,16 @@ public class BindingDOMDataBrokerAdapter extends AbstractForwardedDataBroker imp } }; + private final DataTreeChangeService treeChangeService; public BindingDOMDataBrokerAdapter(final DOMDataBroker domDataBroker, final BindingToNormalizedNodeCodec codec) { super(domDataBroker, codec); - } - - @Deprecated - public BindingDOMDataBrokerAdapter(final DOMDataBroker domDataBroker, final BindingToNormalizedNodeCodec codec, final SchemaService schemaService) { - super(domDataBroker, codec,schemaService); + final DOMDataTreeChangeService domTreeChange = (DOMDataTreeChangeService) domDataBroker.getSupportedExtensions().get(DOMDataTreeChangeService.class); + if(domTreeChange != null) { + treeChangeService = BindingDOMDataTreeChangeServiceAdapter.create(codec, domTreeChange); + } else { + treeChangeService = null; + } } @Override @@ -82,13 +89,21 @@ public class BindingDOMDataBrokerAdapter extends AbstractForwardedDataBroker imp } @Override - protected DataBroker createInstance(BindingToNormalizedNodeCodec codec, - ClassToInstanceMap delegates) { - DOMDataBroker domDataBroker = delegates.getInstance(DOMDataBroker.class); + protected DataBroker createInstance(final BindingToNormalizedNodeCodec codec, + final ClassToInstanceMap delegates) { + final DOMDataBroker domDataBroker = delegates.getInstance(DOMDataBroker.class); return new BindingDOMDataBrokerAdapter(domDataBroker, codec); } + } - + @Override + public > ListenerRegistration registerDataTreeChangeListener( + final DataTreeIdentifier treeId, final L listener) { + if(treeChangeService == null) { + throw new UnsupportedOperationException("Underlying data broker does not expose DOMDataTreeChangeService."); + } + return treeChangeService.registerDataTreeChangeListener(treeId, listener); } + }