WICKET-5152 Improve Wicket behavior in Servlet 3 async context
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e44c2850 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e44c2850 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e44c2850 Branch: refs/heads/master Commit: e44c2850e1ae607136c13d3c78498738719390f6 Parents: 4f45b19 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Wed May 1 10:40:53 2013 +0200 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Wed May 1 10:40:53 2013 +0200 ---------------------------------------------------------------------- .../apache/wicket/protocol/http/WicketFilter.java | 8 ++++---- .../protocol/http/servlet/ServletWebResponse.java | 7 ++++++- 2 files changed, 10 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/e44c2850/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 f40a0c9..0ce7a2a 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 @@ -146,6 +146,9 @@ public class WicketFilter implements Filter final ClassLoader previousClassLoader = Thread.currentThread().getContextClassLoader(); final ClassLoader newClassLoader = getClassLoader(); + HttpServletRequest httpServletRequest = (HttpServletRequest)request; + HttpServletResponse httpServletResponse = (HttpServletResponse)response; + try { if (previousClassLoader != newClassLoader) @@ -153,9 +156,6 @@ public class WicketFilter implements Filter Thread.currentThread().setContextClassLoader(newClassLoader); } - HttpServletRequest httpServletRequest = (HttpServletRequest)request; - HttpServletResponse httpServletResponse = (HttpServletResponse)response; - // Make sure getFilterPath() gets called before checkIfRedirectRequired() String filterPath = getFilterPath(httpServletRequest); @@ -229,7 +229,7 @@ public class WicketFilter implements Filter Thread.currentThread().setContextClassLoader(previousClassLoader); } - if (response.isCommitted()) + if (response.isCommitted() && httpServletRequest.isAsyncStarted() == false) { response.flushBuffer(); } http://git-wip-us.apache.org/repos/asf/wicket/blob/e44c2850/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java index c5fd540..61bb9ef 100644 --- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java +++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebResponse.java @@ -19,6 +19,7 @@ package org.apache.wicket.protocol.http.servlet; import java.io.IOException; import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.wicket.WicketRuntimeException; @@ -285,7 +286,11 @@ public class ServletWebResponse extends WebResponse { try { - httpServletResponse.flushBuffer(); + HttpServletRequest httpServletRequest = webRequest.getContainerRequest(); + if (httpServletRequest.isAsyncStarted() == false) + { + httpServletResponse.flushBuffer(); + } } catch (IOException e) {
