Make parseSubtreeFilter throw RequestException 27/116427/2
authorIvan Hrasko <ivan.hrasko@pantheon.tech>
Mon, 5 May 2025 09:35:47 +0000 (11:35 +0200)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Mon, 5 May 2025 12:52:10 +0000 (12:52 +0000)
Make parseSubtreeFilter throw RequestException as it has been
originally designed as it is used from establish and modify
subscription RPCs mainly.

JIRA: NETCONF-714
Change-Id: I42dc53aae37180417787728ecf96047ca9e9b234
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
apps/sal-remote-impl/src/test/java/org/opendaylight/netconf/sal/remote/impl/CreateDataChangeEventSubscriptionRpcTest.java
plugins/restconf-server-mdsal/src/main/java/org/opendaylight/restconf/server/mdsal/MdsalRestconfStreamRegistry.java
protocol/restconf-server-spi/src/main/java/org/opendaylight/restconf/server/spi/AbstractRestconfStreamRegistry.java

index 42e4b737ad8d8f9e33fcba45fba91b8b34b65dd1..1a641ca41b8a4121976d40542195c8d44babecab 100644 (file)
@@ -93,7 +93,7 @@ class CreateDataChangeEventSubscriptionRpcTest {
         }
 
         @Override
-        protected EventStreamFilter parseSubtreeFilter(AnydataNode<?> filter) {
+        protected EventStreamFilter parseSubtreeFilter(final AnydataNode<?> filter) throws RequestException {
             throw new UnsupportedOperationException();
         }
     }
index bc9e52abdd63d28b4468931f3f31f17d1e954903..d41644335f4a9b216e9b649dd1cde2a1a4ab207a 100644 (file)
@@ -199,7 +199,7 @@ public final class MdsalRestconfStreamRegistry extends AbstractRestconfStreamReg
             @Reference final DatabindProvider databindProvider) {
         this.dataBroker = requireNonNull(dataBroker);
         this.notificationService = requireNonNull(notificationService);
-        this.databindProvider = databindProvider;
+        this.databindProvider = requireNonNull(databindProvider);
         final var changeService = dataBroker.extension(DOMDataBroker.DataTreeChangeExtension.class);
         if (changeService != null) {
             changeService.registerTreeChangeListener(DOMDataTreeIdentifier.of(LogicalDatastoreType.CONFIGURATION,
@@ -371,7 +371,7 @@ public final class MdsalRestconfStreamRegistry extends AbstractRestconfStreamReg
     }
 
     @Override
-    protected EventStreamFilter parseSubtreeFilter(final AnydataNode<?> filter) {
+    protected EventStreamFilter parseSubtreeFilter(final AnydataNode<?> filter) throws RequestException {
         final SubtreeFilter databindFilter;
         try {
             final var databindContext = databindProvider.currentDatabind();
@@ -388,7 +388,7 @@ public final class MdsalRestconfStreamRegistry extends AbstractRestconfStreamReg
                 .createXMLStreamReader(new ByteArrayInputStream(writer.toString().getBytes(StandardCharsets.UTF_8))));
         } catch (IOException | XMLStreamException e) {
             LOG.error("Failed to parse anydata to subtree filter", e);
-            throw new IllegalStateException("Failed to parse anydata to subtree filter", e);
+            throw new RequestException("Failed to parse anydata filter {} to subtree filter", filter, e);
         }
         return new SubtreeEventStreamFilter(databindFilter);
     }
index 7d94070dc3da9cc66049181a63fe49e01461019c..7c20a4789647d37320faad97af999c9ce7945820 100644 (file)
@@ -330,7 +330,7 @@ public abstract class AbstractRestconfStreamRegistry implements RestconfStream.R
     }
 
     @NonNullByDefault
-    protected abstract EventStreamFilter parseSubtreeFilter(AnydataNode<?> filter);
+    protected abstract EventStreamFilter parseSubtreeFilter(AnydataNode<?> filter) throws RequestException;
 
     @NonNullByDefault
     private static EventStreamFilter parseXpathFilter(final String xpath) throws RequestException {