Updated Branches:
  refs/heads/build/wicket-6.14.0 4a4b3271e -> 401f412dc
  refs/heads/wicket-6.x 83578b307 -> 9ba9dafee


WICKET-5499 Page is not touched during initialization

This is a partial revert of d86d9afa8fc5d21d0d5a1c70e0fcd780ace6e3e6 - don't 
mark the page as stateful when passed to RenderPageRequestHandler because this 
breaks the submits of stateless forms


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/93fb6eb2
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/93fb6eb2
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/93fb6eb2

Branch: refs/heads/build/wicket-6.14.0
Commit: 93fb6eb29ee0da6d7e884250c4b5a5f1e72800d9
Parents: 588871d
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed Feb 12 15:52:59 2014 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Wed Feb 12 15:52:59 2014 +0200

----------------------------------------------------------------------
 .../handler/RenderPageRequestHandler.java       |  9 +------
 .../wicket/request/cycle/RequestCycle.java      |  5 ++++
 .../EnclosurePageExpectedResult_10-2.html       |  5 +++-
 .../EnclosurePageExpectedResult_10-3.html       |  2 +-
 .../wicket/stateless/StatelessFormTest.java     | 25 ++++++++++++++++++++
 .../wicket/stateless/StatelessPageWithForm.java | 14 ++++++++++-
 6 files changed, 49 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java
index 3cceadd..741427c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/handler/RenderPageRequestHandler.java
@@ -17,7 +17,6 @@
 package org.apache.wicket.core.request.handler;
 
 import org.apache.wicket.Application;
-import org.apache.wicket.Page;
 import org.apache.wicket.Session;
 import org.apache.wicket.core.request.handler.logger.PageLogData;
 import org.apache.wicket.request.ILoggableRequestHandler;
@@ -107,16 +106,10 @@ public class RenderPageRequestHandler
 
                if (pageProvider.hasPageInstance())
                {
-                       IRequestablePage page = pageProvider.getPageInstance();
-                       if (page instanceof Page)
-                       {
-                               ((Page) page).setStatelessHint(false);
-                       }
-
                        if (Session.exists())
                        {
                                // WICKET-5499
-                               Session.get().getPageManager().touchPage(page);
+                               
Session.get().getPageManager().touchPage(pageProvider.getPageInstance());
                        }
                }
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java 
b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
index ae07024..5ae1c23 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/request/cycle/RequestCycle.java
@@ -654,6 +654,11 @@ public class RequestCycle implements IRequestCycle, 
IEventSink
         */
        public void setResponsePage(IRequestablePage page)
        {
+               if (page instanceof Page)
+               {
+                       ((Page) page).setStatelessHint(false);
+               }
+
                scheduleRequestHandlerAfterCurrent(new 
RenderPageRequestHandler(new PageProvider(page),
                        RenderPageRequestHandler.RedirectPolicy.AUTO_REDIRECT));
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
index 2ad7536..382611c 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-2.html
@@ -1,5 +1,8 @@
 <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>

http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
index 6f82c85..382611c 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
+++ 
b/wicket-core/src/test/java/org/apache/wicket/markup/html/internal/EnclosurePageExpectedResult_10-3.html
@@ -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>

http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java 
b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java
index 43bab2d..4150d91 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessFormTest.java
@@ -103,4 +103,29 @@ public class StatelessFormTest extends WicketTestCase
                parameters.add("second", "bar");
                executeTest(StatelessPageWithForm.class, parameters, 
"StatelessPageWithForm_expected.html");
        }
+
+       /**
+        * Tests that the session remains temporary (i.e. not bound) after 
submitting
+        * stateless form
+        */
+       @Test
+       public void submitStatelessFormDoesntBindSession()
+       {
+               StatelessPageWithForm.FORM_SUBMITTED.set(false);
+               try
+               {
+                       tester.startPage(StatelessPageWithForm.class);
+                       tester.assertRenderedPage(StatelessPageWithForm.class);
+                       FormTester form = tester.newFormTester("form");
+                       assertTrue(tester.getSession().isTemporary());
+                       form.submit();
+                       tester.assertRenderedPage(StatelessPageWithForm.class);
+                       assertTrue(StatelessPageWithForm.FORM_SUBMITTED.get());
+                       assertTrue(tester.getSession().isTemporary());
+               }
+               finally
+               {
+                       StatelessPageWithForm.FORM_SUBMITTED.set(false);
+               }
+       }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/93fb6eb2/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java
 
b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java
index 5252e70..3a819f1 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/stateless/StatelessPageWithForm.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.stateless;
 
+import java.util.concurrent.atomic.AtomicBoolean;
+
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.form.StatelessForm;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
@@ -27,6 +29,8 @@ public class StatelessPageWithForm extends WebPage
 {
        private static final long serialVersionUID = 1L;
 
+       static final AtomicBoolean FORM_SUBMITTED = new AtomicBoolean(false);
+
        /**
         * Construct.
         * 
@@ -35,6 +39,14 @@ public class StatelessPageWithForm extends WebPage
        public StatelessPageWithForm(PageParameters parameters)
        {
                super(parameters);
-               add(new StatelessForm<Void>("form"));
+               add(new StatelessForm<Void>("form")
+               {
+                       @Override
+                       protected void onSubmit()
+                       {
+                               super.onSubmit();
+                               FORM_SUBMITTED.set(true);
+                       }
+               });
        }
 }

Reply via email to