Trim SubscriptionUtil constants, part one 53/116453/5
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 6 May 2025 02:40:14 +0000 (04:40 +0200)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Wed, 7 May 2025 11:44:34 +0000 (11:44 +0000)
YangInstanceIdentifiers we have here are either unused or used by tests.
Inline what's used into individual users, make things a bit more
explicit.

One exception is SUBSCRIBERS, which we turn into a utility method in
MdsalRestconfStreamRegistry. where most of its users live. This
eliminate duplicated NodeIdentifierWithPredicates invocations.

Change-Id: I96b8a8b411e963c33d99b9a1c00256acaacfeb0a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
apps/restconf-subscription/src/main/java/org/opendaylight/restconf/subscription/SubscriptionUtil.java
apps/restconf-subscription/src/test/java/org/opendaylight/restconf/subscription/DeleteSubscriptionRpcTest.java
apps/restconf-subscription/src/test/java/org/opendaylight/restconf/subscription/EstablishSubscriptionRpcTest.java
apps/restconf-subscription/src/test/java/org/opendaylight/restconf/subscription/KillSubscriptionRpcTest.java
apps/restconf-subscription/src/test/java/org/opendaylight/restconf/subscription/ModifySubscriptionRpcTest.java
plugins/restconf-server-mdsal/src/main/java/org/opendaylight/restconf/server/mdsal/MdsalRestconfStreamRegistry.java
plugins/restconf-server-mdsal/src/main/java/org/opendaylight/restconf/server/mdsal/MdsalRestconfStreamSubscription.java

index 7dbd828b988aa44eb80593a176120fef3c0fbcdb..982e9b0db5ae63e603576ac4db66f4f7150ed44a 100644 (file)
@@ -10,9 +10,6 @@ package org.opendaylight.restconf.subscription;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.restconf.server.spi.RestconfStream.SubscriptionFilter;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.EstablishSubscriptionInput;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Filters;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Streams;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Subscriptions;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.filters.StreamFilter;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.stream.filter.elements.FilterSpec;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.stream.filter.elements.filter.spec.stream.subtree.filter.StreamSubtreeFilter;
@@ -20,22 +17,12 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscriptions.Subscription;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscriptions.subscription.receivers.Receiver;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.AnydataNode;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 
 public final class SubscriptionUtil {
-    public static final YangInstanceIdentifier SUBSCRIPTIONS = YangInstanceIdentifier.of(
-        NodeIdentifier.create(Subscriptions.QNAME),
-        NodeIdentifier.create(Subscription.QNAME));
-    public static final YangInstanceIdentifier STREAMS = YangInstanceIdentifier.of(
-        NodeIdentifier.create(Streams.QNAME),
-        NodeIdentifier.create(Stream.QNAME));
-    public static final YangInstanceIdentifier FILTERS = YangInstanceIdentifier.of(
-        NodeIdentifier.create(Filters.QNAME),
-        NodeIdentifier.create(StreamFilter.QNAME));
     public static final QName QNAME_ID = QName.create(Subscription.QNAME, "id");
     public static final QName QNAME_STREAM = QName.create(Subscription.QNAME, "stream");
     public static final QName QNAME_STREAM_FILTER = QName.create(Subscription.QNAME, "stream-filter-name");
index 9be37f93d2141992ccf28ababc1bc0b5577c9dbc..67e7399982d335ce7d62116b560bc8df901e0f16 100644 (file)
@@ -36,8 +36,10 @@ import org.opendaylight.restconf.server.spi.RestconfStream;
 import org.opendaylight.restconf.server.spi.RestconfStream.SubscriptionState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.DeleteSubscriptionInput;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.DeleteSubscriptionOutput;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Subscriptions;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscriptions.Subscription;
 import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -95,8 +97,8 @@ class DeleteSubscriptionRpcTest {
         doReturn(SubscriptionState.ACTIVE).when(subscription).state();
 
         rpc.invoke(request, RESTCONF_URI, new OperationInput(operationPath, INPUT));
-        verify(writeTx).delete(eq(LogicalDatastoreType.OPERATIONAL),
-            eq(SubscriptionUtil.SUBSCRIPTIONS.node(IDENTIFIER)));
+        verify(writeTx).delete(eq(LogicalDatastoreType.OPERATIONAL), eq(YangInstanceIdentifier.of(
+            new NodeIdentifier(Subscriptions.QNAME), new NodeIdentifier(Subscription.QNAME), IDENTIFIER)));
         verify(request).completeWith(eq(responseBuilder));
     }
 
index 2749df08625f30951c1ddbd3bbb4ec84cfd8ff3c..ea8e86192baf5f4bbf3be2cc571d0b03bfcd59d3 100644 (file)
@@ -35,6 +35,8 @@ import org.opendaylight.restconf.server.spi.RestconfStream;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.EncodeJson$I;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.EstablishSubscriptionInput;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.EstablishSubscriptionOutput;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Filters;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Subscriptions;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.filters.StreamFilter;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscription.policy.modifiable.Target;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscriptions.Subscription;
@@ -42,6 +44,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.
 import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -117,8 +120,8 @@ class EstablishSubscriptionRpcTest {
         doReturn(session).when(request).session();
 
         rpc.invoke(request, RESTCONF_URI, new OperationInput(operationPath, getInput()));
-        verify(writeTx).put(eq(LogicalDatastoreType.OPERATIONAL),
-            eq(SubscriptionUtil.SUBSCRIPTIONS.node(expectedNode.name())),
+        verify(writeTx).put(eq(LogicalDatastoreType.OPERATIONAL), eq(YangInstanceIdentifier.of(
+            new NodeIdentifier(Subscriptions.QNAME), new NodeIdentifier(Subscription.QNAME), expectedNode.name())),
             eq(expectedNode));
         verify(request).completeWith(eq(responseBuilder));
     }
@@ -163,8 +166,11 @@ class EstablishSubscriptionRpcTest {
         doReturn(readTx).when(dataBroker).newReadOnlyTransaction();
         doReturn(restconfStream).when(streamRegistry).lookupStream("NETCONF");
         doReturn(FluentFutures.immediateFalseFluentFuture()).when(readTx).exists(LogicalDatastoreType.OPERATIONAL,
-            SubscriptionUtil.FILTERS.node(NodeIdentifierWithPredicates.of(StreamFilter.QNAME,
-                SubscriptionUtil.QNAME_STREAM_FILTER_NAME, "filter")));
+            YangInstanceIdentifier.of(
+                new NodeIdentifier(Filters.QNAME),
+                new NodeIdentifier(StreamFilter.QNAME),
+                NodeIdentifierWithPredicates.of(StreamFilter.QNAME,
+                    SubscriptionUtil.QNAME_STREAM_FILTER_NAME, "filter")));
         doReturn(session).when(request).session();
 
         rpc.invoke(request, RESTCONF_URI, new OperationInput(operationPath, input));
index 46e697dab221b1a2138109e97c51d61dbe80066a..3f11f95f3c647e469119be1e6da937f843929080 100644 (file)
@@ -35,9 +35,11 @@ import org.opendaylight.restconf.server.spi.RestconfStream;
 import org.opendaylight.restconf.server.spi.RestconfStream.SubscriptionState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.KillSubscriptionInput;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.KillSubscriptionOutput;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Subscriptions;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscriptions.Subscription;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
@@ -89,8 +91,10 @@ class KillSubscriptionRpcTest {
         doReturn(SubscriptionState.ACTIVE).when(subscription).state();
 
         rpc.invoke(request, RESTCONF_URI, new OperationInput(operationPath, INPUT));
-        verify(writeTx).delete(eq(LogicalDatastoreType.OPERATIONAL),
-            eq(SubscriptionUtil.SUBSCRIPTIONS.node(IDENTIFIER)));
+        verify(writeTx).delete(eq(LogicalDatastoreType.OPERATIONAL), eq(YangInstanceIdentifier.of(
+            new NodeIdentifier(Subscriptions.QNAME),
+            new NodeIdentifier(Subscription.QNAME),
+            IDENTIFIER)));
         verify(request).completeWith(eq(responseBuilder));
     }
 
index c80e9ecf5f4b024498492b7045b5bba125a65b46..44016317abed4c6ce73da1c88a2eb78e0b4a8e4f 100644 (file)
@@ -36,9 +36,11 @@ import org.opendaylight.restconf.server.spi.RestconfStream;
 import org.opendaylight.restconf.server.spi.RestconfStream.SubscriptionState;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.EstablishSubscriptionInput;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.ModifySubscriptionOutput;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.Subscriptions;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscriptions.Subscription;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 
@@ -98,8 +100,8 @@ class ModifySubscriptionRpcTest {
         doReturn(SubscriptionState.ACTIVE).when(subscription).state();
 
         rpc.invoke(request, RESTCONF_URI, new OperationInput(operationPath, INPUT));
-        verify(writeTx).merge(eq(LogicalDatastoreType.OPERATIONAL),
-            eq(SubscriptionUtil.SUBSCRIPTIONS.node(expectedNode.name())),
+        verify(writeTx).merge(eq(LogicalDatastoreType.OPERATIONAL), eq(YangInstanceIdentifier.of(
+            new NodeIdentifier(Subscriptions.QNAME), new NodeIdentifier(Subscription.QNAME), expectedNode.name())),
             eq(expectedNode));
         verify(request).completeWith(eq(response));
     }
index 6c21bb2fb9e2c91e83da2288c056d73321829ed8..373cf666907637c9859a0dcdcbfd30a160c201be 100644 (file)
@@ -259,12 +259,12 @@ public final class MdsalRestconfStreamRegistry extends AbstractRestconfStreamReg
             final RestconfStream.Subscription subscription) {
         final var id = subscription.id();
         final var receiver = subscription.receiverName();
-        final var nodeId = NodeIdentifierWithPredicates.of(Subscription.QNAME, SubscriptionUtil.QNAME_ID, id);
+        final var pathArg = subscriptionArg(id);
 
         final var tx = dataBroker.newWriteOnlyTransaction();
-        tx.put(LogicalDatastoreType.OPERATIONAL, SubscriptionUtil.SUBSCRIPTIONS.node(nodeId),
+        tx.put(LogicalDatastoreType.OPERATIONAL, subscriptionPath(pathArg),
             ImmutableNodes.newMapEntryBuilder()
-                .withNodeIdentifier(nodeId)
+                .withNodeIdentifier(pathArg)
                 .withChild(ImmutableNodes.leafNode(SubscriptionUtil.QNAME_ID, id))
                 .withChild(ImmutableNodes.leafNode(ENCODING_NODEID, subscription.encoding()))
                 .withChild(ImmutableNodes.newChoiceBuilder()
@@ -317,11 +317,11 @@ public final class MdsalRestconfStreamRegistry extends AbstractRestconfStreamReg
                     .build();
         };
 
+        final var pathArg = subscriptionArg(id);
         final var tx = dataBroker.newWriteOnlyTransaction();
-        final var nodeId = NodeIdentifierWithPredicates.of(Subscription.QNAME, SubscriptionUtil.QNAME_ID, id);
-        tx.merge(LogicalDatastoreType.OPERATIONAL, SubscriptionUtil.SUBSCRIPTIONS.node(nodeId),
+        tx.merge(LogicalDatastoreType.OPERATIONAL, subscriptionPath(pathArg),
             ImmutableNodes.newMapEntryBuilder()
-                .withNodeIdentifier(nodeId)
+                .withNodeIdentifier(pathArg)
                 .withChild(ImmutableNodes.leafNode(SubscriptionUtil.QNAME_ID, id))
                 .withChild(ImmutableNodes.newChoiceBuilder()
                     .withNodeIdentifier(TARGET_NODEID)
@@ -359,4 +359,19 @@ public final class MdsalRestconfStreamRegistry extends AbstractRestconfStreamReg
         }
         return new SubtreeEventStreamFilter(databindFilter);
     }
+
+    @NonNullByDefault
+    static YangInstanceIdentifier subscriptionPath(final Uint32 subscriptionId) {
+        return subscriptionPath(subscriptionArg(subscriptionId));
+    }
+
+    @NonNullByDefault
+    private static YangInstanceIdentifier subscriptionPath(final NodeIdentifierWithPredicates pathArg) {
+        return YangInstanceIdentifier.of(SUBSCRIPTIONS_NODEID, SUBSCRIPTION_NODEID, pathArg);
+    }
+
+    @NonNullByDefault
+    private static NodeIdentifierWithPredicates subscriptionArg(final Uint32 subscriptionId) {
+        return NodeIdentifierWithPredicates.of(Subscription.QNAME, SubscriptionUtil.QNAME_ID, subscriptionId);
+    }
 }
index a0aca32fb9708ef52c56df421a5ffa5990e574be..103b759a7807f8d97672112854cb2b363b7a7dbc 100644 (file)
@@ -19,12 +19,9 @@ import org.opendaylight.netconf.databind.RequestException;
 import org.opendaylight.restconf.server.api.ServerRequest;
 import org.opendaylight.restconf.server.spi.ForwardingRestconfStreamSubscription;
 import org.opendaylight.restconf.server.spi.RestconfStream;
-import org.opendaylight.restconf.subscription.SubscriptionUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.subscribed.notifications.rev190909.subscriptions.Subscription;
 import org.opendaylight.yangtools.yang.common.Empty;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint32;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -56,8 +53,7 @@ final class MdsalRestconfStreamSubscription<T extends RestconfStream.Subscriptio
     private void removeSubscription(final Uint32 id, final ServerRequest<Empty> request,
             final QName terminationReason) {
         final var tx = dataBroker.newWriteOnlyTransaction();
-        tx.delete(LogicalDatastoreType.OPERATIONAL, SubscriptionUtil.SUBSCRIPTIONS.node(
-            NodeIdentifierWithPredicates.of(Subscription.QNAME, SubscriptionUtil.QNAME_ID, id)));
+        tx.delete(LogicalDatastoreType.OPERATIONAL, MdsalRestconfStreamRegistry.subscriptionPath(id));
         tx.commit().addCallback(new OnCommitFutureCallback() {
             @Override
             public void onSuccess(final CommitInfo result) {