Author: mgrigorov
Date: Thu Oct 27 13:21:07 2011
New Revision: 1189742

URL: http://svn.apache.org/viewvc?rev=1189742&view=rev
Log:
WICKET-4173 Incorrect URL for setResponsePage() within a Form#onSubmit( )


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
    
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java?rev=1189742&r1=1189741&r2=1189742&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
 Thu Oct 27 13:21:07 2011
@@ -601,7 +601,7 @@ public class RequestCycle implements IRe
        {
                IPageProvider provider = new PageProvider(pageClass, null);
                scheduleRequestHandlerAfterCurrent(new 
RenderPageRequestHandler(provider,
-                       RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT));
+                       
RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT));
        }
 
 
@@ -616,7 +616,7 @@ public class RequestCycle implements IRe
        {
                IPageProvider provider = new PageProvider(pageClass, 
parameters);
                scheduleRequestHandlerAfterCurrent(new 
RenderPageRequestHandler(provider,
-                       RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT));
+                       
RenderPageRequestHandler.RedirectPolicy.ALWAYS_REDIRECT));
        }
 
        /**

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java?rev=1189742&r1=1189741&r2=1189742&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
 Thu Oct 27 13:21:07 2011
@@ -164,7 +164,7 @@ public class WebPageRenderer extends Pag
                        
bufferedResponse.writeTo((WebResponse)requestCycle.getResponse());
                }
                else if (getRedirectPolicy() == RedirectPolicy.NEVER_REDIRECT ||
-                       (isOnePassRender() && isAjax == false) //
+                       (isOnePassRender() && isAjax == false && 
getRedirectPolicy() != RedirectPolicy.ALWAYS_REDIRECT) //
                        ||
                        (!isAjax //
                                &&

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java?rev=1189742&r1=1189741&r2=1189742&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/request/handler/render/WebPageRendererTest.java
 Thu Oct 27 13:21:07 2011
@@ -110,6 +110,41 @@ public class WebPageRendererTest
        }
 
        /**
+        * Tests that even when {@link 
IRequestCycleSettings.RenderStrategy#ONE_PASS_RENDER} is
+        * configured but the {@link RedirectPolicy} says that it needs to 
redirect it will redirect.
+        */
+       @Test
+       public void testOnePassRenderWithAlwaysRedirect()
+       {
+
+               PageRenderer renderer = new TestPageRenderer(handler)
+               {
+                       @Override
+                       protected boolean isOnePassRender()
+                       {
+                               return true;
+                       }
+
+                       @Override
+                       protected RedirectPolicy getRedirectPolicy()
+                       {
+                               return RedirectPolicy.ALWAYS_REDIRECT;
+                       }
+               };
+
+               when(urlRenderer.getBaseUrl()).thenReturn(Url.parse("base"));
+
+               
when(requestCycle.mapUrlFor(eq(handler))).thenReturn(Url.parse("base/a"));
+
+               when(request.shouldPreserveClientUrl()).thenReturn(false);
+
+               renderer.respond(requestCycle);
+
+               verify(response, never()).write(any(byte[].class));
+               verify(response).sendRedirect(anyString());
+       }
+
+       /**
         * Tests that when {@link 
IRequestCycleSettings.RenderStrategy#ONE_PASS_RENDER} is configured
         * but the current request is Ajax then a redirect should be issued
         */


Reply via email to