node.body().forEach(entry -> {
final var name = extractFilterName(entry);
final var filterSpec = (ChoiceNode) entry.childByArg(FILTER_SPEC_NODEID);
+ if (filterSpec == null) {
+ removeFilter(name);
+ return;
+ }
+
final var subtree = extractFilter(filterSpec);
final EventStreamFilter filter;
try {
LOG.error("Failed to parse subtree {} filter", subtree, e);
throw new RuntimeException(e);
}
- putFilter(name ,filter);
+ putFilter(name, filter);
});
}
private static RestconfStream.SubscriptionFilter extractFilter(final ChoiceNode filterSpec) {
- if (filterSpec == null) {
- return null;
- }
final var subtree = (AnydataNode<?>) filterSpec.childByArg(STREAM_SUBTREE_FILTER_NODEID);
if (subtree != null) {
return new RestconfStream.SubscriptionFilter.SubtreeDefinition(subtree);
protected abstract ListenableFuture<Subscription> modifySubscriptionFilter(Subscription subscription,
SubscriptionFilter filter);
+ @NonNullByDefault
protected void putFilter(final String name, final EventStreamFilter filter) {
filters.put(name, filter);
}
+ @NonNullByDefault
protected void removeFilter(final String name) {
filters.remove(name);
}