Clean up RestconfRequestDispatcher a bit 29/113829/7
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 4 Oct 2024 12:19:40 +0000 (14:19 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 7 Oct 2024 13:24:48 +0000 (15:24 +0200)
This class is becoming a normal resource, hence it should not be logging
things on behalf of the entire component.

Move the logging bits to RestconfTransportChannelListener and move the
prepare() method just below the constructor, so that it is clear what is
going away at some point.

JIRA: NETCONF-1379
Change-Id: Ia5b9f168c164ac30341ae3cdc43eb2a34b696b84
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
protocol/restconf-server/src/main/java/org/opendaylight/restconf/server/RestconfRequestDispatcher.java
protocol/restconf-server/src/main/java/org/opendaylight/restconf/server/RestconfTransportChannelListener.java

index fe7f84289c83016683ba78628b4afec3744bf4f0..77f78b4b0ad73c2896018d034eb4af0e16f0fd7d 100644 (file)
@@ -59,10 +59,36 @@ final class RestconfRequestDispatcher extends AbstractResource {
             "operations", new OperationsResource(invariants),
             "yang-library-version", new YLVResource(invariants),
             "modules", new ModulesResource(invariants));
+    }
+
+    @Override
+    PreparedRequest prepare(final SegmentPeeler peeler, final ImplementedMethod method, final URI targetUri,
+            final HttpHeaders headers, final Principal principal) {
+        LOG.debug("Preparing {} {}", method, targetUri);
+
+        // peel all other segments out
+        for (var segment : otherSegments) {
+            if (!peeler.hasNext() || !segment.equals(peeler.next())) {
+                return NOT_FOUND;
+            }
+        }
+
+        if (!peeler.hasNext()) {
+            // FIXME: we are rejecting requests to '{+restconf}', which matches JAX-RS server behaviour, but is not
+            //        correct: we should be reporting the entire API Resource, as described in
+            //        https://www.rfc-editor.org/rfc/rfc8040#section-3.3
+            LOG.debug("Not servicing root request");
+            return NOT_FOUND;
+        }
 
-        LOG.info("{} initialized with service {}", getClass().getSimpleName(), server.getClass());
-        LOG.info("Base path: {}, default accept: {}, default pretty print: {}", restconfPath,
-            defaultEncoding.dataMediaType(), defaultPrettyPrint.value());
+        final var segment = peeler.next();
+        final var resource = resources.get(segment);
+        if (resource != null) {
+            return resource.prepare(peeler, method, targetUri, headers, principal);
+        }
+
+        LOG.debug("Resource for '{}' not found", segment);
+        return NOT_FOUND;
     }
 
     String firstSegment() {
@@ -165,34 +191,4 @@ final class RestconfRequestDispatcher extends AbstractResource {
             }
         }
     }
-
-    @Override
-    PreparedRequest prepare(final SegmentPeeler peeler, final ImplementedMethod method, final URI targetUri,
-            final HttpHeaders headers, final Principal principal) {
-        LOG.debug("Preparing {} {}", method, targetUri);
-
-        // peel all other segments out
-        for (var segment : otherSegments) {
-            if (!peeler.hasNext() || !segment.equals(peeler.next())) {
-                return NOT_FOUND;
-            }
-        }
-
-        if (!peeler.hasNext()) {
-            // FIXME: we are rejecting requests to '{+restconf}', which matches JAX-RS server behaviour, but is not
-            //        correct: we should be reporting the entire API Resource, as described in
-            //        https://www.rfc-editor.org/rfc/rfc8040#section-3.3
-            LOG.debug("Not servicing root request");
-            return NOT_FOUND;
-        }
-
-        final var segment = peeler.next();
-        final var resource = resources.get(segment);
-        if (resource != null) {
-            return resource.prepare(peeler, method, targetUri, headers, principal);
-        }
-
-        LOG.debug("Resource for '{}' not found", segment);
-        return NOT_FOUND;
-    }
 }
index c2855a61a8adf066e9a186073eae70f809f52bbe..d96ef1da0837ff67a31244c8e79ff03d1ecdb742 100644 (file)
@@ -43,10 +43,13 @@ final class RestconfTransportChannelListener implements TransportChannelListener
             sb.append('/').append(URLEncoder.encode(segment, StandardCharsets.UTF_8));
         }
         restconf = sb.toString();
-
         wellKnown = new WellKnownResources(restconf);
         dispatcher = new RestconfRequestDispatcher(server, principalService, apiRootPath, sb.append('/').toString(),
             configuration.errorTagMapping(), configuration.defaultEncoding(), configuration.prettyPrint());
+
+        LOG.info("Initialized with service {}", server.getClass());
+        LOG.info("Initialized with base path: {}, default encoding: {}, default pretty print: {}", restconf,
+            configuration.defaultEncoding(), configuration.prettyPrint().value());
     }
 
     @Override