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 bt...@apache.org on 2015/11/28 13:53:31 UTC

svn commit: r1716952 - in /james/project/trunk: mailbox/api/src/main/java/org/apache/james/mailbox/ mailbox/api/src/test/java/org/apache/james/mailbox/ mailbox/api/src/test/java/org/apache/james/mailbox/util/ mailbox/caching/src/main/java/org/apache/ja...

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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org