From d3e05296e175d13533f4abbb43673ecc1a3582c8 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 14 Dec 2016 13:48:40 -0500 Subject: [PATCH] Replace close method with Undertow exchange listener The Undertow HttpServerExchange has a complete listener which we can use instead of the close() method UndertowServerHttpRequest. --- .../server/reactive/UndertowHttpHandlerAdapter.java | 2 -- .../server/reactive/UndertowServerHttpRequest.java | 11 ++++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowHttpHandlerAdapter.java b/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowHttpHandlerAdapter.java index 273f9549f6..15eb1d4a68 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowHttpHandlerAdapter.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowHttpHandlerAdapter.java @@ -76,13 +76,11 @@ public class UndertowHttpHandlerAdapter extends HttpHandlerAdapterSupport if (!exchange.isResponseStarted() && exchange.getStatusCode() <= 500) { exchange.setStatusCode(500); } - request.close(); exchange.endExchange(); } @Override public void onComplete() { logger.debug("Successfully completed request"); - request.close(); exchange.endExchange(); } }); diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpRequest.java b/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpRequest.java index e6161230cb..9ece475de5 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpRequest.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/UndertowServerHttpRequest.java @@ -58,7 +58,7 @@ public class UndertowServerHttpRequest extends AbstractServerHttpRequest { super(initUri(exchange), initHeaders(exchange)); this.exchange = exchange; this.body = new RequestBodyPublisher(exchange, dataBufferFactory); - this.body.registerListener(); + this.body.registerListener(exchange); } private static URI initUri(HttpServerExchange exchange) { @@ -107,9 +107,6 @@ public class UndertowServerHttpRequest extends AbstractServerHttpRequest { return Flux.from(this.body); } - void close() { - this.body.onAllDataRead(); - } private static class RequestBodyPublisher extends AbstractListenerReadPublisher { @@ -134,7 +131,11 @@ public class UndertowServerHttpRequest extends AbstractServerHttpRequest { this.dataBufferFactory = dataBufferFactory; } - private void registerListener() { + private void registerListener(HttpServerExchange exchange) { + exchange.addExchangeCompleteListener((ex, next) -> { + onAllDataRead(); + next.proceed(); + }); this.requestChannel.getReadSetter().set(this.readListener); this.requestChannel.getCloseSetter().set(this.closeListener); this.requestChannel.resumeReads();