From c0718ab747b2172e638487ab56e9a84d7c6c91bd Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Mon, 26 Jul 2010 22:42:32 +0000 Subject: [PATCH] INT-1245, INT-1256 post-processing request in finally block --- .../HttpRequestHandlingEndpointSupport.java | 67 ++++++++++--------- 1 file changed, 35 insertions(+), 32 deletions(-) diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingEndpointSupport.java b/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingEndpointSupport.java index c5540666fb..e575dc1fef 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingEndpointSupport.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/HttpRequestHandlingEndpointSupport.java @@ -208,42 +208,45 @@ abstract class HttpRequestHandlingEndpointSupport extends AbstractMessagingGatew * the reply Message once received. */ protected final Object doHandleRequest(HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws IOException { - ServletServerHttpRequest request = this.prepareRequest(servletRequest); - if (!this.supportedMethods.contains(request.getMethod())) { - servletResponse.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); - this.postProcessRequest(servletRequest); - return null; - } - Object payload = null; - if (this.isReadable(request)) { - payload = this.generatePayloadFromRequestBody(request); - } - else { - payload = this.convertParameterMap(servletRequest.getParameterMap()); - } - Map headers = this.headerMapper.toHeaders(request.getHeaders()); - Message message = MessageBuilder.withPayload(payload) - .copyHeaders(headers) - .setHeader(org.springframework.integration.http.HttpHeaders.REQUEST_URL, request.getURI().toString()) - .setHeader(org.springframework.integration.http.HttpHeaders.REQUEST_METHOD, request.getMethod().toString()) - .setHeader(org.springframework.integration.http.HttpHeaders.USER_PRINCIPAL, servletRequest.getUserPrincipal()) - .build(); - Object reply = null; - if (this.expectReply) { - reply = this.sendAndReceiveMessage(message); - if (reply != null) { - ServletServerHttpResponse response = new ServletServerHttpResponse(servletResponse); - this.headerMapper.fromHeaders(((Message) reply).getHeaders(), response.getHeaders()); - if (this.extractReplyPayload) { - reply = ((Message) reply).getPayload(); + try { + ServletServerHttpRequest request = this.prepareRequest(servletRequest); + if (!this.supportedMethods.contains(request.getMethod())) { + servletResponse.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); + return null; + } + Object payload = null; + if (this.isReadable(request)) { + payload = this.generatePayloadFromRequestBody(request); + } + else { + payload = this.convertParameterMap(servletRequest.getParameterMap()); + } + Map headers = this.headerMapper.toHeaders(request.getHeaders()); + Message message = MessageBuilder.withPayload(payload) + .copyHeaders(headers) + .setHeader(org.springframework.integration.http.HttpHeaders.REQUEST_URL, request.getURI().toString()) + .setHeader(org.springframework.integration.http.HttpHeaders.REQUEST_METHOD, request.getMethod().toString()) + .setHeader(org.springframework.integration.http.HttpHeaders.USER_PRINCIPAL, servletRequest.getUserPrincipal()) + .build(); + Object reply = null; + if (this.expectReply) { + reply = this.sendAndReceiveMessage(message); + if (reply != null) { + ServletServerHttpResponse response = new ServletServerHttpResponse(servletResponse); + this.headerMapper.fromHeaders(((Message) reply).getHeaders(), response.getHeaders()); + if (this.extractReplyPayload) { + reply = ((Message) reply).getPayload(); + } } } + else { + this.send(message); + } + return reply; } - else { - this.send(message); + finally { + this.postProcessRequest(servletRequest); } - this.postProcessRequest(servletRequest); - return reply; } /**