Commit a7338e18 authored by Dave Syer's avatar Dave Syer

Merge branch '1.1.x'

parents 68582bba 9372d154
...@@ -56,7 +56,7 @@ import org.springframework.web.filter.OncePerRequestFilter; ...@@ -56,7 +56,7 @@ import org.springframework.web.filter.OncePerRequestFilter;
@Component @Component
@Order(Ordered.HIGHEST_PRECEDENCE) @Order(Ordered.HIGHEST_PRECEDENCE)
class ErrorPageFilter extends AbstractConfigurableEmbeddedServletContainer implements class ErrorPageFilter extends AbstractConfigurableEmbeddedServletContainer implements
Filter, NonEmbeddedServletContainerFactory { Filter, NonEmbeddedServletContainerFactory {
private static Log logger = LogFactory.getLog(ErrorPageFilter.class); private static Log logger = LogFactory.getLog(ErrorPageFilter.class);
...@@ -123,19 +123,20 @@ Filter, NonEmbeddedServletContainerFactory { ...@@ -123,19 +123,20 @@ Filter, NonEmbeddedServletContainerFactory {
private void handleErrorStatus(HttpServletRequest request, private void handleErrorStatus(HttpServletRequest request,
HttpServletResponse response, int status, String message) HttpServletResponse response, int status, String message)
throws ServletException, IOException { throws ServletException, IOException {
String errorPath = getErrorPath(this.statuses, status); String errorPath = getErrorPath(this.statuses, status);
if (errorPath == null) { if (errorPath == null) {
response.sendError(status, message); response.sendError(status, message);
return; return;
} }
response.setStatus(status);
setErrorAttributes(request, status, message); setErrorAttributes(request, status, message);
request.getRequestDispatcher(errorPath).forward(request, response); request.getRequestDispatcher(errorPath).forward(request, response);
} }
private void handleException(HttpServletRequest request, private void handleException(HttpServletRequest request,
HttpServletResponse response, ErrorWrapperResponse wrapped, Throwable ex) HttpServletResponse response, ErrorWrapperResponse wrapped, Throwable ex)
throws IOException, ServletException { throws IOException, ServletException {
Class<?> type = ex.getClass(); Class<?> type = ex.getClass();
String errorPath = getErrorPath(type); String errorPath = getErrorPath(type);
if (errorPath == null) { if (errorPath == null) {
......
...@@ -63,6 +63,28 @@ public class ErrorPageFilterTests { ...@@ -63,6 +63,28 @@ public class ErrorPageFilterTests {
assertTrue(this.response.isCommitted()); assertTrue(this.response.isCommitted());
} }
@Test
public void unauthorizedWithErrorPath() throws Exception {
this.filter.addErrorPages(new ErrorPage("/error"));
this.chain = new MockFilterChain() {
@Override
public void doFilter(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
((HttpServletResponse) response).sendError(401, "UNAUTHORIZED");
super.doFilter(request, response);
}
};
this.filter.doFilter(this.request, this.response, this.chain);
assertThat(this.chain.getRequest(), equalTo((ServletRequest) this.request));
HttpServletResponseWrapper wrapper = (HttpServletResponseWrapper) this.chain
.getResponse();
assertThat(wrapper.getResponse(), equalTo((ServletResponse) this.response));
assertTrue(this.response.isCommitted());
assertThat(wrapper.getStatus(), equalTo(401));
// The real response has to be 401 as well...
assertThat(this.response.getStatus(), equalTo(401));
}
@Test @Test
public void responseCommitted() throws Exception { public void responseCommitted() throws Exception {
this.filter.addErrorPages(new ErrorPage("/error")); this.filter.addErrorPages(new ErrorPage("/error"));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment