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