Author: jcompagner Date: Sun Apr 6 14:07:21 2008 New Revision: 645309 URL: http://svn.apache.org/viewvc?rev=645309&view=rev Log: WICKET-1476 moved read/write to the lowest class (Component) so that circular references to pages even if they are in the metadata or child components on markupcontainer.
Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.html wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result.html wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result2.html wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/secondpage_result.html Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FilePageStoreTest.java Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java?rev=645309&r1=645308&r2=645309&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Component.java Sun Apr 6 14:07:21 2008 @@ -16,6 +16,7 @@ */ package org.apache.wicket; +import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; @@ -4194,5 +4195,30 @@ public final boolean determineVisibility() { return isVisible() && isRenderAllowed() && isVisibilityAllowed(); + } + + + private void writeObject(java.io.ObjectOutputStream s) throws IOException + { + if (this instanceof Page) + { + ((Page)this).writePageObject(s); + } + else + { + s.defaultWriteObject(); + } + } + + private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException + { + if (this instanceof Page) + { + ((Page)this).readPageObject(s); + } + else + { + s.defaultReadObject(); + } } } Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java?rev=645309&r1=645308&r2=645309&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/Page.java Sun Apr 6 14:07:21 2008 @@ -791,15 +791,14 @@ stateless = (Boolean)returnValue; } - // TODO (matej_k): The stateless hint semantics has been changed, this warning doesn't work anymore. but we don't really have - // alternative to this + // TODO (matej_k): The stateless hint semantics has been changed, this warning doesn't + // work anymore. but we don't really have + // alternative to this /* - if (!stateless.booleanValue() && getStatelessHint()) - { - log.warn("Page '" + this + "' is not stateless because of '" + returnArray[0] + - "' but the stateless hint is set to true!"); - } - */ + * if (!stateless.booleanValue() && getStatelessHint()) { log.warn("Page '" + this + "' + * is not stateless because of '" + returnArray[0] + "' but the stateless hint is set to + * true!"); } + */ } return stateless.booleanValue(); @@ -1275,7 +1274,7 @@ { } - private void readObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException + void readPageObject(java.io.ObjectInputStream s) throws IOException, ClassNotFoundException { int id = s.readShort(); String name = (String)s.readObject(); @@ -1306,7 +1305,7 @@ } } - private void writeObject(java.io.ObjectOutputStream s) throws IOException + void writePageObject(java.io.ObjectOutputStream s) throws IOException { s.writeShort(numericId); s.writeObject(pageMapName); Modified: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FilePageStoreTest.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FilePageStoreTest.java?rev=645309&r1=645308&r2=645309&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FilePageStoreTest.java (original) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FilePageStoreTest.java Sun Apr 6 14:07:21 2008 @@ -20,14 +20,29 @@ import org.apache.wicket.Session; import org.apache.wicket.WicketTestCase; +import org.apache.wicket.protocol.http.pagestore.DiskPageStore; +import org.apache.wicket.resource.DummyApplication; +import org.apache.wicket.session.ISessionStore; import org.apache.wicket.util.io.PageA; import org.apache.wicket.util.io.PageB; +import org.apache.wicket.util.tester.WicketTester; /** * @author jcompagner */ public class FilePageStoreTest extends WicketTestCase { + protected void setUp() throws Exception + { + tester = new WicketTester(new DummyApplication() + { + protected ISessionStore newSessionStore() + { + return new SecondLevelCacheSessionStore(this, new DiskPageStore()); + } + }); + } + /** * @throws Exception */ @@ -49,5 +64,19 @@ Assert.assertEquals(a, a2); Assert.assertSame(a2, a2.getB().getA()); + } + + /** + * @throws Exception + */ + public void testCircular() throws Exception + { + executeTest(FirstPage.class, "firstpage_result.html"); + FirstPage page = (FirstPage)tester.getLastRenderedPage(); + executedListener(SecondPage.class, page.get("link"), "secondpage_result.html"); + + executeTest(FirstPage.class, "firstpage_result2.html"); + + executedListener(SecondPage.class, page.get("link"), "secondpage_result.html"); } } Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html?rev=645309&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.html Sun Apr 6 14:07:21 2008 @@ -0,0 +1,10 @@ +<html xmlns:wicket> + <head> + <title>Wicket Quickstart Archetype Homepage</title> + </head> + <body> + first page<br/> + <a wicket:id="link">link to second page</a> + </body> +</html> + Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.java?rev=645309&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.java (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/FirstPage.java Sun Apr 6 14:07:21 2008 @@ -0,0 +1,31 @@ +package org.apache.wicket.protocol.http; + +import org.apache.wicket.Page; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.link.IPageLink; +import org.apache.wicket.markup.html.link.PageLink; + +public class FirstPage extends WebPage +{ + + public FirstPage() + { + add(new PageLink("link", new IPageLink() + { + + private static final long serialVersionUID = 1L; + + SecondPage page = new SecondPage(FirstPage.this); + + public Page getPage() + { + return page; + } + + public Class getPageIdentity() + { + return SecondPage.class; + } + })); + } +} Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.html URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.html?rev=645309&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.html (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.html Sun Apr 6 14:07:21 2008 @@ -0,0 +1,7 @@ +<html> + +<body> + second page<br/> + <a wicket:id="link">link to first page</a> +</body> +</html> \ No newline at end of file Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.java?rev=645309&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.java (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/SecondPage.java Sun Apr 6 14:07:21 2008 @@ -0,0 +1,29 @@ +package org.apache.wicket.protocol.http; + +import org.apache.wicket.Page; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.link.IPageLink; +import org.apache.wicket.markup.html.link.PageLink; + +public class SecondPage extends WebPage +{ + + public SecondPage(final FirstPage page) + { + add(new PageLink("link", new IPageLink() + { + + private static final long serialVersionUID = 1L; + + public Page getPage() + { + return page; + } + + public Class getPageIdentity() + { + return FirstPage.class; + } + })); + } +} Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result.html URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result.html?rev=645309&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result.html (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result.html Sun Apr 6 14:07:21 2008 @@ -0,0 +1,10 @@ +<html xmlns:wicket> + <head> + <title>Wicket Quickstart Archetype Homepage</title> + </head> + <body> + first page<br/> + <a href="?wicket:interface=:0:link::ILinkListener::" wicket:id="link">link to second page</a> + </body> +</html> + Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result2.html URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result2.html?rev=645309&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result2.html (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/firstpage_result2.html Sun Apr 6 14:07:21 2008 @@ -0,0 +1,10 @@ +<html xmlns:wicket> + <head> + <title>Wicket Quickstart Archetype Homepage</title> + </head> + <body> + first page<br/> + <a href="?wicket:interface=:2:link::ILinkListener::" wicket:id="link">link to second page</a> + </body> +</html> + Added: wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/secondpage_result.html URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/secondpage_result.html?rev=645309&view=auto ============================================================================== --- wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/secondpage_result.html (added) +++ wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/protocol/http/secondpage_result.html Sun Apr 6 14:07:21 2008 @@ -0,0 +1,7 @@ +<html> + +<body> + second page<br/> + <a href="?wicket:interface=:1:link::ILinkListener::" wicket:id="link">link to first page</a> +</body> +</html> \ No newline at end of file