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);
        }
 
        /**

Reply via email to