You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/06/20 13:10:58 UTC
[1/2] git commit: WICKET-5165 Session should be bound when adding
messages to it
Updated Branches:
refs/heads/master 18592d1ac -> 773c0a991
WICKET-5165 Session should be bound when adding messages to it
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0d4d1df7
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0d4d1df7
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0d4d1df7
Branch: refs/heads/master
Commit: 0d4d1df7c719c04c72ca974378465a4be82d086f
Parents: 18592d1
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Jun 20 13:06:41 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Jun 20 13:07:07 2013 +0200
----------------------------------------------------------------------
.../request/handler/render/WebPageRenderer.java | 22 ++++++
.../session/BindSessionOnRedirectTest.java | 80 ++++++++++++++++++++
2 files changed, 102 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/0d4d1df7/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
index e25142c..c3899ec 100644
--- a/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
+++ b/wicket-core/src/main/java/org/apache/wicket/request/handler/render/WebPageRenderer.java
@@ -16,9 +16,14 @@
*/
package org.apache.wicket.request.handler.render;
+import java.util.List;
+
import org.apache.wicket.Application;
+import org.apache.wicket.Session;
import org.apache.wicket.core.request.handler.RenderPageRequestHandler;
import org.apache.wicket.core.request.handler.RenderPageRequestHandler.RedirectPolicy;
+import org.apache.wicket.feedback.FeedbackCollector;
+import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.protocol.http.BufferedWebResponse;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.request.IRequestHandler;
@@ -145,11 +150,28 @@ public class WebPageRenderer extends PageRenderer
*/
protected void redirectTo(Url url, RequestCycle requestCycle)
{
+ bindSessionIfNeeded();
+
WebResponse response = (WebResponse)requestCycle.getResponse();
String relativeUrl = requestCycle.getUrlRenderer().renderUrl(url);
response.sendRedirect(relativeUrl);
}
+ /**
+ * Bind the session if there are feedback messages pending.
+ * https://issues.apache.org/jira/browse/WICKET-5165
+ */
+ private void bindSessionIfNeeded()
+ {
+ // check for session feedback messages only
+ FeedbackCollector collector = new FeedbackCollector();
+ List<FeedbackMessage> feedbackMessages = collector.collect();
+ if (feedbackMessages.size() > 0)
+ {
+ Session.get().bind();
+ }
+ }
+
/*
* TODO: simplify the code below. See WICKET-3347
*/
http://git-wip-us.apache.org/repos/asf/wicket/blob/0d4d1df7/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java b/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java
new file mode 100644
index 0000000..2e0c6ee
--- /dev/null
+++ b/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java
@@ -0,0 +1,80 @@
+/*
+ * 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.session;
+
+import org.apache.wicket.MarkupContainer;
+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.StatelessLink;
+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-5165
+ */
+public class BindSessionOnRedirectTest extends WicketTestCase
+{
+
+ @Test
+ public void bindSessionWhenThereAreFeedbackMessages()
+ {
+ tester.startPage(FirstPage.class);
+ assertTrue(tester.getSession().isTemporary());
+
+ tester.clickLink("link");
+
+ tester.assertRenderedPage(SecondPage.class);
+ assertFalse(tester.getSession().isTemporary());
+ }
+
+ public static class FirstPage extends WebPage implements IMarkupResourceStreamProvider
+ {
+ public FirstPage()
+ {
+ add(new StatelessLink<Void>("link") {
+
+ @Override
+ public void onClick()
+ {
+ getSession().info("Session message");
+ setResponsePage(SecondPage.class);
+ }
+ });
+ }
+
+ @Override
+ public IResourceStream getMarkupResourceStream(MarkupContainer container, Class<?> containerClass)
+ {
+ return new StringResourceStream("<html><body><a wicket:id='link'>Link</a></body></html>");
+ }
+ }
+
+ public static class SecondPage extends WebPage implements IMarkupResourceStreamProvider
+ {
+ public SecondPage()
+ {
+ }
+
+ @Override
+ public IResourceStream getMarkupResourceStream(MarkupContainer container, Class<?> containerClass)
+ {
+ return new StringResourceStream("<html><body>second page</body></html>");
+ }
+ }
+}
[2/2] git commit: WICKET-5165 Session should be bound when adding
messages to it
Posted by mg...@apache.org.
WICKET-5165 Session should be bound when adding messages to it
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/773c0a99
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/773c0a99
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/773c0a99
Branch: refs/heads/master
Commit: 773c0a99134eabeddb46a365c5e29b3538ab0e1c
Parents: 0d4d1df
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Jun 20 13:09:23 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Jun 20 13:09:50 2013 +0200
----------------------------------------------------------------------
.../org/apache/wicket/session/BindSessionOnRedirectTest.java | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/773c0a99/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java b/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java
index 2e0c6ee..2546da6 100644
--- a/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/session/BindSessionOnRedirectTest.java
@@ -31,16 +31,20 @@ import org.junit.Test;
public class BindSessionOnRedirectTest extends WicketTestCase
{
+ public static final String SESSION_FEEDBACK_MESSAGE = "Session message";
+
@Test
public void bindSessionWhenThereAreFeedbackMessages()
{
tester.startPage(FirstPage.class);
assertTrue(tester.getSession().isTemporary());
+ tester.assertNoInfoMessage();
tester.clickLink("link");
tester.assertRenderedPage(SecondPage.class);
assertFalse(tester.getSession().isTemporary());
+ tester.assertInfoMessages(SESSION_FEEDBACK_MESSAGE);
}
public static class FirstPage extends WebPage implements IMarkupResourceStreamProvider
@@ -52,7 +56,7 @@ public class BindSessionOnRedirectTest extends WicketTestCase
@Override
public void onClick()
{
- getSession().info("Session message");
+ getSession().info(SESSION_FEEDBACK_MESSAGE);
setResponsePage(SecondPage.class);
}
});