Author: ivaynberg
Date: Tue Jul 21 17:25:00 2009
New Revision: 796393

URL: http://svn.apache.org/viewvc?rev=796393&view=rev
Log:
WICKET-2384 another safeguard for feedback messages memory leak
Issue: WICKET-2384

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessages.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java?rev=796393&r1=796392&r2=796393&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessage.java
 Tue Jul 21 17:25:00 2009
@@ -22,6 +22,7 @@
 
 import org.apache.wicket.Component;
 import org.apache.wicket.IClusterable;
+import org.apache.wicket.model.IDetachable;
 
 
 /**
@@ -30,7 +31,7 @@
  * @author Eelco Hillenius
  * @author Jonathan Locke
  */
-public class FeedbackMessage implements IClusterable
+public class FeedbackMessage implements IClusterable, IDetachable
 {
        private static final long serialVersionUID = 1L;
 
@@ -79,7 +80,7 @@
        private final Serializable message;
 
        /** The reporting component. */
-       private final Component reporter;
+       private Component reporter;
 
        /** Whether or not this message has been rendered */
        private boolean rendered = false;
@@ -248,4 +249,10 @@
                        ((getReporter() == null) ? "null" : 
getReporter().getId()) + ", level = " +
                        getLevelAsString() + "]";
        }
+
+       /** {...@inheritdoc} */
+       public void detach()
+       {
+               reporter = null;
+       }
 }

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessages.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessages.java?rev=796393&r1=796392&r2=796393&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessages.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/feedback/FeedbackMessages.java
 Tue Jul 21 17:25:00 2009
@@ -96,11 +96,17 @@
                }
 
                List<FeedbackMessage> toDelete = messages(filter);
-               int count = toDelete.size();
+
+
+               for (FeedbackMessage message : toDelete)
+               {
+                       message.detach();
+               }
+
                messages.removeAll(toDelete);
 
                trimToSize();
-               return count;
+               return toDelete.size();
        }
 
        /**
@@ -327,9 +333,9 @@
         */
        public final void trimToSize()
        {
-               if (messages instanceof ArrayList)
+               if (messages instanceof ArrayList<?>)
                {
-                       ((ArrayList<FeedbackMessage>)messages).trimToSize();
+                       ((ArrayList<?>)messages).trimToSize();
                }
        }
 


Reply via email to