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;
}
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());
}
}
@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;