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]

Reply via email to