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);
 				}
 			});