Author: norman
Date: Mon Sep 20 19:16:52 2010
New Revision: 999065
URL: http://svn.apache.org/viewvc?rev=999065&view=rev
Log:
Make sure that DelegatingMailboxListener does not loose any events when a
MailboxListener was closed (IMAP-216).
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/DelegatingMailboxListener.java
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/DelegatingMailboxListener.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/DelegatingMailboxListener.java?rev=999065&r1=999064&r2=999065&view=diff
==============================================================================
---
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/DelegatingMailboxListener.java
(original)
+++
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/DelegatingMailboxListener.java
Mon Sep 20 19:16:52 2010
@@ -51,18 +51,24 @@ public class DelegatingMailboxListener i
* (non-Javadoc)
* @see
org.apache.james.mailbox.MailboxListener#event(org.apache.james.mailbox.MailboxListener.Event)
*/
- public void event(Event event) {
+ public synchronized void event(Event event) {
List<MailboxListener> mListeners =
listeners.get(event.getMailboxPath());
if (mListeners != null && mListeners.isEmpty() == false) {
+ List<MailboxListener> closedListener = new
ArrayList<MailboxListener>();
+
int sz = mListeners.size();
for (int i = 0; i < sz; i++) {
MailboxListener l = mListeners.get(i);
if (l.isClosed()) {
- mListeners.remove(l);
+ closedListener.add(l);
} else {
l.event(event);
}
}
+
+ if (closedListener.isEmpty() == false) {
+ mListeners.removeAll(closedListener);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]