Author: mgrigorov
Date: Mon Oct  3 08:13:07 2011
New Revision: 1178327

URL: http://svn.apache.org/viewvc?rev=1178327&view=rev
Log:
WICKET-4077 Error detaching RequestCycle listener after serialization failure


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java?rev=1178327&r1=1178326&r2=1178327&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/DefaultPageStore.java
 Mon Oct  3 08:13:07 2011
@@ -26,6 +26,8 @@ import org.apache.wicket.page.IManageabl
 import org.apache.wicket.serialize.ISerializer;
 import org.apache.wicket.util.lang.Args;
 import org.apache.wicket.util.lang.Objects;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * The {@link IPageStore} that converts {@link IManageablePage} instances to 
{@link SerializedPage}s
@@ -35,6 +37,8 @@ import org.apache.wicket.util.lang.Objec
  */
 public class DefaultPageStore implements IPageStore
 {
+       private static final Logger LOG = 
LoggerFactory.getLogger(DefaultPageStore.class);
+
        private final SerializedPagesCache serializedPagesCache;
 
        private final IDataStore pageDataStore;
@@ -140,8 +144,11 @@ public class DefaultPageStore implements
        public void storePage(final String sessionId, final IManageablePage 
page)
        {
                SerializedPage serialized = serializePage(sessionId, page);
-               serializedPagesCache.storePage(serialized);
-               storePageData(sessionId, serialized.getPageId(), 
serialized.getData());
+               if (serialized != null)
+               {
+                       serializedPagesCache.storePage(serialized);
+                       storePageData(sessionId, serialized.getPageId(), 
serialized.getData());
+               }
        }
 
        public void unbind(final String sessionId)
@@ -216,7 +223,10 @@ public class DefaultPageStore implements
                        if (result == null)
                        {
                                result = serializePage(sessionId, page);
-                               serializedPagesCache.storePage(result);
+                               if (result != null)
+                               {
+                                       serializedPagesCache.storePage(result);
+                               }
                        }
                }
                else if (object instanceof SerializedPage)
@@ -353,8 +363,19 @@ public class DefaultPageStore implements
                Args.notNull(sessionId, "sessionId");
                Args.notNull(page, "page");
 
+               SerializedPage serializedPage = null;
+
                byte[] data = pageSerializer.serialize(page);
-               return new SerializedPage(sessionId, page.getPageId(), data);
+
+               if (data != null)
+               {
+                       serializedPage = new SerializedPage(sessionId, 
page.getPageId(), data);
+               }
+               else
+               {
+                       LOG.warn("Page {} cannot be serialized. See previous 
logs for possible reasons.", page);
+               }
+               return serializedPage;
        }
 
        /**

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java?rev=1178327&r1=1178326&r2=1178327&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/serialize/java/JavaSerializer.java
 Mon Oct  3 08:13:07 2011
@@ -104,11 +104,12 @@ public class JavaSerializer implements I
                ObjectInputStream ois = null;
                try
                {
+                       Application oldApplication = 
ThreadContext.getApplication();
                        try
                        {
                                ois = newObjectInputStream(in);
                                String applicationName = 
(String)ois.readObject();
-                               if (applicationName != null && 
!Application.exists())
+                               if (applicationName != null)
                                {
                                        Application app = 
Application.get(applicationName);
                                        if (app != null)
@@ -122,6 +123,7 @@ public class JavaSerializer implements I
                        {
                                try
                                {
+                                       
ThreadContext.setApplication(oldApplication);
                                        IOUtils.close(ois);
                                }
                                finally


Reply via email to