X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-adapter%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fadapter%2FBindingDOMDataBrokerAdapter.java;h=14d4dbc7064848574c01a3527ce004fee08c12b0;hb=b8a896e6dfc47374f99efee157683dc8a7ef8860;hp=92dcfac6b22e9b9e74c3c1b25f4979710e57bb9a;hpb=1d3aa6a408704bdc1f8f19cf5f4903d85dc66a13;p=mdsal.git diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataBrokerAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataBrokerAdapter.java index 92dcfac6b2..14d4dbc706 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataBrokerAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataBrokerAdapter.java @@ -7,6 +7,7 @@ */ package org.opendaylight.mdsal.binding.dom.adapter; +import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableSet; import java.util.Set; @@ -18,13 +19,12 @@ import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; import org.opendaylight.mdsal.binding.api.TransactionChain; -import org.opendaylight.mdsal.binding.api.TransactionChainListener; import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.binding.dom.adapter.BindingDOMAdapterBuilder.Factory; import org.opendaylight.mdsal.dom.api.DOMDataBroker; -import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker.DataTreeChangeExtension; import org.opendaylight.mdsal.dom.api.DOMService; -import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.DataObject; /** @@ -36,70 +36,77 @@ import org.opendaylight.yangtools.yang.binding.DataObject; * 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 AbstractBindingAdapter<@NonNull DOMDataBroker> implements DataBroker, - DataTreeChangeService { - +@VisibleForTesting +public class BindingDOMDataBrokerAdapter extends AbstractBindingAdapter<@NonNull DOMDataBroker> implements DataBroker { static final Factory BUILDER_FACTORY = Builder::new; private final DataTreeChangeService treeChangeService; - public BindingDOMDataBrokerAdapter(final DOMDataBroker domDataBroker, final BindingToNormalizedNodeCodec codec) { - super(codec, domDataBroker); - final DOMDataTreeChangeService domTreeChange = domDataBroker.getExtensions() - .getInstance(DOMDataTreeChangeService.class); - if (domTreeChange != null) { - treeChangeService = BindingDOMDataTreeChangeServiceAdapter.create(codec, domTreeChange); - } else { - treeChangeService = null; - } + public BindingDOMDataBrokerAdapter(final AdapterContext adapterContext, final DOMDataBroker domDataBroker) { + super(adapterContext, domDataBroker); + final var domTreeChange = domDataBroker.extension(DataTreeChangeExtension.class); + treeChangeService = domTreeChange == null ? null + : new BindingDOMDataTreeChangeServiceAdapter(adapterContext, domTreeChange); } @Override public ReadTransaction newReadOnlyTransaction() { - return new BindingDOMReadTransactionAdapter(getDelegate().newReadOnlyTransaction(), getCodec()); + return new BindingDOMReadTransactionAdapter(adapterContext(), getDelegate().newReadOnlyTransaction()); } @Override public WriteTransaction newWriteOnlyTransaction() { - return new BindingDOMWriteTransactionAdapter<>(getDelegate().newWriteOnlyTransaction(), getCodec()); + return new BindingDOMWriteTransactionAdapter<>(adapterContext(), getDelegate().newWriteOnlyTransaction()); } @Override public ReadWriteTransaction newReadWriteTransaction() { - return new BindingDOMReadWriteTransactionAdapter(getDelegate().newReadWriteTransaction(), getCodec()); + return new BindingDOMReadWriteTransactionAdapter(adapterContext(), getDelegate().newReadWriteTransaction()); + } + + @Override + public TransactionChain createTransactionChain() { + return new BindingDOMTransactionChainAdapter(getDelegate().createTransactionChain(), adapterContext()); } @Override - public TransactionChain createTransactionChain(final TransactionChainListener listener) { - return new BindingDOMTransactionChainAdapter(getDelegate()::createTransactionChain, getCodec(), listener); + public TransactionChain createMergingTransactionChain() { + return new BindingDOMTransactionChainAdapter(getDelegate().createMergingTransactionChain(), adapterContext()); } @Override - public TransactionChain createMergingTransactionChain(final TransactionChainListener listener) { - return new BindingDOMTransactionChainAdapter(getDelegate()::createMergingTransactionChain, getCodec(), - listener); + public Registration registerTreeChangeListener(final DataTreeIdentifier treeId, + final DataTreeChangeListener listener) { + return getTreeChangeService().registerTreeChangeListener(treeId, listener); + } + + @Override + @Deprecated(since = "13.0.0", forRemoval = true) + public Registration registerLegacyTreeChangeListener(final DataTreeIdentifier treeId, + final DataTreeChangeListener listener) { + return getTreeChangeService().registerLegacyTreeChangeListener(treeId, listener); + } + + private @NonNull DataTreeChangeService getTreeChangeService() { + final var local = treeChangeService; + if (local == null) { + throw new UnsupportedOperationException("Underlying data broker does not expose DOMDataTreeChangeService."); + } + return local; } private static class Builder extends BindingDOMAdapterBuilder { - @Override - public Set> getRequiredDelegates() { - return ImmutableSet.of(DOMDataBroker.class); + Builder(final AdapterContext adapterContext) { + super(adapterContext); } @Override - protected DataBroker createInstance(final BindingToNormalizedNodeCodec codec, - final ClassToInstanceMap delegates) { - final DOMDataBroker domDataBroker = delegates.getInstance(DOMDataBroker.class); - return new BindingDOMDataBrokerAdapter(domDataBroker, codec); + public Set>> getRequiredDelegates() { + return ImmutableSet.of(DOMDataBroker.class); } - } - @Override - public > ListenerRegistration - registerDataTreeChangeListener( - final DataTreeIdentifier treeId, final L listener) { - if (treeChangeService == null) { - throw new UnsupportedOperationException("Underlying data broker does not expose DOMDataTreeChangeService."); + @Override + protected DataBroker createInstance(final ClassToInstanceMap> delegates) { + return new BindingDOMDataBrokerAdapter(adapterContext(), delegates.getInstance(DOMDataBroker.class)); } - return treeChangeService.registerDataTreeChangeListener(treeId, listener); } }