From 8ee0af309f9088d8ad839c3aa3d94f9bdb63c0ca Mon Sep 17 00:00:00 2001 From: Oleg Zhurakousky Date: Wed, 19 Jan 2011 20:31:05 -0500 Subject: [PATCH] INT-1753, INT-1754 added support for returning HttpStatus as MessageHeader rehgardles of the payload to the Http Outbound Gateway. Added support forreturning with HttpStatus set by downstream endpoint to Http Inbound Gateway --- .../inbound/HttpRequestHandlingMessagingGateway.java | 9 ++++++++- .../outbound/HttpRequestExecutingMessageHandler.java | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingMessagingGateway.java b/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingMessagingGateway.java index 574c3d3b3b..7507454e38 100644 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingMessagingGateway.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/inbound/HttpRequestHandlingMessagingGateway.java @@ -23,6 +23,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.server.ServletServerHttpRequest; @@ -52,6 +53,7 @@ import org.springframework.web.HttpRequestHandler; * the {@link #setMessageConverters(List)} method. * * @author Mark Fisher + * @author Oleg Zhurakousky * @since 2.0 */ public class HttpRequestHandlingMessagingGateway extends HttpRequestHandlingEndpointSupport implements HttpRequestHandler { @@ -96,7 +98,12 @@ public class HttpRequestHandlingMessagingGateway extends HttpRequestHandlingEndp if (responseContent != null) { ServletServerHttpRequest request = new ServletServerHttpRequest(servletRequest); ServletServerHttpResponse response = new ServletServerHttpResponse(servletResponse); - this.writeResponse(responseContent, response, request.getHeaders().getAccept()); + if (responseContent instanceof HttpStatus){ + response.setStatusCode((HttpStatus) responseContent); + } + else { + this.writeResponse(responseContent, response, request.getHeaders().getAccept()); + } } } diff --git a/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java b/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java index 7e57479cfc..9d9808f540 100755 --- a/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java +++ b/spring-integration-http/src/main/java/org/springframework/integration/http/outbound/HttpRequestExecutingMessageHandler.java @@ -240,7 +240,9 @@ public class HttpRequestExecutingMessageHandler extends AbstractReplyProducingMe return replyBuilder.copyHeaders(headers).build(); } else { - return MessageBuilder.withPayload(httpResponse.getStatusCode()).copyHeaders(headers).build(); + return MessageBuilder.withPayload(httpResponse.getStatusCode()). + copyHeaders(headers).setHeader(org.springframework.integration.http.HttpHeaders.STATUS_CODE, httpResponse.getStatusCode()). + build(); } } return null;