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=28ca144b97c979b28241691f7e1f85b96466f13e;hb=refs%2Fchanges%2F94%2F64194%2F1;hp=ad0ab54e9f700479200f5411316b2430c6908788;hpb=bcc66b3ee07a3bc18176418c4cd211596f49f2f0;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 ad0ab54e9f..28ca144b97 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,6 +8,7 @@ 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; @@ -48,13 +49,21 @@ final class BindingDOMDataTreeChangeServiceAdapter implements DataTreeChangeServ 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()); + final YangInstanceIdentifier domPath = codec.toYangInstanceIdentifierBlocking(treeId.getRootIdentifier()); return new DOMDataTreeIdentifier(treeId.getDatastoreType(), domPath); } }