Author: mgrigorov
Date: Wed Jun 29 08:58:04 2011
New Revision: 1141012

URL: http://svn.apache.org/viewvc?rev=1141012&view=rev
Log:
WICKET-3844 Fallback to RedirectToBuffer render strategy if none of the 
conditions match

Modified:
    
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/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=1141012&r1=1141011&r2=1141012&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
 Wed Jun 29 08:58:04 2011
@@ -213,8 +213,13 @@ public class WebPageRenderer extends Pag
                        // is pretty much what the next step does)
                        redirectTo(targetUrl, requestCycle);
                }
-               else if (isRedirectToBuffer())
+               else
                {
+                       if (isRedirectToBuffer() == false && 
logger.isWarnEnabled())
+                       {
+                               logger.warn("Falling back to Redirect_To_Buffer 
render strategy because none of the conditions matched.");
+                       }
+
                        // redirect to buffer
                        BufferedWebResponse response = renderPage(targetUrl, 
requestCycle);
 
@@ -261,9 +266,5 @@ public class WebPageRenderer extends Pag
                                redirectTo(targetUrl2, requestCycle);
                        }
                }
-               else
-               {
-                       throw new IllegalStateException("Unknown 
RenderStrategy.");
-               }
        }
 }

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=1141012&r1=1141011&r2=1141012&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
 Wed Jun 29 08:58:04 2011
@@ -591,8 +591,8 @@ public class WebPageRendererTest
        }
 
        /**
-        * Tests that when the page is stateful and the urls are the same then 
there should be a
-        * redirect
+        * Tests that when the page is stateful and the urls are the same then 
the response is written
+        * directly
         */
        @Test
        public void testRedirectToBufferStatefulPageAndSameUrls()
@@ -630,6 +630,61 @@ public class WebPageRendererTest
        }
 
        /**
+        * Tests that when all the conditions fail the redirect_to_buffer 
should be used as a fallback
+        */
+       @Test
+       public void testRedirectToBufferIsFallback()
+       {
+               final AtomicBoolean stored = new AtomicBoolean(false);
+
+               PageRenderer renderer = new TestPageRenderer(handler)
+               {
+                       @Override
+                       protected boolean isRedirectToBuffer()
+                       {
+                               return false;
+                       }
+
+                       @Override
+                       protected boolean isOnePassRender()
+                       {
+                               return false;
+                       }
+
+                       @Override
+                       protected boolean isRedirectToRender()
+                       {
+                               return false;
+                       }
+
+                       @Override
+                       protected boolean isSessionTemporary()
+                       {
+                               return false;
+                       }
+
+                       @Override
+                       protected void storeBufferedResponse(Url url, 
BufferedWebResponse response)
+                       {
+                               stored.set(true);
+                       }
+               };
+
+               when(page.isPageStateless()).thenReturn(false);
+               when(provider.isNewPageInstance()).thenReturn(false);
+
+               // needed for earlier checks
+               when(urlRenderer.getBaseUrl()).thenReturn(Url.parse("url1"));
+               
when(requestCycle.mapUrlFor(eq(handler))).thenReturn(Url.parse("url2"));
+
+               renderer.respond(requestCycle);
+
+               verify(response, never()).write(any(byte[].class));
+               verify(response).sendRedirect(anyString());
+               Assert.assertTrue(stored.get());
+       }
+
+       /**
         * Configures common methods which are used by all tests
         */
        private static class TestPageRenderer extends WebPageRenderer


Reply via email to