Repository: wicket Updated Branches: refs/heads/wicket-6.x 702bf45a4 -> b5b2c9d10
WICKET-5689 Nested Redirects and REDIRECT_TO_BUFFER Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/b5b2c9d1 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b5b2c9d1 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b5b2c9d1 Branch: refs/heads/wicket-6.x Commit: b5b2c9d10e6ae1df0e44a5448558da285d0cea99 Parents: 702bf45 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Tue Sep 9 16:21:35 2014 +0300 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Tue Sep 9 16:21:35 2014 +0300 ---------------------------------------------------------------------- .../wicket/protocol/http/WebApplication.java | 9 +++--- .../request/handler/render/WebPageRenderer.java | 21 ++++++------ .../handler/render/WebPageRendererTest.java | 34 -------------------- 3 files changed, 16 insertions(+), 48 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/b5b2c9d1/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java index 3ad89e9..494e3e8 100644 --- a/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java +++ b/wicket-core/src/main/java/org/apache/wicket/protocol/http/WebApplication.java @@ -67,7 +67,6 @@ import org.apache.wicket.request.resource.CssResourceReference; import org.apache.wicket.request.resource.JavaScriptResourceReference; import org.apache.wicket.request.resource.ResourceReference; import org.apache.wicket.resource.bundles.ReplacementResourceBundleReference; -import org.apache.wicket.resource.bundles.ResourceBundleReference; import org.apache.wicket.session.HttpSessionStore; import org.apache.wicket.session.ISessionStore; import org.apache.wicket.util.IContextProvider; @@ -873,10 +872,12 @@ public abstract class WebApplication extends Application } /** - * - * @param sessionId + * Retrieves a stored buffered response for a given sessionId and url. + * * @param url - * @return buffered response + * The url used as a key + * @return the stored buffered response. {@code null} if there is no stored response for the given url + * @see org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy#REDIRECT_TO_BUFFER */ public BufferedWebResponse getAndRemoveBufferedResponse(String sessionId, Url url) { http://git-wip-us.apache.org/repos/asf/wicket/blob/b5b2c9d1/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java index 3376177..42128c3 100644 --- a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java +++ b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java @@ -87,6 +87,16 @@ public class WebPageRenderer extends PageRenderer WebApplication.get().storeBufferedResponse(getSessionId(), url, response); } + /** + * Retrieves a stored buffered response for a given url. + * + * @param url + * The url used as a key + * @return the stored buffered response. {@code null} if there is no stored response for the given url + * @see org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy#REDIRECT_TO_BUFFER + * @deprecated Will be removed in Wicket 7.0. Use {@link org.apache.wicket.protocol.http.WebApplication#getAndRemoveBufferedResponse(String, org.apache.wicket.request.Url)} instead + */ + @Deprecated protected BufferedWebResponse getAndRemoveBufferedResponse(Url url) { return WebApplication.get().getAndRemoveBufferedResponse(getSessionId(), url); @@ -195,20 +205,11 @@ public class WebPageRenderer extends PageRenderer // 3 rendering strategies and two kind of requests (ajax and normal) // - // try to get an already rendered buffered response for current URL - BufferedWebResponse bufferedResponse = getAndRemoveBufferedResponse(currentUrl); - boolean isAjax = isAjax(requestCycle); boolean shouldPreserveClientUrl = ((WebRequest)requestCycle.getRequest()).shouldPreserveClientUrl(); - if (bufferedResponse != null) - { - logger.warn("The Buffered response should be handled by BufferedResponseRequestHandler"); - // if there is saved response for this URL render it - bufferedResponse.writeTo((WebResponse)requestCycle.getResponse()); - } - else if ((isAjax == false) + if ((isAjax == false) && (compatibleProtocols(currentUrl.getProtocol(), targetUrl.getProtocol())) && (// getRedirectPolicy() == RedirectPolicy.NEVER_REDIRECT // || (isOnePassRender() && getRedirectPolicy() != RedirectPolicy.ALWAYS_REDIRECT) // http://git-wip-us.apache.org/repos/asf/wicket/blob/b5b2c9d1/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java index 2200b14..c45676a 100644 --- a/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java +++ b/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java @@ -335,40 +335,6 @@ public class WebPageRendererTest extends Assert } /** - * Tests that when there is already saved buffered response then it will be used without - * checking the rendering strategies or redirect policies - */ - @Test - public void testGetAndRemoveBufferedResponse() - { - final BufferedWebResponse bufferedResponse = mock(BufferedWebResponse.class); - - PageRenderer renderer = new TestPageRenderer(handler) - { - @Override - protected BufferedWebResponse getAndRemoveBufferedResponse(Url url) - { - return bufferedResponse; - } - - }; - - Url sameUrl = Url.parse("anything"); - - when(urlRenderer.getBaseUrl()).thenReturn(sameUrl); - - when(requestCycle.mapUrlFor(eq(handler))).thenReturn(sameUrl); - - when(request.shouldPreserveClientUrl()).thenReturn(false); - - renderer.respond(requestCycle); - - verify(bufferedResponse).writeTo(response); - verify(response, never()).write(any(byte[].class)); - verify(response, never()).sendRedirect(anyString()); - } - - /** * Tests that when {@link RenderPageRequestHandler#getRedirectPolicy()} is * {@link RedirectPolicy#ALWAYS_REDIRECT} there a redirect must be issued */
