You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by pe...@apache.org on 2017/03/25 18:41:01 UTC
[2/9] wicket git commit: WICKET-4201 removing non serializable
attributes from serialization
WICKET-4201 removing non serializable attributes from serialization
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0a702f07
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0a702f07
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0a702f07
Branch: refs/heads/master
Commit: 0a702f070bb7b3598030c906199f81ad832b8b2c
Parents: 88f783d
Author: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Authored: Mon Feb 6 05:07:41 2017 -0200
Committer: Pedro Henrique Oliveira dos Santos <pe...@apache.org>
Committed: Sat Mar 25 14:58:12 2017 -0300
----------------------------------------------------------------------
.../core/request/handler/PageProvider.java | 45 +++++++++-----------
.../request/handler/PageProviderTest.java | 24 ++++++++++-
2 files changed, 41 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/0a702f07/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
index 6cf6f95..44e51cb 100644
--- a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
+++ b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/PageProvider.java
@@ -52,13 +52,13 @@ public class PageProvider implements IPageProvider, IClusterable
private final Integer pageId;
- private IPageSource pageSource;
+ private transient IPageSource pageSource;
private Class<? extends IRequestablePage> pageClass;
private PageParameters pageParameters;
- private Provision provision = new Provision();
+ private transient Provision provision;
/**
* Creates a new page provider object. Upon calling of {@link #getPageInstance()} this provider
@@ -155,12 +155,12 @@ public class PageProvider implements IPageProvider, IClusterable
renderCount = page.getRenderCount();
}
- private Provision getResolvedProvision()
+ private Provision getProvision()
{
- if (!provision.wasResolved())
-
- provision.resolve();
-
+ if (provision == null)
+ {
+ provision = new Provision().resolve();
+ }
return provision;
}
@@ -170,7 +170,7 @@ public class PageProvider implements IPageProvider, IClusterable
@Override
public IRequestablePage getPageInstance()
{
- return getResolvedProvision().getPage();
+ return getProvision().getPage();
}
/**
@@ -214,9 +214,9 @@ public class PageProvider implements IPageProvider, IClusterable
@Override
public final boolean hasPageInstance()
{
- if (provision.wasResolved() || pageId != null)
+ if (provision != null || pageId != null)
{
- return getResolvedProvision().didResolveToPage();
+ return getProvision().didResolveToPage();
}
else
return false;
@@ -232,11 +232,11 @@ public class PageProvider implements IPageProvider, IClusterable
@Override
public final boolean doesProvideNewPage()
{
- if (!this.provision.wasResolved())
+ if (provision == null)
{
throw new IllegalStateException("Page instance not yet resolved");
}
- return getResolvedProvision().doesProvideNewPage();
+ return getProvision().doesProvideNewPage();
}
/**
@@ -245,7 +245,7 @@ public class PageProvider implements IPageProvider, IClusterable
@Override
public boolean wasExpired()
{
- return pageId != null && getResolvedProvision().didFailToFindStoredPage();
+ return pageId != null && getProvision().didFailToFindStoredPage();
}
/**
@@ -290,7 +290,11 @@ public class PageProvider implements IPageProvider, IClusterable
@Override
public void detach()
{
- provision.detach();
+ if (provision != null)
+ {
+ provision.detach();
+ provision = null;
+ }
}
/**
@@ -302,7 +306,7 @@ public class PageProvider implements IPageProvider, IClusterable
*/
public void setPageSource(IPageSource pageSource)
{
- if (this.provision.wasResolved())
+ if (provision != null)
{
throw new IllegalStateException(
"A provision was already been done. The provider can be forcefully detached or a new one needs to be used to provide using this page source.");
@@ -374,7 +378,6 @@ public class PageProvider implements IPageProvider, IClusterable
private class Provision
{
transient IRequestablePage page;
- boolean resolved;
boolean failedToFindStoredPage;
IRequestablePage getPage()
@@ -386,11 +389,6 @@ public class PageProvider implements IPageProvider, IClusterable
return page;
}
- boolean wasResolved()
- {
- return resolved;
- }
-
boolean didResolveToPage()
{
return page != null;
@@ -410,8 +408,6 @@ public class PageProvider implements IPageProvider, IClusterable
{
this.page = page;
- resolved = true;
-
return this;
}
@@ -433,9 +429,6 @@ public class PageProvider implements IPageProvider, IClusterable
failedToFindStoredPage = page == null;
}
-
- resolved = true;
-
return this;
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/0a702f07/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java b/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
index 09115a6..f5af25a 100644
--- a/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/request/handler/PageProviderTest.java
@@ -16,6 +16,8 @@
*/
package org.apache.wicket.request.handler;
+import static org.hamcrest.CoreMatchers.is;
+
import java.io.IOException;
import java.text.ParseException;
@@ -27,12 +29,13 @@ import org.apache.wicket.RestartResponseAtInterceptPageException;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.core.request.handler.PageProvider;
+import org.apache.wicket.core.request.mapper.StalePageException;
+import org.apache.wicket.core.request.mapper.TestMapperContext;
import org.apache.wicket.markup.IMarkupResourceStreamProvider;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.request.Url;
-import org.apache.wicket.core.request.mapper.StalePageException;
-import org.apache.wicket.core.request.mapper.TestMapperContext;
+import org.apache.wicket.serialize.java.JavaSerializer;
import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
import org.apache.wicket.util.resource.StringResourceStream;
@@ -252,6 +255,23 @@ public class PageProviderTest extends WicketTestCase
assertTrue(provider.doesProvideNewPage());
}
+ @Test
+ public void pageProviderIsSerializeble() throws Exception
+ {
+ TestMapperContext mapperContext = new TestMapperContext();
+ Page page = new TestPage();
+ mapperContext.getPageManager().touchPage(page);
+ mapperContext.getPageManager().commitRequest();
+
+ PageProvider pageProvider = new PageProvider(page.getPageId(), page.getRenderCount());
+ JavaSerializer javaSerializer = new JavaSerializer("app");
+ byte[] serialized = javaSerializer.serialize(pageProvider);
+ PageProvider deserialized = (PageProvider)javaSerializer.deserialize(serialized);
+ deserialized.setPageSource(mapperContext);
+
+ assertThat(deserialized.getPageInstance(), is(page));
+ }
+
/** */
public static class TestPage extends WebPage implements IMarkupResourceStreamProvider
{