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>
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;
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");
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;
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));
}
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;
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;
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));
}
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));
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;
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));
}
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;
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));
}
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()
.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)
}
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);
+ }
}
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;
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) {