Share codepath in ServerChannelInitializer 37/111137/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 28 Mar 2024 12:36:26 +0000 (13:36 +0100)
committerRobert Varga <nite@hq.sk>
Mon, 1 Apr 2024 15:13:40 +0000 (15:13 +0000)
The failure path shares the same epilogue as the success path. Dispatch
to onSuccess() to share the actual code.

JIRA: NETCONF-1248
Change-Id: I34f9bf37e3652fab6a1a5691ceabedf4132b4124
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
transport/transport-http/src/main/java/org/opendaylight/netconf/transport/http/ServerChannelInitializer.java

index 92e3832ecbe4773c2214d119d2f628e2b4771c9e..642fd6fa1ff7472fb966a974927547bc62bed1e5 100644 (file)
@@ -162,31 +162,28 @@ class ServerChannelInitializer extends ChannelInitializer<Channel> implements Ht
     private static ChannelHandler serverHandler(final RequestDispatcher dispatcher) {
         return new SimpleChannelInboundHandler<FullHttpRequest>() {
             @Override
-            protected void channelRead0(final ChannelHandlerContext ctx, final FullHttpRequest request)
-                    throws Exception {
-                Futures.addCallback(dispatcher.dispatch(request.retain()),
-                    new FutureCallback<>() {
-                        @Override
-                        public void onSuccess(final FullHttpResponse response) {
-                            copyStreamId(request, response);
-                            request.release();
-                            ctx.writeAndFlush(response);
-                        }
-
-                        @Override
-                        public void onFailure(final Throwable throwable) {
-                            final var message = throwable.getMessage();
-                            final var content = message == null ? EMPTY_BUFFER
-                                : Unpooled.wrappedBuffer(message.getBytes(StandardCharsets.UTF_8));
-                            final var response = new DefaultFullHttpResponse(request.protocolVersion(),
-                                INTERNAL_SERVER_ERROR, content);
-                            response.headers().set(CONTENT_TYPE, TEXT_PLAIN)
-                                .setInt(CONTENT_LENGTH, response.content().readableBytes());
-                            copyStreamId(request, response);
-                            request.release();
-                            ctx.writeAndFlush(response);
-                        }
-                    }, MoreExecutors.directExecutor());
+            protected void channelRead0(final ChannelHandlerContext ctx, final FullHttpRequest request) {
+                Futures.addCallback(dispatcher.dispatch(request.retain()), new FutureCallback<>() {
+                    @Override
+                    public void onSuccess(final FullHttpResponse response) {
+                        copyStreamId(request, response);
+                        request.release();
+                        ctx.writeAndFlush(response);
+                    }
+
+                    @Override
+                    public void onFailure(final Throwable throwable) {
+                        final var message = throwable.getMessage();
+                        final var content = message == null ? EMPTY_BUFFER
+                            : Unpooled.wrappedBuffer(message.getBytes(StandardCharsets.UTF_8));
+                        final var response = new DefaultFullHttpResponse(request.protocolVersion(),
+                            INTERNAL_SERVER_ERROR, content);
+                        response.headers()
+                            .set(CONTENT_TYPE, TEXT_PLAIN)
+                            .setInt(CONTENT_LENGTH, response.content().readableBytes());
+                        onSuccess(response);
+                    }
+                }, MoreExecutors.directExecutor());
             }
         };
     }