This is an automated email from the ASF dual-hosted git repository.

rouazana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 1d07e3170074d50cc5f2665b7d376075513abc1f
Author: RĂ©mi Kowalski <[email protected]>
AuthorDate: Tue Mar 19 11:47:07 2019 +0100

    JAMES-2691 record metrics only for event not ignored by listener
---
 .../james/mailbox/events/MailboxListener.java      |  5 ++++
 .../james/mailbox/MailboxManagerStressTest.java    |  1 -
 .../mailbox/events/ErrorHandlingContract.java      |  5 ++++
 .../james/mailbox/events/EventBusTestFixture.java  | 10 +++++++
 .../apache/james/mailbox/events/GroupContract.java |  5 ++++
 .../apache/james/mailbox/util/EventCollector.java  |  5 ++++
 .../caching/CacheInvalidatingMailboxListener.java  |  6 +++-
 .../cassandra/MailboxOperationLoggingListener.java |  5 ++++
 .../mailbox/events/delivery/InVmEventDelivery.java | 32 ++++++++++++----------
 .../mailbox/events/MailboxListenerExecutor.java    | 26 +++++++++++-------
 .../events/ElasticSearchQuotaMailboxListener.java  | 18 +++++++-----
 .../mailbox/spamassassin/SpamAssassinListener.java |  8 +++++-
 .../store/quota/ListeningCurrentQuotaUpdater.java  | 29 ++++++++++++--------
 .../store/search/ListeningMessageSearchIndex.java  | 27 +++++++++---------
 .../apache/james/imap/processor/IdleProcessor.java |  7 +++--
 .../james/modules/mailbox/NoopMailboxListener.java |  6 ++++
 16 files changed, 134 insertions(+), 61 deletions(-)

diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/events/MailboxListener.java
 
b/mailbox/api/src/main/java/org/apache/james/mailbox/events/MailboxListener.java
index dbd44cf..364968b 100644
--- 
a/mailbox/api/src/main/java/org/apache/james/mailbox/events/MailboxListener.java
+++ 
b/mailbox/api/src/main/java/org/apache/james/mailbox/events/MailboxListener.java
@@ -63,6 +63,11 @@ public interface MailboxListener {
         return ExecutionMode.SYNCHRONOUS;
     }
 
+
+    default boolean isHandling(Event event) {
+        return true;
+    }
+
     /**
      * Informs this listener about the given event.
      *
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
index 544e1fe..608fa24 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
@@ -89,7 +89,6 @@ public abstract class MailboxManagerStressTest<T extends 
MailboxManager> {
                     return;
                 }
 
-
                 try {
                     MailboxSession mailboxSession = 
mailboxManager.createSystemSession(username);
 
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java
index b246c82..c6f4494 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/events/ErrorHandlingContract.java
@@ -52,6 +52,11 @@ interface ErrorHandlingContract extends EventBusContract {
         }
 
         @Override
+        public boolean isHandling(Event event) {
+            return true;
+        }
+
+        @Override
         public void event(Event event) {
             timeElapsed.add(Instant.now());
             throw new RuntimeException("throw to trigger reactor retry");
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
 
b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
index c655cbd..3156d00 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/events/EventBusTestFixture.java
@@ -44,6 +44,11 @@ public interface EventBusTestFixture {
         private final AtomicInteger calls = new AtomicInteger(0);
 
         @Override
+        public boolean isHandling(Event event) {
+            return true;
+        }
+
+        @Override
         public void event(Event event) {
             calls.incrementAndGet();
         }
@@ -61,6 +66,11 @@ public interface EventBusTestFixture {
         }
 
         @Override
+        public boolean isHandling(Event event) {
+            return true;
+        }
+
+        @Override
         public void event(Event event) {
             if (eventsCauseThrowing.contains(event)) {
                 throw new RuntimeException("event triggers throwing");
diff --git 
a/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java 
b/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java
index 87c5a2d..2ba6686 100644
--- 
a/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java
+++ 
b/mailbox/api/src/test/java/org/apache/james/mailbox/events/GroupContract.java
@@ -72,6 +72,11 @@ public interface GroupContract {
                 }
 
                 @Override
+                public boolean isHandling(Event event) {
+                    return true;
+                }
+
+                @Override
                 public void event(Event event) throws Exception {
                     if (nbCalls.get() - finishedExecutions.get() > 
EventBus.EXECUTION_RATE) {
                         rateExceeded.set(true);
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 80d0d97..a195beb 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
@@ -43,6 +43,11 @@ public class EventCollector implements 
MailboxListener.GroupMailboxListener {
     }
 
     @Override
+    public boolean isHandling(Event event) {
+        return true;
+    }
+
+    @Override
     public void event(Event event) {
         events.add(event);
     }
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 d911604..6612d6c 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
@@ -41,10 +41,14 @@ public class CacheInvalidatingMailboxListener implements 
MailboxListener.GroupMa
         eventBus.register(this);
     }
 
+    @Override
+    public boolean isHandling(Event event) {
+        return event instanceof MailboxEvent;
+    }
 
     @Override
     public void event(Event event) {
-        if (event instanceof MailboxEvent) {
+        if (isHandling(event)) {
             mailboxEvent((MailboxEvent) event);
         }
     }
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 7e98f07..bcd44f0 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
@@ -45,6 +45,11 @@ public class MailboxOperationLoggingListener implements 
MailboxListener.GroupMai
     }
 
     @Override
+    public boolean isHandling(Event event) {
+        return event instanceof MailboxRenamed || event instanceof 
MailboxDeletion || event instanceof MailboxAdded;
+    }
+
+    @Override
     public void event(Event event) {
         if (event instanceof MailboxRenamed) {
             MailboxRenamed mailboxRenamed = (MailboxRenamed) event;
diff --git 
a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
 
b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
index 6cdbe28..a45f36c 100644
--- 
a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
+++ 
b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/delivery/InVmEventDelivery.java
@@ -37,7 +37,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
-
 import reactor.core.publisher.Mono;
 import reactor.core.publisher.MonoProcessor;
 import reactor.core.scheduler.Schedulers;
@@ -83,22 +82,27 @@ public class InVmEventDelivery implements EventDelivery {
     }
 
     private void doDeliverToListener(MailboxListener mailboxListener, Event 
event) {
-        TimeMetric timer = metricFactory.timer(timerName(mailboxListener));
-        try (Closeable mdc = MDCBuilder.create()
-                .addContext(EventBus.StructuredLoggingFields.EVENT_ID, 
event.getEventId())
-                .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, 
event.getClass())
-                .addContext(EventBus.StructuredLoggingFields.USER, 
event.getUser())
-                .addContext(EventBus.StructuredLoggingFields.LISTENER_CLASS, 
mailboxListener.getClass())
-                .build()) {
-
-            mailboxListener.event(event);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            timer.stopAndPublish();
+        if (mailboxListener.isHandling(event)) {
+            TimeMetric timer = metricFactory.timer(timerName(mailboxListener));
+            try (Closeable mdc = buildMDC(mailboxListener, event)) {
+                mailboxListener.event(event);
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            } finally {
+                timer.stopAndPublish();
+            }
         }
     }
 
+    private Closeable buildMDC(MailboxListener mailboxListener, Event event) {
+        return MDCBuilder.create()
+            .addContext(EventBus.StructuredLoggingFields.EVENT_ID, 
event.getEventId())
+            .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, 
event.getClass())
+            .addContext(EventBus.StructuredLoggingFields.USER, event.getUser())
+            .addContext(EventBus.StructuredLoggingFields.LISTENER_CLASS, 
mailboxListener.getClass())
+            .build();
+    }
+
     private StructuredLogger structuredLogger(Event event, MailboxListener 
mailboxListener) {
         return MDCStructuredLogger.forLogger(LOGGER)
             .addField(EventBus.StructuredLoggingFields.EVENT_ID, 
event.getEventId())
diff --git 
a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java
 
b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java
index 9a7fd33..70783e7 100644
--- 
a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java
+++ 
b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/MailboxListenerExecutor.java
@@ -35,16 +35,22 @@ public class MailboxListenerExecutor {
     }
 
     void execute(MailboxListener listener, MDCBuilder mdcBuilder, Event event) 
throws Exception {
-        TimeMetric timer = metricFactory.timer(timerName(listener));
-        try (Closeable mdc = mdcBuilder
-                .addContext(EventBus.StructuredLoggingFields.EVENT_ID, 
event.getEventId())
-                .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, 
event.getClass())
-                .addContext(EventBus.StructuredLoggingFields.USER, 
event.getUser())
-                .addContext(EventBus.StructuredLoggingFields.LISTENER_CLASS, 
listener.getClass())
-                .build()) {
-            listener.event(event);
-        } finally {
-            timer.stopAndPublish();
+        if (listener.isHandling(event)) {
+            TimeMetric timer = metricFactory.timer(timerName(listener));
+            try (Closeable mdc = buildMDC(listener, mdcBuilder, event)) {
+                listener.event(event);
+            } finally {
+                timer.stopAndPublish();
+            }
         }
     }
+
+    private Closeable buildMDC(MailboxListener listener, MDCBuilder 
mdcBuilder, Event event) {
+        return mdcBuilder
+            .addContext(EventBus.StructuredLoggingFields.EVENT_ID, 
event.getEventId())
+            .addContext(EventBus.StructuredLoggingFields.EVENT_CLASS, 
event.getClass())
+            .addContext(EventBus.StructuredLoggingFields.USER, event.getUser())
+            .addContext(EventBus.StructuredLoggingFields.LISTENER_CLASS, 
listener.getClass())
+            .build();
+    }
 }
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 d58ca2e..2b828f2 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
@@ -32,7 +32,8 @@ import 
org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearc
 import com.fasterxml.jackson.core.JsonProcessingException;
 
 public class ElasticSearchQuotaMailboxListener implements 
MailboxListener.GroupMailboxListener {
-    public static class ElasticSearchQuotaMailboxListenerGroup extends Group {}
+    public static class ElasticSearchQuotaMailboxListenerGroup extends Group {
+    }
 
     private static final Group GROUP = new 
ElasticSearchQuotaMailboxListenerGroup();
 
@@ -41,8 +42,8 @@ public class ElasticSearchQuotaMailboxListener implements 
MailboxListener.GroupM
 
     @Inject
     public ElasticSearchQuotaMailboxListener(
-            
@Named(QuotaRatioElasticSearchConstants.InjectionNames.QUOTA_RATIO) 
ElasticSearchIndexer indexer,
-            QuotaRatioToElasticSearchJson quotaRatioToElasticSearchJson) {
+        @Named(QuotaRatioElasticSearchConstants.InjectionNames.QUOTA_RATIO) 
ElasticSearchIndexer indexer,
+        QuotaRatioToElasticSearchJson quotaRatioToElasticSearchJson) {
         this.indexer = indexer;
         this.quotaRatioToElasticSearchJson = quotaRatioToElasticSearchJson;
     }
@@ -53,14 +54,17 @@ public class ElasticSearchQuotaMailboxListener implements 
MailboxListener.GroupM
     }
 
     @Override
+    public boolean isHandling(Event event) {
+        return event instanceof QuotaUsageUpdatedEvent;
+    }
+
+    @Override
     public void event(Event event) throws JsonProcessingException {
-        if (event instanceof QuotaUsageUpdatedEvent) {
-            handleEvent(event.getUser(), (QuotaUsageUpdatedEvent) event);
-        }
+        handleEvent(event.getUser(), (QuotaUsageUpdatedEvent) event);
     }
 
     private void handleEvent(User user, QuotaUsageUpdatedEvent event) throws 
JsonProcessingException {
         indexer.index(user.asString(),
-                quotaRatioToElasticSearchJson.convertToJson(user.asString(), 
event));
+            quotaRatioToElasticSearchJson.convertToJson(user.asString(), 
event));
     }
 }
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 78bddc9..c4d35fa 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
@@ -82,12 +82,18 @@ public class SpamAssassinListener implements 
SpamEventListener {
     }
 
     @Override
+    public boolean isHandling(Event event) {
+        return event instanceof MessageMoveEvent || event instanceof Added;
+    }
+
+    @Override
     public void event(Event event) throws MailboxException {
-        MailboxSession session = 
mailboxManager.createSystemSession(getClass().getCanonicalName());
         if (event instanceof MessageMoveEvent) {
+            MailboxSession session = 
mailboxManager.createSystemSession(getClass().getCanonicalName());
             handleMessageMove(event, session, (MessageMoveEvent) event);
         }
         if (event instanceof Added) {
+            MailboxSession session = 
mailboxManager.createSystemSession(getClass().getCanonicalName());
             handleAdded(event, session, (Added) event);
         }
     }
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 8196958..e10d571 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
@@ -60,19 +60,24 @@ public class ListeningCurrentQuotaUpdater implements 
MailboxListener.GroupMailbo
     }
 
     @Override
+    public boolean isHandling(Event event) {
+        return event instanceof Added || event instanceof Expunged || event 
instanceof MailboxDeletion;
+    }
+
+    @Override
     public void event(Event event) throws MailboxException {
-        if (event instanceof Added) {
-            Added addedEvent = (Added) event;
-            QuotaRoot quotaRoot = 
quotaRootResolver.getQuotaRoot(addedEvent.getMailboxId());
-            handleAddedEvent(addedEvent, quotaRoot);
-        } else if (event instanceof Expunged) {
-            Expunged expungedEvent = (Expunged) event;
-            QuotaRoot quotaRoot = 
quotaRootResolver.getQuotaRoot(expungedEvent.getMailboxId());
-            handleExpungedEvent(expungedEvent, quotaRoot);
-        } else if (event instanceof MailboxDeletion) {
-            MailboxDeletion mailboxDeletionEvent = (MailboxDeletion) event;
-            handleMailboxDeletionEvent(mailboxDeletionEvent);
-        }
+            if (event instanceof Added) {
+                Added addedEvent = (Added) event;
+                QuotaRoot quotaRoot = 
quotaRootResolver.getQuotaRoot(addedEvent.getMailboxId());
+                handleAddedEvent(addedEvent, quotaRoot);
+            } else if (event instanceof Expunged) {
+                Expunged expungedEvent = (Expunged) event;
+                QuotaRoot quotaRoot = 
quotaRootResolver.getQuotaRoot(expungedEvent.getMailboxId());
+                handleExpungedEvent(expungedEvent, quotaRoot);
+            } else if (event instanceof MailboxDeletion) {
+                MailboxDeletion mailboxDeletionEvent = (MailboxDeletion) event;
+                handleMailboxDeletionEvent(mailboxDeletionEvent);
+            }
     }
 
     private void handleExpungedEvent(Expunged expunged, QuotaRoot quotaRoot) 
throws MailboxException {
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 510c4cf..6cea2d4 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
@@ -43,8 +43,6 @@ import com.google.common.collect.ImmutableList;
 /**
  * {@link MessageSearchIndex} which needs to get registered as global {@link 
MailboxListener} and so get
  * notified about message changes. This will then allow to update the 
underlying index.
- * 
- *
  */
 public abstract class ListeningMessageSearchIndex implements 
MessageSearchIndex, MailboxListener.GroupMailboxListener {
     private static final Logger LOGGER = 
LoggerFactory.getLogger(ListeningMessageSearchIndex.class);
@@ -59,17 +57,20 @@ public abstract class ListeningMessageSearchIndex 
implements MessageSearchIndex,
         this.sessionProvider = sessionProvider;
     }
 
+    @Override
+    public boolean isHandling(Event event) {
+        return INTERESTING_EVENTS.contains(event.getClass());
+    }
+
     /**
      * Process the {@link Event} and update the index if
      * something relevant is received
      */
     @Override
     public void event(Event event) throws Exception {
-        if (INTERESTING_EVENTS.contains(event.getClass())) {
-            handleMailboxEvent(event,
-                
sessionProvider.createSystemSession(event.getUser().asString()),
-                (MailboxEvent) event);
-        }
+        handleMailboxEvent(event,
+            sessionProvider.createSystemSession(event.getUser().asString()),
+            (MailboxEvent) event);
     }
 
     private void handleMailboxEvent(Event event, MailboxSession session, 
MailboxEvent mailboxEvent) throws Exception {
@@ -98,7 +99,7 @@ public abstract class ListeningMessageSearchIndex implements 
MessageSearchIndex,
     private Stream<MailboxMessage> retrieveMailboxMessages(MailboxSession 
session, Mailbox mailbox, MessageRange range) {
         try {
             return Iterators.toStream(factory.getMessageMapper(session)
-                    .findInMailbox(mailbox, range, FetchType.Full, UNLIMITED));
+                .findInMailbox(mailbox, range, FetchType.Full, UNLIMITED));
         } catch (Exception e) {
             LOGGER.error("Could not retrieve message {} in mailbox {}", 
range.toString(), mailbox.getMailboxId().serialize(), e);
             return Stream.empty();
@@ -117,8 +118,8 @@ public abstract class ListeningMessageSearchIndex 
implements MessageSearchIndex,
     /**
      * Delete the concerned UIDs for the given {@link Mailbox} from the index
      *
-     * @param session The mailbox session performing the expunge
-     * @param mailbox mailbox on which the expunge was performed
+     * @param session      The mailbox session performing the expunge
+     * @param mailbox      mailbox on which the expunge was performed
      * @param expungedUids UIDS to be deleted
      */
     public abstract void delete(MailboxSession session, Mailbox mailbox, 
Collection<MessageUid> expungedUids) throws Exception;
@@ -130,12 +131,12 @@ public abstract class ListeningMessageSearchIndex 
implements MessageSearchIndex,
      * @param mailbox mailbox on which the expunge was performed
      */
     public abstract void deleteAll(MailboxSession session, Mailbox mailbox) 
throws Exception;
-    
+
     /**
      * Update the messages concerned by the updated flags list for the given 
{@link Mailbox}
      *
-     * @param session session that performed the update
-     * @param mailbox mailbox containing the updated messages
+     * @param session          session that performed the update
+     * @param mailbox          mailbox containing the updated messages
      * @param updatedFlagsList list of flags that were updated
      */
     public abstract void update(MailboxSession session, Mailbox mailbox, 
List<UpdatedFlags> updatedFlagsList) throws Exception;
diff --git 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
index 3ef9ab3..6569fa1 100644
--- 
a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
+++ 
b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
@@ -170,10 +170,13 @@ public class IdleProcessor extends 
AbstractMailboxProcessor<IdleRequest> impleme
         }
 
         @Override
+        public boolean isHandling(Event event) {
+            return event instanceof Added || event instanceof Expunged || 
event instanceof FlagsUpdated;
+        }
+
+        @Override
         public void event(Event event) {
-            if (event instanceof Added || event instanceof Expunged || event 
instanceof FlagsUpdated) {
                 unsolicitedResponses(session, responder, false);
-            }
         }
 
         @Override
diff --git 
a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
 
b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
index 7c97c37..2ef25e4 100644
--- 
a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
+++ 
b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/NoopMailboxListener.java
@@ -32,6 +32,12 @@ public class NoopMailboxListener implements 
MailboxListener.GroupMailboxListener
         return GROUP;
     }
 
+
+    @Override
+    public boolean isHandling(Event event) {
+        return true;
+    }
+
     @Override
     public void event(Event event) {
     }


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

Reply via email to