X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-compat%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fcore%2Fcompat%2FLegacyDOMDataBrokerAdapter.java;h=cfad179867e8b0399b691d788666c5b1e1e4e7a1;hp=b9cd447a9cc9a62b726bf95e56534fd7e66fd241;hb=884f76b08ae170fa435bbe858eb375a5f67a480b;hpb=3643c26338ede9bbb7cb13483fa7ca2504a35279 diff --git a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java index b9cd447a9c..cfad179867 100644 --- a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java +++ b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java @@ -7,6 +7,8 @@ */ package org.opendaylight.controller.sal.core.compat; +import static java.util.Objects.requireNonNull; + import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ClassToInstanceMap; @@ -18,6 +20,7 @@ import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; +import java.util.Collection; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Supplier; @@ -53,6 +56,7 @@ import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; /** * Adapter between the legacy controller API-based DOMDataBroker and the mdsal API-based DOMDataBroker. @@ -99,10 +103,9 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD final DOMDataTreeIdentifier treeId, final L listener) { final org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener delegateListener; if (listener instanceof ClusteredDOMDataTreeChangeListener) { - delegateListener = (org.opendaylight.mdsal.dom.api.ClusteredDOMDataTreeChangeListener) - listener::onDataTreeChanged; + delegateListener = new ClusteredProxyListener(listener); } else { - delegateListener = listener::onDataTreeChanged; + delegateListener = new ProxyListener(listener); } final ListenerRegistration reg = @@ -337,4 +340,31 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD adapter.readDelegate().close(); } } + + private static class ProxyListener extends ForwardingObject + implements org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener { + private final DOMDataTreeChangeListener delegate; + + ProxyListener(final DOMDataTreeChangeListener delegate) { + this.delegate = requireNonNull(delegate); + } + + @Override + public void onDataTreeChanged(Collection changes) { + delegate.onDataTreeChanged(changes); + } + + @Override + protected DOMDataTreeChangeListener delegate() { + return delegate; + } + } + + private static final class ClusteredProxyListener extends ProxyListener + implements org.opendaylight.mdsal.dom.api.ClusteredDOMDataTreeChangeListener { + + ClusteredProxyListener(DOMDataTreeChangeListener delegate) { + super(delegate); + } + } }