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&amp;testParam1=testValue1&amp;testParam2=testValue2"
 wicket:id="link">test</a>
+<a 
href="stateless?1-0.ILinkListener-link&amp;testParam1=testValue1&amp;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&amp;testParam1=testValue1&amp;testParam2=testValue2"
 wicket:id="link">test</a>
+<a 
href="org.apache.wicket.stateless.StatelessComponentPageWithParams?1-0.ILinkListener-link&amp;testParam1=testValue1&amp;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>");
+               }
+       }
+
+}


Reply via email to