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