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