Author: btellier
Date: Sat Nov 28 12:53:31 2015
New Revision: 1716952

URL: http://svn.apache.org/viewvc?rev=1716952&view=rev
Log:
MAILBOX-211 MailboxListener should indicate its registration type

Modified:
    
james/project/trunk/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
    
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractStressTest.java
    
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
    
james/project/trunk/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
    
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
    
james/project/trunk/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
    
james/project/trunk/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
    
james/project/trunk/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
    
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/HashMapDelegatingMailboxListener.java
    
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
    
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
    
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
    
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
    
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java

Modified: 
james/project/trunk/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
 (original)
+++ 
james/project/trunk/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
 Sat Nov 28 12:53:31 2015
@@ -34,6 +34,14 @@ import org.apache.james.mailbox.model.Up
  */
 public interface MailboxListener {
 
+    enum ListenerType {
+        ONCE,
+        EACH_NODE,
+        MAILBOX
+    }
+
+    ListenerType getType();
+
     /**
      * Informs this listener about the given event.
      * 

Modified: 
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractStressTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractStressTest.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractStressTest.java
 (original)
+++ 
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractStressTest.java
 Sat Nov 28 12:53:31 2015
@@ -59,6 +59,10 @@ public abstract class AbstractStressTest
         getMailboxManager().createMailbox(path, session);
         getMailboxManager().addListener(path, new MailboxListener() {
 
+            @Override
+            public ListenerType getType() {
+                return ListenerType.MAILBOX;
+            }
 
             @Override
             public void event(Event event) {

Modified: 
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
 (original)
+++ 
james/project/trunk/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
 Sat Nov 28 12:53:31 2015
@@ -26,7 +26,26 @@ import org.apache.james.mailbox.MailboxL
 
 public class EventCollector implements MailboxListener {
 
-    public final List<Event> events = new ArrayList<Event>();
+    private final List<Event> events = new ArrayList<Event>();
+
+    private ListenerType listenerType;
+
+    public EventCollector(ListenerType listenerType) {
+        this.listenerType = listenerType;
+    }
+
+    public EventCollector() {
+        this(ListenerType.EACH_NODE);
+    }
+
+    @Override
+    public ListenerType getType() {
+        return listenerType;
+    }
+
+    public List<Event> getEvents() {
+        return events;
+    }
 
     public void event(Event event) {
         events.add(event);

Modified: 
james/project/trunk/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
 (original)
+++ 
james/project/trunk/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
 Sat Nov 28 12:53:31 2015
@@ -31,6 +31,11 @@ public class CacheInvalidatingMailboxLis
     }
 
     @Override
+    public ListenerType getType() {
+        return ListenerType.EACH_NODE;
+    }
+
+    @Override
     public void event(Event event) {
         // TODO this needs for sure to be smarter
         try {

Modified: 
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
 (original)
+++ 
james/project/trunk/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
 Sat Nov 28 12:53:31 2015
@@ -30,6 +30,7 @@ import com.datastax.driver.core.Prepared
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Session;
 import com.google.common.base.Preconditions;
+import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.QuotaRoot;
@@ -67,6 +68,11 @@ public class CassandraCurrentQuotaManage
     }
 
     @Override
+    public MailboxListener.ListenerType getAssociatedListenerType() {
+        return MailboxListener.ListenerType.ONCE;
+    }
+
+    @Override
     public void increase(QuotaRoot quotaRoot, long count, long size) throws 
MailboxException {
         checkArguments(count, size);
         session.execute(increaseStatement.bind(count, size, 
quotaRoot.getValue()));

Modified: 
james/project/trunk/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
 (original)
+++ 
james/project/trunk/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
 Sat Nov 28 12:53:31 2015
@@ -59,6 +59,11 @@ public class ElasticSearchListeningMessa
     }
 
     @Override
+    public ListenerType getType() {
+        return ListenerType.ONCE;
+    }
+
+    @Override
     public Iterator<Long> search(MailboxSession session, Mailbox<Id> mailbox, 
SearchQuery searchQuery) throws MailboxException {
         return searcher.search(mailbox, searchQuery);
     }

Modified: 
james/project/trunk/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
 (original)
+++ 
james/project/trunk/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
 Sat Nov 28 12:53:31 2015
@@ -349,7 +349,12 @@ public class LuceneMessageSearchIndex<Id
         super(factory);
         this.writer = writer;
     }
-    
+
+    @Override
+    public ListenerType getType() {
+        return ListenerType.EACH_NODE;
+    }
+
     /**
      * Set the max count of results which will get returned from a query. The 
default is {@link #DEFAULT_MAX_QUERY_RESULTS}
      * 

Modified: 
james/project/trunk/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
 (original)
+++ 
james/project/trunk/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
 Sat Nov 28 12:53:31 2015
@@ -25,6 +25,11 @@ import java.util.concurrent.atomic.Atomi
 import javax.inject.Inject;
 import javax.inject.Singleton;
 
+import com.google.common.base.Preconditions;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.QuotaRoot;
@@ -33,11 +38,6 @@ import org.apache.james.mailbox.store.qu
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Preconditions;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-
 @Singleton
 public class InMemoryCurrentQuotaManager implements StoreCurrentQuotaManager {
 
@@ -55,6 +55,10 @@ public class InMemoryCurrentQuotaManager
         });
     }
 
+    @Override
+    public MailboxListener.ListenerType getAssociatedListenerType() {
+        return MailboxListener.ListenerType.EACH_NODE;
+    }
 
     @Override
     public void increase(QuotaRoot quotaRoot, long count, long size) throws 
MailboxException {

Modified: 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/HashMapDelegatingMailboxListener.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/HashMapDelegatingMailboxListener.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/HashMapDelegatingMailboxListener.java
 (original)
+++ 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/HashMapDelegatingMailboxListener.java
 Sat Nov 28 12:53:31 2015
@@ -38,6 +38,11 @@ public class HashMapDelegatingMailboxLis
     private List<MailboxListener> globalListeners = new 
ArrayList<MailboxListener>();
 
     @Override
+    public ListenerType getType() {
+        return ListenerType.EACH_NODE;
+    }
+
+    @Override
     protected Map<MailboxPath, List<MailboxListener>> getListeners() {
         return listeners;
     }

Modified: 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
 (original)
+++ 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
 Sat Nov 28 12:53:31 2015
@@ -45,6 +45,11 @@ public class ListeningCurrentQuotaUpdate
     }
 
     @Override
+    public ListenerType getType() {
+        return currentQuotaManager.getAssociatedListenerType();
+    }
+
+    @Override
     public void event(Event event) {
         try {
             QuotaRoot quotaRoot = 
quotaRootResolver.getQuotaRoot(event.getMailboxPath());

Modified: 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
 (original)
+++ 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
 Sat Nov 28 12:53:31 2015
@@ -19,12 +19,15 @@
 
 package org.apache.james.mailbox.store.quota;
 
+import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
 
 public interface StoreCurrentQuotaManager extends CurrentQuotaManager {
 
+    MailboxListener.ListenerType getAssociatedListenerType();
+
     void increase(QuotaRoot quotaRoot, long count, long size) throws 
MailboxException;
 
     void decrease(QuotaRoot quotaRoot, long count, long size) throws 
MailboxException;

Modified: 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
 (original)
+++ 
james/project/trunk/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
 Sat Nov 28 12:53:31 2015
@@ -23,6 +23,7 @@ import java.util.concurrent.ConcurrentHa
 
 import javax.mail.Flags;
 
+import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MessageRange;
@@ -52,9 +53,12 @@ public class LazyMessageSearchIndex<Id e
         super(index.getFactory());
         this.index = index;
     }
-    
-    
-    
+
+    @Override
+    public ListenerType getType() {
+        return index.getType();
+    }
+
     @Override
     public void add(MailboxSession session, Mailbox<Id> mailbox, Message<Id> 
message) throws MailboxException {    
         index.add(session, mailbox, message);

Modified: 
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
 (original)
+++ 
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
 Sat Nov 28 12:53:31 2015
@@ -189,5 +189,10 @@ public class IdleProcessor extends Abstr
                 unsolicitedResponses(session, responder, false);
             }
         }
+
+        @Override
+        public ListenerType getType() {
+            return ListenerType.MAILBOX;
+        }
     }
 }

Modified: 
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java?rev=1716952&r1=1716951&r2=1716952&view=diff
==============================================================================
--- 
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
 (original)
+++ 
james/project/trunk/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
 Sat Nov 28 12:53:31 2015
@@ -101,7 +101,11 @@ public class SelectedMailboxImpl impleme
         this.path = path;
         init();
     }
- 
+
+    @Override
+    public ListenerType getType() {
+        return ListenerType.MAILBOX;
+    }
 
     private void init() throws MailboxException {
         MailboxSession mailboxSession = 
ImapSessionUtils.getMailboxSession(session);



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to