Refactor PathArgument to DataObjectStep
[mdsal.git] / trace / mdsal-trace-impl / src / main / java / org / opendaylight / mdsal / trace / impl / TracingBroker.java
index e7560e7b0324464c333a4dd07ebc0eff90606207..49df6240bd8117fa726f4fc11475f86db1b4a6fb 100644 (file)
@@ -18,18 +18,13 @@ 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.DOMDataBrokerExtension;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
-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.dom.api.DOMTransactionChainListener;
 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.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -93,8 +88,7 @@ import org.slf4j.LoggerFactory;
  * </ul>
  */
 public class TracingBroker implements TracingDOMDataBroker {
-    @SuppressFBWarnings("SLF4J_LOGGER_SHOULD_BE_PRIVATE")
-    static final Logger LOG = LoggerFactory.getLogger(TracingBroker.class);
+    private static final Logger LOG = LoggerFactory.getLogger(TracingBroker.class);
 
     private static final int STACK_TRACE_FIRST_RELEVANT_FRAME = 2;
 
@@ -239,8 +233,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());
         }
     }
 
@@ -290,16 +284,13 @@ public class TracingBroker implements TracingDOMDataBroker {
     }
 
     @Override
-    public DOMTransactionChain createTransactionChain(final DOMTransactionChainListener transactionChainListener) {
-        return new TracingTransactionChain(delegate.createTransactionChain(transactionChainListener), this,
-            transactionChainsRegistry);
+    public DOMTransactionChain createTransactionChain() {
+        return new TracingTransactionChain(delegate.createTransactionChain(), this, transactionChainsRegistry);
     }
 
     @Override
-    public DOMTransactionChain createMergingTransactionChain(
-            final DOMTransactionChainListener transactionChainListener) {
-        return new TracingTransactionChain(delegate.createMergingTransactionChain(transactionChainListener), this,
-            transactionChainsRegistry);
+    public DOMTransactionChain createMergingTransactionChain() {
+        return new TracingTransactionChain(delegate.createMergingTransactionChain(), this, transactionChainsRegistry);
     }
 
     @Override
@@ -308,21 +299,17 @@ public class TracingBroker implements TracingDOMDataBroker {
     }
 
     @Override
-    public <T extends DOMDataBrokerExtension> T extension(final Class<T> type) {
+    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(new DOMDataTreeChangeService() {
-                @Override
-                public <L extends DOMDataTreeChangeListener> ListenerRegistration<L> registerDataTreeChangeListener(
-                        final DOMDataTreeIdentifier domDataTreeIdentifier, final L listener) {
-                    final var rootId = domDataTreeIdentifier.getRootIdentifier();
-                    if (isRegistrationWatched(rootId, domDataTreeIdentifier.getDatastoreType())) {
-                        LOG.warn("{} registration (registerDataTreeChangeListener) for {} from {}.",
-                            listener instanceof ClusteredDOMDataTreeChangeListener ? "Clustered" : "Non-clustered",
+            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",
                             toPathString(rootId), getStackSummary());
-                    }
-                    return treeChange.registerDataTreeChangeListener(domDataTreeIdentifier, listener);
                 }
+                return treeChange.registerDataTreeChangeListener(domDataTreeIdentifier, listener);
             });
         }
         return ext;
@@ -371,6 +358,22 @@ public class TracingBroker implements TracingDOMDataBroker {
         return hasFound;
     }
 
+    final void logEmptySet(final YangInstanceIdentifier yiid) {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Empty data set write to {}", toPathString(yiid));
+        }
+    }
+
+    @SuppressFBWarnings(value = "SLF4J_SIGN_ONLY_FORMAT", justification = "pre-formatted logs")
+    static final void logOperations(final Object identifier, final List<?> operations) {
+        if (LOG.isWarnEnabled()) {
+            LOG.warn("Transaction {} contains the following operations:", identifier);
+            for (var operation : operations) {
+                LOG.warn("{}", operation);
+            }
+        }
+    }
+
     private <T extends CloseTracked<T>> boolean print(final CloseTrackedRegistry<T> registry, final PrintStream ps,
             final String indent, final int minOpenTransactions) {
         Set<CloseTrackedRegistryReportEntry<T>> unsorted = registry.getAllUnique();