Repository: wicket Updated Branches: refs/heads/master 0d5011480 -> ada27ba4e
Revert "simplify filter handling: don't pass the chain around, use the boolean return in #doFilter() instead" This reverts commit 0d50114800b44c888ec3d719e06427d4f322925c. Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/af24051e Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/af24051e Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/af24051e Branch: refs/heads/master Commit: af24051e23be8795301b7214db3675528a1aed06 Parents: 0d50114 Author: Sven Meier <svenme...@apache.org> Authored: Fri Oct 9 13:48:55 2015 +0200 Committer: Sven Meier <svenme...@apache.org> Committed: Fri Oct 9 13:48:55 2015 +0200 ---------------------------------------------------------------------- .../wicket/protocol/http/WicketFilter.java | 24 +++++++++++++------- .../wicket/protocol/http/WicketServlet.java | 4 ++-- .../wicket/protocol/http/WicketFilterTest.java | 8 +++++-- 3 files changed, 24 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/af24051e/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java index 197603d..d73a4a7 100644 --- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java +++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketFilter.java @@ -132,12 +132,13 @@ public class WicketFilter implements Filter * * @param request * @param response + * @param chain * @return false, if the request could not be processed * @throws IOException * @throws ServletException */ - boolean processRequest(ServletRequest request, final ServletResponse response) - throws IOException, ServletException + boolean processRequest(ServletRequest request, final ServletResponse response, + final FilterChain chain) throws IOException, ServletException { final ThreadContext previousThreadContext = ThreadContext.detach(); @@ -168,6 +169,10 @@ public class WicketFilter implements Filter if (shouldIgnorePath(httpServletRequest)) { log.debug("Ignoring request {}", httpServletRequest.getRequestURL()); + if (chain != null) + { + chain.doFilter(request, response); + } return false; } @@ -196,7 +201,7 @@ public class WicketFilter implements Filter RequestCycle requestCycle = application.createRequestCycle(webRequest, webResponse); res = processRequestCycle(requestCycle, webResponse, httpServletRequest, - httpServletResponse); + httpServletResponse, chain); } else { @@ -241,13 +246,14 @@ public class WicketFilter implements Filter * @param webResponse * @param httpServletRequest * @param httpServletResponse + * @param chain * @return false, if the request could not be processed * @throws IOException * @throws ServletException */ protected boolean processRequestCycle(RequestCycle requestCycle, WebResponse webResponse, - HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) - throws IOException, ServletException + HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, + final FilterChain chain) throws IOException, ServletException { // Assume we are able to handle the request boolean res = true; @@ -258,6 +264,10 @@ public class WicketFilter implements Filter } else { + if (chain != null) + { + chain.doFilter(httpServletRequest, httpServletResponse); + } res = false; } return res; @@ -271,9 +281,7 @@ public class WicketFilter implements Filter public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { - if (!processRequest(request, response)) { - chain.doFilter(request, response); - } + processRequest(request, response, chain); } /** http://git-wip-us.apache.org/repos/asf/wicket/blob/af24051e/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java index 2a8731e..5768c4f 100644 --- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java +++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WicketServlet.java @@ -134,7 +134,7 @@ public class WicketServlet extends HttpServlet public final void doGet(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse) throws ServletException, IOException { - if (wicketFilter.processRequest(servletRequest, servletResponse) == false) + if (wicketFilter.processRequest(servletRequest, servletResponse, null) == false) { fallback(servletRequest, servletResponse); } @@ -156,7 +156,7 @@ public class WicketServlet extends HttpServlet public final void doPost(final HttpServletRequest servletRequest, final HttpServletResponse servletResponse) throws ServletException, IOException { - if (wicketFilter.processRequest(servletRequest, servletResponse) == false) + if (wicketFilter.processRequest(servletRequest, servletResponse, null) == false) { fallback(servletRequest, servletResponse); } http://git-wip-us.apache.org/repos/asf/wicket/blob/af24051e/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java index f1b4ce9..7fc36a7 100644 --- a/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/protocol/http/WicketFilterTest.java @@ -484,23 +484,27 @@ public class WicketFilterTest extends Assert return (String)invocation.getArguments()[0]; } }); + FilterChain chain = mock(FilterChain.class); // execute 3 requests - 1 for bla.js, 1 for bla.css and 1 for bla.img for (int i = 0; i < 3; i++) { - boolean isProcessed = filter.processRequest(request, response); + boolean isProcessed = filter.processRequest(request, response, chain); assertFalse(isProcessed); verify(application, Mockito.never()).newWebRequest(Matchers.eq(request), Matchers.anyString()); verify(application, Mockito.never()).newWebResponse(Matchers.any(WebRequest.class), Matchers.eq(response)); + verify(chain, Mockito.times(i + 1)).doFilter(request, response); } // execute the request to /something/real - boolean isProcessed = filter.processRequest(request, response); + boolean isProcessed = filter.processRequest(request, response, chain); assertTrue(isProcessed); verify(application).newWebRequest(Matchers.eq(request), Matchers.anyString()); verify(application).newWebResponse(Matchers.any(WebRequest.class), Matchers.eq(response)); + // the request is processed so the chain is not executed + verify(chain, Mockito.times(3)).doFilter(request, response); } /**