You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by da...@apache.org on 2006/10/12 18:36:32 UTC

svn commit: r463311 - in /incubator/wicket/trunk/wicket/src: main/java/wicket/Session.java main/java/wicket/feedback/FeedbackMessages.java test/java/wicket/protocol/http/MockWebApplicationTest.java

Author: dashorst
Date: Thu Oct 12 09:36:29 2006
New Revision: 463311

URL: http://svn.apache.org/viewvc?view=rev&rev=463311
Log:
Fixed flash message clean up

Modified:
    incubator/wicket/trunk/wicket/src/main/java/wicket/Session.java
    incubator/wicket/trunk/wicket/src/main/java/wicket/feedback/FeedbackMessages.java
    incubator/wicket/trunk/wicket/src/test/java/wicket/protocol/http/MockWebApplicationTest.java

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/Session.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/Session.java?view=diff&rev=463311&r1=463310&r2=463311
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/Session.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/Session.java Thu Oct 12 09:36:29 2006
@@ -1056,19 +1056,12 @@
 	 */
 	final void cleanupFeedbackMessages()
 	{
-		if (feedbackMessages.size() > 0)
+		int size = feedbackMessages.size();
+		feedbackMessages.clearRendered();
+		// mark the session as dirty when the feedback messages have been altered.
+		if(size != feedbackMessages.size())
 		{
-			Iterator msgs = feedbackMessages.iterator();
-			while (msgs.hasNext())
-			{
-				final FeedbackMessage msg = (FeedbackMessage)msgs.next();
-				if (msg.isRendered())
-				{
-					msgs.remove();
-					dirty();
-				}
-			}
-			feedbackMessages.trimToSize();
+			dirty();
 		}
 	}
 

Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/feedback/FeedbackMessages.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/feedback/FeedbackMessages.java?view=diff&rev=463311&r1=463310&r2=463311
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/feedback/FeedbackMessages.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/feedback/FeedbackMessages.java Thu Oct 12 09:36:29 2006
@@ -96,15 +96,15 @@
 	 */
 	public final void clearRendered()
 	{
-		Iterator<FeedbackMessage> msgs = iterator();
-		while (msgs.hasNext())
+		for(int i = messages.size() - 1; i >= 0; i--)
 		{
-			final FeedbackMessage msg = msgs.next();
+			final FeedbackMessage msg = (FeedbackMessage)messages.get(i);
 			if (msg.isRendered())
 			{
-				msgs.remove();
+				messages.remove(i);
 			}
 		}
+		trimToSize();
 	}
 
 	/**

Modified: incubator/wicket/trunk/wicket/src/test/java/wicket/protocol/http/MockWebApplicationTest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/test/java/wicket/protocol/http/MockWebApplicationTest.java?view=diff&rev=463311&r1=463310&r2=463311
==============================================================================
--- incubator/wicket/trunk/wicket/src/test/java/wicket/protocol/http/MockWebApplicationTest.java (original)
+++ incubator/wicket/trunk/wicket/src/test/java/wicket/protocol/http/MockWebApplicationTest.java Thu Oct 12 09:36:29 2006
@@ -18,10 +18,13 @@
  */
 package wicket.protocol.http;
 
+import java.util.Iterator;
 import junit.framework.Assert;
 import junit.framework.TestCase;
 import wicket.markup.html.link.Link;
 import wicket.util.diff.DiffUtil;
+import wicket.Session;
+import wicket.feedback.FeedbackMessage;
 
 /**
  * Simple application that demonstrates the mock http application code (and
@@ -69,6 +72,27 @@
 		// Inspect the page & model
 		MockPage p = (MockPage)application.getLastRenderedPage();
 		Assert.assertEquals("Link should have been clicked 0 times", 0, p.getLinkClickCount());
+	}
+
+	/**
+	 * Tests the clean up of flash messages put into the session when they are rendered.
+	 */
+	public void testSessionFeedbackMessagesCleanUp() 
+	{
+		application.setupRequestAndResponse();
+		application.processRequestCycle();
+		Session session = Session.get();
+		session.info("Message");
+		session.info("Not rendered");
+		Iterator iterator = session.getFeedbackMessages().iterator();
+		FeedbackMessage message = (FeedbackMessage)iterator.next();
+		message.markRendered();
+		session.getFeedbackMessages().clearRendered();
+		assertEquals(1, session.getFeedbackMessages().size());
+		message = (FeedbackMessage)iterator.next();
+		message.markRendered();
+		session.getFeedbackMessages().clearRendered();
+		assertEquals(0, session.getFeedbackMessages().size());
 	}
 
 	/**