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
 	{