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%2FBindingDOMDataTreeChangeServiceAdapter.java;h=5c488da005ed1a4745f353dfbcd39442f3352ae6;hb=8a01ebe93fac21b1ae80dcfcc81c21543ec1a687;hp=04c6ad5702be1b765f7c1fbc2515b831d33bad98;hpb=e1a6ed792b504c2978c5259f926eaa09257c694c;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataTreeChangeServiceAdapter.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataTreeChangeServiceAdapter.java index 04c6ad5702..5c488da005 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataTreeChangeServiceAdapter.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/md/sal/binding/impl/BindingDOMDataTreeChangeServiceAdapter.java @@ -8,25 +8,28 @@ package org.opendaylight.controller.md.sal.binding.impl; import com.google.common.base.Preconditions; +import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; 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.dom.api.DOMDataTreeChangeService; import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** - * * Adapter exposing Binding {@link DataTreeChangeService} and wrapping * {@link DOMDataTreeChangeService} and is responsible for translation * and instantiation of {@link BindingDOMDataTreeChangeListenerAdapter} * adapters. * + *

* Each registered {@link DataTreeChangeListener} is wrapped using * adapter and registered directly to DOM service. */ +@Deprecated final class BindingDOMDataTreeChangeServiceAdapter implements DataTreeChangeService { private final BindingToNormalizedNodeCodec codec; @@ -44,16 +47,24 @@ final class BindingDOMDataTreeChangeServiceAdapter implements DataTreeChangeServ } @Override - public ListenerRegistration registerDataTreeChangeListener( - final DataTreeIdentifier treeId, final L listener) { + public > ListenerRegistration + registerDataTreeChangeListener(final DataTreeIdentifier treeId, final L listener) { final DOMDataTreeIdentifier domIdentifier = toDomTreeIdentifier(treeId); - final BindingDOMDataTreeChangeListenerAdapter domListener = new BindingDOMDataTreeChangeListenerAdapter(codec,listener, treeId.getDatastoreType()); - final ListenerRegistration domReg = dataTreeChangeService.registerDataTreeChangeListener(domIdentifier, domListener); + + @SuppressWarnings({ "rawtypes", "unchecked" }) + final BindingDOMDataTreeChangeListenerAdapter domListener = + listener instanceof ClusteredDataTreeChangeListener + ? new BindingClusteredDOMDataTreeChangeListenerAdapter<>( + codec, (ClusteredDataTreeChangeListener) listener, treeId.getDatastoreType()) + : new BindingDOMDataTreeChangeListenerAdapter<>(codec, listener, treeId.getDatastoreType()); + + final ListenerRegistration> domReg = + dataTreeChangeService.registerDataTreeChangeListener(domIdentifier, domListener); return new BindingDataTreeChangeListenerRegistration<>(listener,domReg); } - private DOMDataTreeIdentifier toDomTreeIdentifier(final DataTreeIdentifier treeId) { - final YangInstanceIdentifier domPath = codec.toYangInstanceIdentifier(treeId.getRootIdentifier()); + private DOMDataTreeIdentifier toDomTreeIdentifier(final DataTreeIdentifier treeId) { + final YangInstanceIdentifier domPath = codec.toYangInstanceIdentifierBlocking(treeId.getRootIdentifier()); return new DOMDataTreeIdentifier(treeId.getDatastoreType(), domPath); } }