You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by so...@apache.org on 2018/01/05 17:58:29 UTC

[2/5] wicket git commit: WICKET-6514 restored original behavior of FeedbackPanel to collect session messages

WICKET-6514 restored original behavior of FeedbackPanel to collect
session messages

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

Branch: refs/heads/WICKET-6498_deferred_javascript
Commit: 00109395588662ca380bdf82e8fc6cc75069565a
Parents: 19c8998
Author: Andrea Del Bene <ad...@apache.org>
Authored: Thu Jan 4 16:00:48 2018 +0100
Committer: Andrea Del Bene <ad...@apache.org>
Committed: Thu Jan 4 16:00:48 2018 +0100

----------------------------------------------------------------------
 .../wicket/feedback/FeedbackMessagesModel.java  | 21 ++++++++++-
 .../markup/html/panel/FeedbackPanelTest.java    | 38 ++++++++++++++++++--
 2 files changed, 56 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/00109395/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java b/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
index d6d915a..ab8f5cd 100644
--- a/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
+++ b/wicket-core/src/main/java/org/apache/wicket/feedback/FeedbackMessagesModel.java
@@ -23,6 +23,7 @@ import java.util.List;
 
 import org.apache.wicket.Component;
 import org.apache.wicket.Page;
+import org.apache.wicket.Session;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.util.lang.Args;
 
@@ -47,6 +48,9 @@ public class FeedbackMessagesModel implements IModel<List<FeedbackMessage>>
 
 	private final Component pageResolvingComponent;
 
+	/** Controls whether or not feedback from the {@link Session} will be collected **/
+	private boolean includeSession = true;
+
 	/**
 	 * Constructor. Creates a model for all feedback messages on the page.
 	 * 
@@ -126,7 +130,7 @@ public class FeedbackMessagesModel implements IModel<List<FeedbackMessage>>
 	protected List<FeedbackMessage> collectMessages(Component pageResolvingComponent,
 		IFeedbackMessageFilter filter)
 	{
-		return new FeedbackCollector(pageResolvingComponent.getPage()).collect(filter);
+		return new FeedbackCollector(pageResolvingComponent.getPage(), includeSession).collect(filter);
 	}
 
 	/**
@@ -180,4 +184,19 @@ public class FeedbackMessagesModel implements IModel<List<FeedbackMessage>>
 	{
 		messages = null;
 	}
+
+	/**
+	 * Controls whether or not feedback from the {@link Session} will be collected.
+	 * 
+	 * See {@link FeedbackCollector#setIncludeSession} and {@link Session#getFeedbackMessages} 
+	 * 
+	 * @param value
+	 * @return 
+	 * @return {@code this} for chaining
+	 */
+	public FeedbackMessagesModel setIncludeSession(boolean includeSession)
+	{
+		this.includeSession = includeSession;
+		return this;
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/00109395/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FeedbackPanelTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FeedbackPanelTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FeedbackPanelTest.java
index 0906a79..e38815d 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FeedbackPanelTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/panel/FeedbackPanelTest.java
@@ -16,8 +16,11 @@
  */
 package org.apache.wicket.markup.html.panel;
 
+import java.util.List;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.feedback.FeedbackMessage;
 import org.apache.wicket.markup.IMarkupResourceStreamProvider;
 import org.apache.wicket.markup.html.WebPage;
 import org.apache.wicket.markup.html.basic.Label;
@@ -34,13 +37,29 @@ import org.junit.Test;
 public class FeedbackPanelTest extends WicketTestCase
 {
     @Test
-    public void testCssClassesOnFeedbackPanel() throws Exception {
+    public void testCssClassesOnFeedbackPanel() throws Exception 
+    {
         TestPage testPage = new TestPage();
         testPage.label.error("Error message");
         testPage.label.info("Info message");
         testPage.label.warn("Warn message");
         executeTest(testPage, "FeedbackPanelTest_cssClasses_expected.html");
     }
+    
+    @Test
+	public void collectSessionMessages() throws Exception
+	{
+    	TestPage testPage = new TestPage();
+    	
+    	tester.startPage(testPage);
+    	tester.assertInvisible("feedback");
+		
+    	String message = "session info";
+
+    	tester.getSession().info(message);
+    	tester.startPage(testPage);
+    	tester.assertVisible("feedback");
+	}
 
     private static class TestPage extends WebPage implements IMarkupResourceStreamProvider
     {
@@ -49,7 +68,22 @@ public class FeedbackPanelTest extends WicketTestCase
 
         public TestPage()
         {
-            feedbackPanel = new FeedbackPanel("feedback");
+            feedbackPanel = new FeedbackPanel("feedback") 
+            {
+            	/**
+            	 * Hide panel if there is no message to show
+            	 */
+            	@Override
+            	protected void onConfigure()
+            	{
+            		super.onConfigure();
+            		List<FeedbackMessage> messages = getFeedbackMessagesModel().getObject();
+            		
+            		setVisible(messages.size() > 0);
+            	}
+            };
+            
+            
             label = new Label("label");
             add(feedbackPanel, label);
         }