WICKET-5486 WebPageRenderer should honor RedirectPolicy.ALWAYS_REDIRECT more 
consistently


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a79ed51e
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a79ed51e
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a79ed51e

Branch: refs/heads/master
Commit: a79ed51e9b6a667cf99c30e0a87e699cadabd648
Parents: 16adb63
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Mon Feb 24 16:46:31 2014 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Mon Feb 24 16:46:31 2014 +0200

----------------------------------------------------------------------
 .../request/handler/render/WebPageRenderer.java |  2 +-
 .../handler/render/WebPageRendererTest.java     | 32 +++++++++++++++++---
 2 files changed, 29 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a79ed51e/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 8c99c13..1b98bed 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
@@ -342,7 +342,7 @@ public class WebPageRenderer extends PageRenderer
                        || ((isOnePassRender() && 
notForcedRedirect(getRedirectPolicy())) || (targetUrl
                                .equals(currentUrl) && 
notNewAndNotStatelessPage(isNewPageInstance(),
                                isPageStateless()))) || 
(targetUrl.equals(currentUrl) && isRedirectToRender())
-                       || shouldPreserveClientUrl(cycle);
+                       || (shouldPreserveClientUrl(cycle) && 
notForcedRedirect(getRedirectPolicy()));
        }
 
        private static boolean notNewAndNotStatelessPage(boolean 
newPageInstance, boolean pageStateless)

http://git-wip-us.apache.org/repos/asf/wicket/blob/a79ed51e/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 411ed09..78e16e8 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
@@ -275,6 +275,30 @@ public class WebPageRendererTest
                verify(response, never()).sendRedirect(anyString());
        }
 
+    /**
+     * Tests that when {@link WebRequest#shouldPreserveClientUrl()} is 
<code>true</code>
+     * but {@link RenderPageRequestHandler#getRedirectPolicy()} is
+     * {@link RedirectPolicy#ALWAYS_REDIRECT} a redirect must be issued
+     *
+     * https://issues.apache.org/jira/browse/WICKET-5486
+     */
+    @Test
+    public void 
testShouldPreserveClientUrlOverruledByRedirectPolicyAlwaysRedirect()
+    {
+        TestPageRenderer renderer = new TestPageRenderer(handler);
+        renderer.shouldPreserveClientUrl = true;
+        renderer.redirectPolicy = RedirectPolicy.ALWAYS_REDIRECT;
+
+        when(urlRenderer.getBaseUrl()).thenReturn(Url.parse("something"));
+
+        
when(requestCycle.mapUrlFor(eq(handler))).thenReturn(Url.parse("different"));
+
+        renderer.respond(requestCycle);
+
+        verify(response, never()).write(any(byte[].class));
+        verify(response).sendRedirect(anyString());
+    }
+
        /**
         * Tests that when there is already saved buffered response then it 
will be used without
         * checking the rendering strategies or redirect policies
@@ -693,10 +717,10 @@ public class WebPageRendererTest
        public void shouldRenderPageAndWriteResponseVariation() {
 
                String match =
-                                               "    X   XXXXXXXX" +
-                                               "    XXXXXXXXXXXX" +
-                                               "    X   XXXXXXXX" +
-                                               "    XXXXXXXXXXXX" +
+                                               "    X       X   " +
+                                               "    XXXX    XXXX" +
+                                               "    X       X   " +
+                                               "    XXXX    XXXX" +
                                                "                " +
                                                "                " +
                                                "                " +

Reply via email to