Deprecate Clustered(DOM)DataTreeChangeListener
[mdsal.git] / trace / mdsal-trace-impl / src / main / java / org / opendaylight / mdsal / trace / impl / TracingBroker.java
index 641e185d1b3db68fd2c0d21984b1fe3f198b26b0..1a56d625e7c5af7a4bb6363279d445180f71dda8 100644 (file)
@@ -16,15 +16,16 @@ import java.util.List;
 import java.util.Set;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.dom.api.ClusteredDOMDataTreeChangeListener;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.trace.api.TracingDOMDataBroker;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsaltrace.rev160908.Config;
+import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -233,8 +234,8 @@ public class TracingBroker implements TracingDOMDataBroker {
     }
 
     static void toPathString(final InstanceIdentifier<? extends DataObject> iid, final StringBuilder builder) {
-        for (InstanceIdentifier.PathArgument pathArg : iid.getPathArguments()) {
-            builder.append('/').append(pathArg.getType().getSimpleName());
+        for (var pathArg : iid.getPathArguments()) {
+            builder.append('/').append(pathArg.type().getSimpleName());
         }
     }
 
@@ -301,15 +302,31 @@ public class TracingBroker implements TracingDOMDataBroker {
     @Override
     public <T extends Extension> T extension(final Class<T> type) {
         final var ext = delegate.extension(type);
-        if (DOMDataTreeChangeService.class.equals(type) && ext instanceof DOMDataTreeChangeService treeChange) {
-            return type.cast((DOMDataTreeChangeService) (domDataTreeIdentifier, listener) -> {
-                final var rootId = domDataTreeIdentifier.path();
-                if (isRegistrationWatched(rootId, domDataTreeIdentifier.datastore())) {
-                    LOG.warn("{} registration (registerDataTreeChangeListener) for {} from {}.",
-                        listener instanceof ClusteredDOMDataTreeChangeListener ? "Clustered" : "Non-clustered",
+        if (DataTreeChangeExtension.class.equals(type) && ext instanceof DataTreeChangeExtension treeChange) {
+            return type.cast(new DataTreeChangeExtension() {
+                @Override
+                public Registration registerTreeChangeListener(final DOMDataTreeIdentifier treeId,
+                        final DOMDataTreeChangeListener listener) {
+                    notifyIfWatched("Non-clustered", treeId, listener);
+                    return treeChange.registerTreeChangeListener(treeId, listener);
+                }
+
+                @Override
+                @Deprecated(since = "13.0.0", forRemoval = true)
+                public Registration registerLegacyTreeChangeListener(final DOMDataTreeIdentifier treeId,
+                        final DOMDataTreeChangeListener listener) {
+                    notifyIfWatched("Non-clustered", treeId, listener);
+                    return treeChange.registerLegacyTreeChangeListener(treeId, listener);
+                }
+
+                private void notifyIfWatched(final String kind, final DOMDataTreeIdentifier treeId,
+                        final DOMDataTreeChangeListener listener) {
+                    final var rootId = treeId.path();
+                    if (isRegistrationWatched(rootId, treeId.datastore()) && LOG.isWarnEnabled()) {
+                        LOG.warn("{} registration (registerDataTreeChangeListener) for {} from {}.", kind,
                             toPathString(rootId), getStackSummary());
+                    }
                 }
-                return treeChange.registerDataTreeChangeListener(domDataTreeIdentifier, listener);
             });
         }
         return ext;