You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2011/10/04 08:37:55 UTC

svn commit: r1178696 - in /james/mailbox/trunk: store/src/main/java/org/apache/james/mailbox/store/ store/src/test/java/org/apache/james/mailbox/store/ tool/src/test/java/org/apache/james/mailbox/copier/

Author: norman
Date: Tue Oct  4 06:37:54 2011
New Revision: 1178696

URL: http://svn.apache.org/viewvc?rev=1178696&view=rev
Log:
Refactor MailboxEventDispatcher to make contract and usage more clear

Modified:
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
    james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
    james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java
    james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java?rev=1178696&r1=1178695&r2=1178696&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java Tue Oct  4 06:37:54 2011
@@ -20,14 +20,12 @@
 package org.apache.james.mailbox.store;
 
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.SortedMap;
-import java.util.concurrent.CopyOnWriteArraySet;
-
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.MailboxListener.MailboxAdded;
+import org.apache.james.mailbox.MailboxListener.MailboxDeletion;
 import org.apache.james.mailbox.MailboxPath;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageMetaData;
@@ -37,20 +35,15 @@ import org.apache.james.mailbox.store.ma
 /**
  * Helper class to dispatch {@link Event}'s to registerend MailboxListener
  */
-public class MailboxEventDispatcher<Id> implements MailboxListener {
-
-    private final Set<MailboxListener> listeners = new CopyOnWriteArraySet<MailboxListener>();
+public class MailboxEventDispatcher<Id> {
 
     
+    private final MailboxListener listener;
 
-    /**
-     * Add a MailboxListener to this dispatcher
-     * 
-     * @param mailboxListener
-     */
-    public void addMailboxListener(MailboxListener mailboxListener) {
-        listeners.add(mailboxListener);
+    public MailboxEventDispatcher(MailboxListener listener) {
+        this.listener = listener;
     }
+    
 
     /**
      * Should get called when a new message was added to a Mailbox. All
@@ -62,7 +55,7 @@ public class MailboxEventDispatcher<Id> 
      */
     public void added(MailboxSession session, SortedMap<Long, MessageMetaData> uids, Mailbox<Id> mailbox) {
         final AddedImpl added = new AddedImpl(session, mailbox, uids);
-        event(added);
+        listener.event(added);
     }
 
     /**
@@ -75,7 +68,7 @@ public class MailboxEventDispatcher<Id> 
      */
     public void expunged(final MailboxSession session,  Map<Long, MessageMetaData> uids, Mailbox<Id> mailbox) {
         final ExpungedImpl expunged = new ExpungedImpl(session, mailbox, uids);
-        event(expunged);
+        listener.event(expunged);
     }
 
     /**
@@ -90,32 +83,10 @@ public class MailboxEventDispatcher<Id> 
      */
     public void flagsUpdated(MailboxSession session, final List<Long> uids, final Mailbox<Id> mailbox, final List<UpdatedFlags> uflags) {
         final FlagsUpdatedImpl flags = new FlagsUpdatedImpl(session, mailbox, uids, uflags);
-        event(flags);
+        listener.event(flags);
     }
 
-    /*
-     * (non-Javadoc)
-     * 
-     * @see
-     * org.apache.james.mailbox.MailboxListener#event(org.apache.james.mailbox
-     * .MailboxListener.Event)
-     */
-    public void event(Event event) {
-        for (Iterator<MailboxListener> iter = listeners.iterator(); iter.hasNext();) {
-            MailboxListener mailboxListener = iter.next();
-            mailboxListener.event(event);
-           
-        }
-    }
 
-    /**
-     * Return the the count of all registered MailboxListener
-     * 
-     * @return count
-     */
-    public int count() {
-        return listeners.size();
-    }
 
     /**
      * Should get called when a Mailbox was renamed. All registered
@@ -126,7 +97,7 @@ public class MailboxEventDispatcher<Id> 
      * @param sessionId
      */
     public void mailboxRenamed(MailboxSession session, MailboxPath from, Mailbox<Id> to) {
-        event(new MailboxRenamedEventImpl(session, from, to));
+        listener.event(new MailboxRenamedEventImpl(session, from, to));
     }
 
     public final class AddedImpl extends MailboxListener.Added {
@@ -286,7 +257,7 @@ public class MailboxEventDispatcher<Id> 
      */
     public void mailboxDeleted(MailboxSession session, Mailbox<Id> mailbox) {
         final MailboxDeletion event = new MailboxDeletionImpl(session, mailbox);
-        event(event);
+        listener.event(event);
     }
 
     /**
@@ -298,7 +269,7 @@ public class MailboxEventDispatcher<Id> 
      */
     public void mailboxAdded(MailboxSession session, Mailbox<Id> mailbox) {
         final MailboxAdded event = new MailboxAddedImpl(session, mailbox);
-        event(event);
+        listener.event(event);
     }
 
     public final class MailboxRenamedEventImpl extends MailboxListener.MailboxRenamed {
@@ -330,13 +301,4 @@ public class MailboxEventDispatcher<Id> 
             return newMailbox;
         }
     }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see org.apache.james.mailbox.MailboxListener#isClosed()
-     */
-    public boolean isClosed() {
-        return false;
-    }
 }

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java?rev=1178696&r1=1178695&r2=1178696&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java Tue Oct  4 06:37:54 2011
@@ -67,7 +67,7 @@ public class StoreMailboxManager<Id> imp
     
     public static final char SQL_WILDCARD_CHAR = '%';
     
-    private final MailboxEventDispatcher<Id> dispatcher = new MailboxEventDispatcher<Id>();
+    private MailboxEventDispatcher<Id> dispatcher;
     private AbstractDelegatingMailboxListener delegatingListener = null;  
     private final MailboxSessionMapperFactory<Id> mailboxSessionMapperFactory;    
     
@@ -105,7 +105,7 @@ public class StoreMailboxManager<Id> imp
     @SuppressWarnings("rawtypes")
     public void init() throws MailboxException{
         // The dispatcher need to have the delegating listener added
-        dispatcher.addMailboxListener(getDelegationListener());
+        dispatcher = new MailboxEventDispatcher<Id>(getDelegationListener());
         
         if (index == null) {
             index = new SimpleMessageSearchIndex<Id>(mailboxSessionMapperFactory);
@@ -169,7 +169,7 @@ public class StoreMailboxManager<Id> imp
      */
     public void setDelegatingMailboxListener(AbstractDelegatingMailboxListener delegatingListener) {
         this.delegatingListener = delegatingListener;
-        dispatcher.addMailboxListener(this.delegatingListener);
+        dispatcher = new MailboxEventDispatcher<Id>(getDelegationListener());
     }
     
     /**

Modified: james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1178696&r1=1178695&r2=1178696&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java (original)
+++ james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java Tue Oct  4 06:37:54 2011
@@ -371,17 +371,6 @@ public class StoreMessageManager<Id> imp
     }
     
     /**
-     * Add the {@link MailboxListener}
-     * 
-     * @param listener
-     * @throws MailboxException
-     */
-    public void addListener(MailboxListener listener) throws MailboxException {
-        dispatcher.addMailboxListener(listener);
-    }
-    
-
-    /**
      * This mailbox is writable
      */
     public boolean isWriteable(MailboxSession session) {

Modified: james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java?rev=1178696&r1=1178695&r2=1178696&view=diff
==============================================================================
--- james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java (original)
+++ james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherFlagsTest.java Tue Oct  4 06:37:54 2011
@@ -106,9 +106,9 @@ public class MailboxEventDispatcherFlags
     
     @Before
     public void setUp() throws Exception {
-        dispatcher = new MailboxEventDispatcher<Long>();
         collector = new EventCollector();
-        dispatcher.addMailboxListener(collector);
+
+        dispatcher = new MailboxEventDispatcher<Long>(collector);
         result = mockery.mock(MessageResult.class);
         mockery.checking(new Expectations() {{
             allowing(result).getUid();will(returnValue(23L));

Modified: james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java?rev=1178696&r1=1178695&r2=1178696&view=diff
==============================================================================
--- james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java (original)
+++ james/mailbox/trunk/tool/src/test/java/org/apache/james/mailbox/copier/MailboxCopierTest.java Tue Oct  4 06:37:54 2011
@@ -94,8 +94,15 @@ public class MailboxCopierTest {
      */
     @Test
     public void testMailboxCopy() throws MailboxException, IOException {
-        
+    	 if (srcMemMailboxManager instanceof StoreMailboxManager) {
+             ((StoreMailboxManager) srcMemMailboxManager).init();
+         }
+         if (dstMemMailboxManager instanceof StoreMailboxManager) {
+             ((StoreMailboxManager) dstMemMailboxManager).init();
+         }
+    
         srcMemMailboxManager = new MockMailboxManager(srcMemMailboxManager).getMockMailboxManager();
+       
         assertMailboxManagerSize(srcMemMailboxManager, 1);
         
         mailboxCopier.copyMailboxes(srcMemMailboxManager, dstMemMailboxManager);



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org