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 2019/01/17 06:50:22 UTC

[06/27] james-project git commit: JAMES-2641 Introduce GroupMailboxListener

JAMES-2641 Introduce GroupMailboxListener

That is mailboxListener carrying their default execution group around.


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0a3b38ab
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0a3b38ab
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0a3b38ab

Branch: refs/heads/master
Commit: 0a3b38abea5ee8b030a6973ec812ee4fe5c1790c
Parents: 8cf25c7
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Jan 10 10:49:06 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Jan 17 10:23:41 2019 +0700

----------------------------------------------------------------------
 .../java/org/apache/james/mailbox/MailboxListener.java   |  5 +++++
 .../org/apache/james/mailbox/util/EventCollector.java    | 11 ++++++++++-
 .../caching/CacheInvalidatingMailboxListener.java        | 10 +++++++++-
 .../cassandra/MailboxOperationLoggingListener.java       | 11 ++++++++++-
 .../events/ElasticSearchListeningMessageSearchIndex.java |  8 ++++++++
 .../mailbox/lucene/search/LuceneMessageSearchIndex.java  |  8 ++++++++
 .../listeners/QuotaThresholdCrossingListener.java        | 11 ++++++++++-
 .../events/ElasticSearchQuotaMailboxListener.java        | 10 +++++++++-
 .../james/mailbox/spamassassin/SpamAssassinListener.java |  8 ++++++++
 .../james/mailbox/store/event/SpamEventListener.java     |  2 +-
 .../store/quota/ListeningCurrentQuotaUpdater.java        | 10 +++++++++-
 .../mailbox/store/search/LazyMessageSearchIndex.java     |  8 ++++++++
 .../store/search/ListeningMessageSearchIndex.java        |  2 +-
 .../james/modules/mailbox/NoopMailboxListener.java       | 11 ++++++++++-
 .../james/jmap/event/PropagateLookupRightListener.java   | 11 ++++++++++-
 15 files changed, 116 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
index 7eb3709..253347c 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
@@ -30,6 +30,7 @@ import org.apache.james.core.User;
 import org.apache.james.core.quota.QuotaCount;
 import org.apache.james.core.quota.QuotaSize;
 import org.apache.james.mailbox.acl.ACLDiff;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageMetaData;
@@ -48,6 +49,10 @@ import com.google.common.collect.ImmutableMap;
  */
 public interface MailboxListener {
 
+    interface GroupMailboxListener extends MailboxListener {
+        Group getGroup();
+    }
+
     enum ListenerType {
         ONCE,
         EACH_NODE,

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java b/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
index 7152cf3..7b8cffa 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/util/EventCollector.java
@@ -24,8 +24,12 @@ import java.util.List;
 
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.Group;
 
-public class EventCollector implements MailboxListener {
+public class EventCollector implements MailboxListener.GroupMailboxListener {
+    private static class EventCollectorGroup extends Group {}
+
+    private static final Group GROUP = new EventCollectorGroup();
 
     private final List<Event> events = new ArrayList<>();
 
@@ -40,6 +44,11 @@ public class EventCollector implements MailboxListener {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return listenerType;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
index fdbf311..02b436b 100644
--- a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
+++ b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CacheInvalidatingMailboxListener.java
@@ -3,6 +3,7 @@ package org.apache.james.mailbox.caching;
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxListenerSupport;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -11,9 +12,11 @@ import org.slf4j.LoggerFactory;
  * A MailboxListener that invalidates the configured caches in response to Events
  *
  */
-public class CacheInvalidatingMailboxListener implements MailboxListener {
+public class CacheInvalidatingMailboxListener implements MailboxListener.GroupMailboxListener {
+    private static class CacheInvalidatingMailboxListenerGroup extends Group {}
 
     private static final Logger LOGGER = LoggerFactory.getLogger(CacheInvalidatingMailboxListener.class);
+    private static final Group GROUP = new CacheInvalidatingMailboxListenerGroup();
 
     private final MailboxByPathCache mailboxCacheByPath;
     private final MailboxMetadataCache mailboxMetadataCache;
@@ -23,6 +26,11 @@ public class CacheInvalidatingMailboxListener implements MailboxListener {
         this.mailboxMetadataCache = mailboxMetadataCache;
     }
 
+    @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
     /**
      * Used to register the CacheInvalidatingMailboxListener as a global listener
      * into the main MailboxListener

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/MailboxOperationLoggingListener.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/MailboxOperationLoggingListener.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/MailboxOperationLoggingListener.java
index 8d8ae40..2d96b04 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/MailboxOperationLoggingListener.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/MailboxOperationLoggingListener.java
@@ -25,15 +25,19 @@ import static org.apache.james.mailbox.cassandra.GhostMailbox.TYPE;
 
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.Group;
 
 /**
  * See https://issues.apache.org/jira/browse/MAILBOX-322 for reading about the Ghost mailbox bug.
  *
  * This class logs mailboxes writes in order to give context to analyse ghost mailbox bug.
  */
-public class MailboxOperationLoggingListener implements MailboxListener {
+public class MailboxOperationLoggingListener implements MailboxListener.GroupMailboxListener {
+    private static class MailboxOperationLoggingListenerGroup extends Group {}
+
     public static final String ADDED = "Added";
     public static final String REMOVED = "Removed";
+    private static final Group GROUP = new MailboxOperationLoggingListenerGroup();
 
     @Override
     public ListenerType getType() {
@@ -41,6 +45,11 @@ public class MailboxOperationLoggingListener implements MailboxListener {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public void event(Event event) {
         if (event instanceof MailboxRenamed) {
             MailboxRenamed mailboxRenamed = (MailboxRenamed) event;

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
index 6d4929e..644a5ee 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.elasticsearch.MailboxElasticSearchConstants;
 import org.apache.james.mailbox.elasticsearch.json.JsonMessageConstants;
 import org.apache.james.mailbox.elasticsearch.json.MessageToElasticSearchJson;
 import org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
@@ -59,9 +60,11 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 
 public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSearchIndex {
+    private static class ElasticSearchListeningMessageSearchIndexGroup extends Group {}
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ElasticSearchListeningMessageSearchIndex.class);
     private static final String ID_SEPARATOR = ":";
+    private static final Group GROUP = new ElasticSearchListeningMessageSearchIndexGroup();
 
     private final ElasticSearchIndexer elasticSearchIndexer;
     private final ElasticSearchSearcher searcher;
@@ -84,6 +87,11 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public EnumSet<SearchCapabilities> getSupportedCapabilities(EnumSet<MessageCapabilities> messageCapabilities) {
         return EnumSet.of(
             SearchCapabilities.MultimailboxSearch,

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
index 7fffb74..8ab47aa 100644
--- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
+++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
@@ -131,9 +131,12 @@ import com.google.common.collect.ImmutableList;
  * @param 
  */
 public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
+    private static class LuceneMessageSearchIndexGroup extends org.apache.james.mailbox.events.Group {}
+
     private static final Logger LOGGER = LoggerFactory.getLogger(LuceneMessageSearchIndex.class);
     private static final Date MAX_DATE;
     private static final Date MIN_DATE;
+    private static final org.apache.james.mailbox.events.Group GROUP = new LuceneMessageSearchIndexGroup();
     
     static {
         Calendar cal = Calendar.getInstance();
@@ -399,6 +402,11 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
+    public org.apache.james.mailbox.events.Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return ListenerType.EACH_NODE;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdCrossingListener.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdCrossingListener.java b/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdCrossingListener.java
index 3f421c3..cb87c55 100644
--- a/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdCrossingListener.java
+++ b/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdCrossingListener.java
@@ -30,6 +30,7 @@ import org.apache.james.eventsourcing.eventstore.EventStore;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.quota.mailing.QuotaMailingListenerConfiguration;
 import org.apache.james.mailbox.quota.mailing.commands.DetectThresholdCrossing;
 import org.apache.james.mailbox.quota.mailing.commands.DetectThresholdCrossingHandler;
@@ -41,8 +42,11 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.collect.ImmutableSet;
 
-public class QuotaThresholdCrossingListener implements MailboxListener {
+public class QuotaThresholdCrossingListener implements MailboxListener.GroupMailboxListener {
+    private static class QuotaThresholdCrossingListenerGroup extends Group {}
+
     private static final Logger LOGGER = LoggerFactory.getLogger(QuotaThresholdCrossingListener.class);
+    private static final Group GROUP = new QuotaThresholdCrossingListenerGroup();
 
     private final EventSourcingSystem eventSourcingSystem;
 
@@ -62,6 +66,11 @@ public class QuotaThresholdCrossingListener implements MailboxListener {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return ListenerType.ONCE;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java b/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java
index f901cfd..ac9fed0 100644
--- a/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java
+++ b/mailbox/plugin/quota-search-elasticsearch/src/main/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListener.java
@@ -25,6 +25,7 @@ import org.apache.james.backends.es.ElasticSearchIndexer;
 import org.apache.james.core.User;
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.quota.search.elasticsearch.QuotaRatioElasticSearchConstants;
 import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson;
 import org.slf4j.Logger;
@@ -32,9 +33,11 @@ import org.slf4j.LoggerFactory;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 
-public class ElasticSearchQuotaMailboxListener implements MailboxListener {
+public class ElasticSearchQuotaMailboxListener implements MailboxListener.GroupMailboxListener {
+    private static class ElasticSearchQuotaMailboxListenerGroup extends Group {}
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ElasticSearchQuotaMailboxListener.class);
+    private static final Group GROUP = new ElasticSearchQuotaMailboxListenerGroup();
 
     private final ElasticSearchIndexer indexer;
     private final QuotaRatioToElasticSearchJson quotaRatioToElasticSearchJson;
@@ -48,6 +51,11 @@ public class ElasticSearchQuotaMailboxListener implements MailboxListener {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return ListenerType.ONCE;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
index b6ffcd4..f64061c 100644
--- a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
+++ b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageMoveEvent;
 import org.apache.james.mailbox.Role;
 import org.apache.james.mailbox.SystemMailboxesProvider;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageRange;
@@ -49,9 +50,11 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 
 public class SpamAssassinListener implements SpamEventListener {
+    private static class SpamAssassinListenerGroup extends Group {}
 
     private static final Logger LOGGER = LoggerFactory.getLogger(SpamAssassinListener.class);
     private static final int LIMIT = 1;
+    private static final Group GROUP = new SpamAssassinListenerGroup();
 
     private final SpamAssassin spamAssassin;
     private final SystemMailboxesProvider systemMailboxesProvider;
@@ -69,6 +72,11 @@ public class SpamAssassinListener implements SpamEventListener {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return ListenerType.ONCE;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/SpamEventListener.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/SpamEventListener.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/SpamEventListener.java
index 94321c7..d908a98 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/SpamEventListener.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/SpamEventListener.java
@@ -20,6 +20,6 @@ package org.apache.james.mailbox.store.event;
 
 import org.apache.james.mailbox.MailboxListener;
 
-public interface SpamEventListener extends MailboxListener {
+public interface SpamEventListener extends MailboxListener.GroupMailboxListener {
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
index e00c087..c084bcd 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
@@ -26,6 +26,7 @@ import javax.inject.Inject;
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.quota.QuotaManager;
@@ -35,9 +36,11 @@ import org.apache.james.mailbox.store.event.EventFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdater {
+public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailboxListener, QuotaUpdater {
+    private static class ListeningCurrentQuotaUpdaterGroup extends Group {}
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ListeningCurrentQuotaUpdater.class);
+    private static final Group GROUP = new ListeningCurrentQuotaUpdaterGroup();
 
     private final StoreCurrentQuotaManager currentQuotaManager;
     private final QuotaRootResolver quotaRootResolver;
@@ -53,6 +56,11 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdat
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return currentQuotaManager.getAssociatedListenerType();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
index 32f9d32..7ad6fce 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java
@@ -28,6 +28,7 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManager.SearchCapabilities;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.UnsupportedSearchException;
 import org.apache.james.mailbox.model.MailboxId;
@@ -55,8 +56,10 @@ import com.google.common.base.Preconditions;
  *
  */
 public class LazyMessageSearchIndex extends ListeningMessageSearchIndex {
+    private static class LazyMessageSearchIndexGroup extends Group {}
 
     private static final Logger LOGGER = LoggerFactory.getLogger(LazyMessageSearchIndex.class);
+    private static final Group GROUP = new LazyMessageSearchIndexGroup();
 
     private final ListeningMessageSearchIndex index;
     private final ConcurrentHashMap<MailboxId, Object> indexed = new ConcurrentHashMap<>();
@@ -70,6 +73,11 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return index.getType();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
index 25d9952..c6301c2 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
@@ -45,7 +45,7 @@ import com.google.common.collect.ImmutableList;
  * 
  *
  */
-public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, MailboxListener {
+public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, MailboxListener.GroupMailboxListener {
     private static final Logger LOGGER = LoggerFactory.getLogger(ListeningMessageSearchIndex.class);
 
     private static final int UNLIMITED = -1;

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
index 003c56e..f5c10d5 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
@@ -20,8 +20,12 @@ package org.apache.james.modules.mailbox;
 
 import org.apache.james.mailbox.Event;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.Group;
 
-public class NoopMailboxListener implements MailboxListener {
+public class NoopMailboxListener implements MailboxListener.GroupMailboxListener {
+    private static class NoopMailboxListenerGroup extends Group {}
+
+    public static final Group GROUP = new NoopMailboxListenerGroup();
 
     @Override
     public ListenerType getType() {
@@ -29,6 +33,11 @@ public class NoopMailboxListener implements MailboxListener {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public void event(Event event) {
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/0a3b38ab/server/protocols/jmap/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java
index f890c4a..53cd813 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.RightManager;
 import org.apache.james.mailbox.acl.ACLDiff;
+import org.apache.james.mailbox.events.Group;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxACL.Entry;
@@ -37,8 +38,11 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class PropagateLookupRightListener implements MailboxListener {
+public class PropagateLookupRightListener implements MailboxListener.GroupMailboxListener {
+    private static class PropagateLookupRightListenerGroup extends Group {}
+
     private static final Logger LOGGER = LoggerFactory.getLogger(PropagateLookupRightListener.class);
+    private static final Group GROUP = new PropagateLookupRightListenerGroup();
 
     private final RightManager rightManager;
     private final MailboxManager mailboxManager;
@@ -50,6 +54,11 @@ public class PropagateLookupRightListener implements MailboxListener {
     }
 
     @Override
+    public Group getGroup() {
+        return GROUP;
+    }
+
+    @Override
     public ListenerType getType() {
         return ListenerType.ONCE;
     }


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