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);
                        }
                }
        }


Reply via email to