X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2FBindingDOMDataBrokerAdapter.java;h=d94b6abbd88e7480f2d92468ac084589fef80a4e;hb=8a01ebe93fac21b1ae80dcfcc81c21543ec1a687;hp=b17be166156574b9a7381fae6155682cd40044a9;hpb=753515e8868a1a15982d3f2697439f522f273db5;p=controller.git 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..d94b6abbd8 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 @@ -7,50 +7,49 @@ */ package org.opendaylight.controller.md.sal.binding.impl; - import com.google.common.collect.ClassToInstanceMap; 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. * All transactions and listener registrations are wrapped by the DataBrokerImpl * to allow binding aware components to use the DataBroker transparently. * + *

* Besides this the DataBrokerImpl and it's collaborators also cache data that * is already transformed from the binding independent to binding aware format - * - */ -public class BindingDOMDataBrokerAdapter extends AbstractForwardedDataBroker implements DataBroker { - - - static final Factory BUILDER_FACTORY = new BindingDOMAdapterBuilder.Factory() { - - @Override - public BindingDOMAdapterBuilder newBuilder() { - return new Builder(); - } - - }; +@Deprecated +public class BindingDOMDataBrokerAdapter extends AbstractForwardedDataBroker + implements DataBroker, DataTreeChangeService { + static final Factory BUILDER_FACTORY = Builder::new; + 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 @@ -74,6 +73,11 @@ public class BindingDOMDataBrokerAdapter extends AbstractForwardedDataBroker imp return new BindingDOMTransactionChainAdapter(getDelegate(), getCodec(), listener); } + @Override + public String toString() { + return "BindingDOMDataBrokerAdapter for " + getDelegate(); + } + private static class Builder extends BindingDOMAdapterBuilder { @Override @@ -82,13 +86,20 @@ 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); } }