Author: mgrigorov
Date: Mon Aug 15 15:18:26 2011
New Revision: 1157882
URL: http://svn.apache.org/viewvc?rev=1157882&view=rev
Log:
WICKET-3965 A (stateless) page immediately disappears after the first render
Added:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/pages/RefreshStatelessPageTest.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_mount_result.html
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_result.html
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java
(original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/Component.java Mon
Aug 15 15:18:26 2011
@@ -3284,15 +3284,18 @@ public abstract class Component
public final CharSequence urlFor(final Behavior behaviour,
final RequestListenerInterface listener)
{
- PageAndComponentProvider provider = new
PageAndComponentProvider(getPage(), this);
int id = getBehaviorId(behaviour);
+ Page page = getPage();
IRequestHandler handler;
- if (getPage().isPageStateless())
+ if (page.isPageStateless())
{
+ PageAndComponentProvider provider = new
PageAndComponentProvider(page.getPageClass(),
+ page.getPageParameters(),
getPageRelativePath());
handler = new
BookmarkableListenerInterfaceRequestHandler(provider, listener, id);
}
else
{
+ PageAndComponentProvider provider = new
PageAndComponentProvider(page, this);
handler = new ListenerInterfaceRequestHandler(provider,
listener, id);
}
return getRequestCycle().urlFor(handler);
@@ -3324,14 +3327,17 @@ public abstract class Component
*/
public final CharSequence urlFor(final RequestListenerInterface
listener)
{
- PageAndComponentProvider provider = new
PageAndComponentProvider(getPage(), this);
+ Page page = getPage();
IRequestHandler handler;
- if (getPage().isPageStateless())
+ if (page.isPageStateless())
{
+ PageAndComponentProvider provider = new
PageAndComponentProvider(page.getPageClass(),
+ page.getPageParameters(),
getPageRelativePath());
handler = new
BookmarkableListenerInterfaceRequestHandler(provider, listener);
}
else
{
+ PageAndComponentProvider provider = new
PageAndComponentProvider(page, this);
handler = new ListenerInterfaceRequestHandler(provider,
listener);
}
return getRequestCycle().urlFor(handler);
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/mock/MockPageManager.java
Mon Aug 15 15:18:26 2011
@@ -78,7 +78,10 @@ public class MockPageManager implements
public void touchPage(IManageablePage page)
{
- pages.put(page.getPageId(), page);
+ if (page.isPageStateless() == false)
+ {
+ pages.put(page.getPageId(), page);
+ }
}
/**
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/request/handler/PageProvider.java
Mon Aug 15 15:18:26 2011
@@ -17,6 +17,7 @@
package org.apache.wicket.request.handler;
import org.apache.wicket.Application;
+import org.apache.wicket.Page;
import org.apache.wicket.Session;
import org.apache.wicket.page.IPageManager;
import org.apache.wicket.protocol.http.PageExpiredException;
@@ -148,6 +149,10 @@ public class PageProvider implements IPa
Args.notNull(page, "page");
pageInstance = page;
+ if (pageInstance instanceof Page)
+ {
+ ((Page)pageInstance).setStatelessHint(false);
+ }
}
/**
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
Mon Aug 15 15:18:26 2011
@@ -1351,6 +1351,14 @@ public class BaseWicketTester
{
private IMarkupFragment pageMarkup = null;
+ /**
+ * Construct.
+ */
+ public StartComponentInPage()
+ {
+ setStatelessHint(false);
+ }
+
@Override
public IMarkupFragment getMarkup()
{
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
Mon Aug 15 15:18:26 2011
@@ -1,8 +1,5 @@
<html xmlns:wicket>
<body>
- <wicket:enclosure child="input">
- <input wicket:id="input" type="checkbox" name="input"/>
- <span wicket:id="label"></span>
- </wicket:enclosure>
+
</body>
</html>
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
Mon Aug 15 15:18:26 2011
@@ -2,7 +2,7 @@
<body>
<wicket:enclosure child="input">
<input wicket:id="input" type="checkbox" name="input"/>
- <span wicket:id="label"></span>
+
</wicket:enclosure>
</body>
</html>
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_indexed_mount_result.html
Mon Aug 15 15:18:26 2011
@@ -1,5 +1,5 @@
<html>
<body>
-<a href="testValue2?0-1.ILinkListener-link" wicket:id="link">test</a>
+<a href="testValue2?1-0.ILinkListener-link" wicket:id="link">test</a>
</body>
</html>
\ No newline at end of file
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_mount_result.html
Mon Aug 15 15:18:26 2011
@@ -1,5 +1,5 @@
<html>
<body>
-<a
href="stateless?0-1.ILinkListener-link&testParam1=testValue1&testParam2=testValue2"
wicket:id="link">test</a>
+<a
href="stateless?1-0.ILinkListener-link&testParam1=testValue1&testParam2=testValue2"
wicket:id="link">test</a>
</body>
</html>
\ No newline at end of file
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPageWithParams_result.html
Mon Aug 15 15:18:26 2011
@@ -1,5 +1,5 @@
<html>
<body>
-<a
href="org.apache.wicket.stateless.StatelessComponentPageWithParams?0-1.ILinkListener-link&testParam1=testValue1&testParam2=testValue2"
wicket:id="link">test</a>
+<a
href="org.apache.wicket.stateless.StatelessComponentPageWithParams?1-0.ILinkListener-link&testParam1=testValue1&testParam2=testValue2"
wicket:id="link">test</a>
</body>
</html>
\ No newline at end of file
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_mount_result.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_mount_result.html?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_mount_result.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_mount_result.html
Mon Aug 15 15:18:26 2011
@@ -1,5 +1,5 @@
<html>
<body>
-<a href="stateless?0-1.ILinkListener-link" wicket:id="link">test</a>
+<a href="stateless?1-0.ILinkListener-link" wicket:id="link">test</a>
</body>
</html>
\ No newline at end of file
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_result.html
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_result.html?rev=1157882&r1=1157881&r2=1157882&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_result.html
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessComponentPage_result.html
Mon Aug 15 15:18:26 2011
@@ -1,5 +1,5 @@
<html>
<body>
-<a
href="org.apache.wicket.stateless.StatelessComponentPage?0-1.ILinkListener-link"
wicket:id="link">test</a>
+<a
href="org.apache.wicket.stateless.StatelessComponentPage?1-0.ILinkListener-link"
wicket:id="link">test</a>
</body>
</html>
\ No newline at end of file
Added:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/pages/RefreshStatelessPageTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/pages/RefreshStatelessPageTest.java?rev=1157882&view=auto
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/pages/RefreshStatelessPageTest.java
(added)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/stateless/pages/RefreshStatelessPageTest.java
Mon Aug 15 15:18:26 2011
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.stateless.pages;
+
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
+import org.apache.wicket.WicketTestCase;
+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.util.resource.IResourceStream;
+import org.apache.wicket.util.resource.StringResourceStream;
+import org.junit.Test;
+
+/**
+ * https://issues.apache.org/jira/browse/WICKET-3965
+ */
+public class RefreshStatelessPageTest extends WicketTestCase
+{
+
+ /**
+ * https://issues.apache.org/jira/browse/WICKET-3965
+ */
+ @Test
+ public void refreshStatelessPage()
+ {
+ tester.startPage(new StatefulPage());
+ tester.clickLink("link", false);
+
+ tester.assertRenderedPage(StatelessPage.class);
+ Page renderedPage = tester.getLastRenderedPage();
+ tester.executeUrl("wicket/page?" + renderedPage.getId());
+ tester.assertRenderedPage(StatelessPage.class);
+ }
+
+ private static class StatefulPage extends WebPage implements
IMarkupResourceStreamProvider
+ {
+
+ private StatefulPage()
+ {
+ add(new Link<Void>("link")
+ {
+ @Override
+ public void onClick()
+ {
+ setResponsePage(new StatelessPage());
+ }
+ });
+ }
+
+ public IResourceStream getMarkupResourceStream(MarkupContainer
container,
+ Class<?> containerClass)
+ {
+ return new StringResourceStream(
+ "<html><body>Stateful <a
wicket:id='link'>Link</a></body></html>");
+ }
+ }
+
+ private static class StatelessPage extends WebPage implements
IMarkupResourceStreamProvider
+ {
+ public StatelessPage()
+ {
+ setStatelessHint(true);
+ }
+
+ public IResourceStream getMarkupResourceStream(MarkupContainer
container,
+ Class<?> containerClass)
+ {
+ return new
StringResourceStream("<html><body>Stateless</body></html>");
+ }
+ }
+
+}