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

This commit is contained in:
Oleg Zhurakousky
2011-01-19 20:31:05 -05:00
parent 7aa464c086
commit 8ee0af309f
2 changed files with 11 additions and 2 deletions

View File

@@ -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());
}
}
}

View File

@@ -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;