Author: mgrigorov
Date: Fri Mar 18 20:51:26 2011
New Revision: 1083061
URL: http://svn.apache.org/viewvc?rev=1083061&view=rev
Log:
WICKET-3470 Can't write session to disk with tomcat : Servlet is destroyed
before serialization
Do not use IPageStore to convert Page to SerializedPage when there is no
Application available.
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/page/PersistentPageManager.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/page/PersistentPageManager.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/page/PersistentPageManager.java?rev=1083061&r1=1083060&r2=1083061&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/page/PersistentPageManager.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/page/PersistentPageManager.java
Fri Mar 18 20:51:26 2011
@@ -101,11 +101,12 @@ public class PersistentPageManager exten
private IPageStore getPageStore()
{
PersistentPageManager manager =
managers.get(applicationName);
+
if (manager == null)
{
- throw new IllegalStateException("PageManager
for application '" + applicationName +
- "' not registered.");
+ return null;
}
+
return manager.pageStore;
}
@@ -213,9 +214,19 @@ public class PersistentPageManager exten
// prepare for serialization and store the pages
List<Serializable> l = new ArrayList<Serializable>();
+ IPageStore pageStore = getPageStore();
for (IManageablePage p : pages)
{
- Serializable preparedPage =
getPageStore().prepareForSerialization(sessionId, p);
+ Serializable preparedPage;
+ if (pageStore != null)
+ {
+ preparedPage =
pageStore.prepareForSerialization(sessionId, p);
+ }
+ else
+ {
+ preparedPage = p;
+ }
+
if (preparedPage != null)
{
l.add(preparedPage);
@@ -242,9 +253,19 @@ public class PersistentPageManager exten
// convert to temporary state after deserialization
(will need to be processed
// by convertAfterReadObject before the pages can be
accessed)
+ IPageStore pageStore = getPageStore();
for (Serializable ser : l)
{
-
afterReadObject.add(getPageStore().restoreAfterSerialization(ser));
+ Object page;
+ if (pageStore != null)
+ {
+ page =
pageStore.restoreAfterSerialization(ser);
+ }
+ else
+ {
+ page = ser;
+ }
+ afterReadObject.add(page);
}
}
}