Author: mgrigorov
Date: Sat Dec 11 09:15:52 2010
New Revision: 1044601
URL: http://svn.apache.org/viewvc?rev=1044601&view=rev
Log:
WICKET-3239 for stateless pages wicket complains with "The Buffered response
should be handled by BufferedResponseRequestHandler"
Fix "redirect after post" support for stateless pages.
Since there is no bound session we need to use a fake and stable session id
(IManageablePage#STATELESS_SESSION_ID)
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/page/IManageablePage.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/page/IManageablePage.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/page/IManageablePage.java?rev=1044601&r1=1044600&r2=1044601&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/page/IManageablePage.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/page/IManageablePage.java
Sat Dec 11 09:15:52 2010
@@ -22,6 +22,11 @@ import org.apache.wicket.IClusterable;
public interface IManageablePage extends IClusterable
{
/**
+ * A prefix used as session id replacement for stored responses for
stateless pages
+ */
+ String STATELESS_SESSION_ID = "stateless-";
+
+ /**
* Gets whether the page is stateless. Components on stateless page
must not render any stateful
* urls. Stateful urls are urls, which refer to a certain (current)
page instance and don't
* contain enough information to reconstruct page if it's not available
(page class).
@@ -61,7 +66,7 @@ public interface IManageablePage extends
* solving the problem.
*
* @param freeze
- *
+ *
* @return previous state
*/
boolean setFreezePageId(boolean freeze);
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java?rev=1044601&r1=1044600&r2=1044601&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
Sat Dec 11 09:15:52 2010
@@ -18,6 +18,7 @@ package org.apache.wicket.request.handle
import org.apache.wicket.Application;
import org.apache.wicket.Session;
+import org.apache.wicket.page.IManageablePage;
import org.apache.wicket.protocol.http.BufferedWebResponse;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.IRequestHandler;
@@ -39,7 +40,7 @@ import org.slf4j.LoggerFactory;
*/
public class WebPageRenderer extends PageRenderer
{
- private static Logger logger =
LoggerFactory.getLogger(WebPageRenderer.class);
+ private static final Logger logger =
LoggerFactory.getLogger(WebPageRenderer.class);
/**
* Construct.
@@ -81,7 +82,12 @@ public class WebPageRenderer extends Pag
private String getSessionId()
{
- return Session.get().getId();
+ String sessionId = Session.get().getId();
+ if (sessionId == null)
+ {
+ sessionId = IManageablePage.STATELESS_SESSION_ID;
+ }
+ return sessionId;
}
private boolean isSessionTemporary()
@@ -284,7 +290,6 @@ public class WebPageRenderer extends Pag
*/
protected boolean enableRedirectForStatelessPage()
{
- // TODO Make sure this is a sane default value (if not make it
configurable)
return true;
}
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java?rev=1044601&r1=1044600&r2=1044601&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/mapper/BufferedResponseMapper.java
Sat Dec 11 09:15:52 2010
@@ -17,6 +17,7 @@
package org.apache.wicket.request.mapper;
import org.apache.wicket.Session;
+import org.apache.wicket.page.IManageablePage;
import org.apache.wicket.protocol.http.BufferedWebResponse;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.IRequestHandler;
@@ -46,21 +47,18 @@ public class BufferedResponseMapper impl
*/
protected String getSessionId()
{
- return Session.get().getId();
+ String sessionId = Session.get().getId();
+ if (sessionId == null)
+ {
+ sessionId = IManageablePage.STATELESS_SESSION_ID;
+ }
+ return sessionId;
}
protected boolean hasBufferedResponse(Url url)
{
- String sessionId = getSessionId();
- if (sessionId != null)
- {
- return
WebApplication.get().hasBufferedResponse(sessionId, url);
- }
- else
- {
- return false;
- }
+ return WebApplication.get().hasBufferedResponse(getSessionId(),
url);
}
protected BufferedWebResponse getAndRemoveBufferedResponse(Url url)