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:29 UTC
[13/27] james-project git commit: JAMES-2641 Drop Delegating mailbox
listener and rather use the EventBus
JAMES-2641 Drop Delegating mailbox listener and rather use the EventBus
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/89f168de
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/89f168de
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/89f168de
Branch: refs/heads/master
Commit: 89f168de14d819e7c877a1907c1215d151e71feb
Parents: c82c138
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Jan 10 14:16:30 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Jan 17 10:23:41 2019 +0700
----------------------------------------------------------------------
.../james/mailbox/MailboxListenerSupport.java | 82 ------------
.../apache/james/mailbox/MailboxManager.java | 3 -
.../apache/james/mailbox/events/EventBus.java | 4 +
.../CacheInvalidatingMailboxListener.java | 9 +-
mailbox/cassandra/pom.xml | 5 +
.../cassandra/CassandraMailboxManager.java | 8 +-
.../cassandra/CassandraMessageManager.java | 14 +--
.../CassandraCombinationManagerTest.java | 9 +-
.../CassandraCombinationManagerTestSystem.java | 8 +-
.../CassandraMailboxManagerProvider.java | 22 ++--
...CassandraMessageIdManagerSideEffectTest.java | 6 +-
.../CassandraMessageIdManagerStorageTest.java | 9 +-
.../CassandraMessageIdManagerTestSystem.java | 14 +--
.../cassandra/CassandraTestSystemFixture.java | 20 +--
.../CassandraMailboxManagerAttachmentTest.java | 12 +-
mailbox/elasticsearch/pom.xml | 5 +
.../ElasticSearchIntegrationTest.java | 15 +--
.../james/mailbox/events/InVMEventBus.java | 9 +-
mailbox/jpa/pom.xml | 5 +
.../james/mailbox/jpa/JPAMailboxManager.java | 6 +-
.../james/mailbox/jpa/JPAMessageManager.java | 6 +-
.../jpa/openjpa/OpenJPAMailboxManager.java | 8 +-
.../jpa/openjpa/OpenJPAMessageManager.java | 6 +-
.../resources/META-INF/spring/mailbox-jpa.xml | 2 +-
.../mailbox/jpa/JpaMailboxManagerProvider.java | 11 +-
mailbox/lucene/pom.xml | 5 +
.../search/LuceneMessageSearchIndexTest.java | 15 +--
mailbox/maildir/pom.xml | 5 +
.../META-INF/spring/mailbox-maildir.xml | 2 +-
.../maildir/MaildirMailboxManagerProvider.java | 11 +-
.../inmemory/InMemoryMailboxManager.java | 8 +-
.../inmemory/InMemoryMessageManager.java | 6 +-
.../META-INF/spring/mailbox-memory.xml | 2 +-
.../InMemoryMailboxManagerAttachmentTest.java | 12 +-
.../manager/InMemoryIntegrationResources.java | 36 +++---
.../InMemoryMessageIdManagerSideEffectTest.java | 10 +-
mailbox/plugin/quota-mailing/pom.xml | 5 +
.../QuotaThresholdListenersTestSystem.java | 26 ++--
.../search/SimpleMessageSearchIndexTest.java | 4 +-
mailbox/spring/pom.xml | 4 +
.../mailbox/spring/MailboxInitializer.java | 20 ++-
.../resources/META-INF/spring/event-system.xml | 6 +-
.../main/resources/META-INF/spring/quota.xml | 2 +-
.../META-INF/spring/spring-mailbox.xml | 4 +-
.../mailbox/store/StoreMailboxManager.java | 76 ++++-------
.../mailbox/store/StoreMessageIdManager.java | 36 +++---
.../mailbox/store/StoreMessageManager.java | 52 ++++----
.../james/mailbox/store/StoreRightManager.java | 19 +--
.../event/DefaultDelegatingMailboxListener.java | 126 -------------------
.../store/event/DelegatingMailboxListener.java | 27 ----
.../store/event/MailboxAnnotationListener.java | 14 ++-
.../quota/ListeningCurrentQuotaUpdater.java | 24 ++--
.../AbstractMessageIdManagerSideEffectTest.java | 49 ++++----
.../store/MessageIdManagerTestSystem.java | 6 +-
.../mailbox/store/StoreMailboxManagerTest.java | 10 +-
.../mailbox/store/StoreRightManagerTest.java | 6 +-
.../quota/ListeningCurrentQuotaUpdaterTest.java | 11 +-
mpt/impl/imap-mailbox/cassandra/pom.xml | 5 +
.../cassandra/host/CassandraHostSystem.java | 15 ++-
mpt/impl/imap-mailbox/elasticsearch/pom.xml | 5 +
.../host/ElasticSearchHostSystem.java | 13 +-
mpt/impl/imap-mailbox/jpa/pom.xml | 5 +
.../mpt/imapmailbox/jpa/host/JPAHostSystem.java | 17 +--
mpt/impl/imap-mailbox/lucenesearch/pom.xml | 4 +
.../host/LuceneSearchHostSystem.java | 15 +--
mpt/impl/imap-mailbox/maildir/pom.xml | 5 +
.../maildir/host/MaildirHostSystem.java | 16 ++-
.../app/spring/JamesSpringContextTest.java | 14 +--
.../modules/mailbox/CassandraMailboxModule.java | 2 +-
.../mailbox/ElasticSearchMailboxModule.java | 2 +-
.../ElasticSearchQuotaSearcherModule.java | 2 +-
.../james/modules/mailbox/JPAMailboxModule.java | 2 +-
.../james/modules/mailbox/JpaQuotaModule.java | 2 +-
.../mailbox/LuceneSearchMailboxModule.java | 2 +-
server/container/guice/mailbox/pom.xml | 4 +
.../modules/mailbox/DefaultEventModule.java | 11 +-
.../modules/mailbox/MemoryMailboxModule.java | 2 +-
.../modules/mailbox/MemoryQuotaModule.java | 2 +-
.../java/org/apache/james/jmap/JMAPModule.java | 2 +-
79 files changed, 478 insertions(+), 606 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListenerSupport.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListenerSupport.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListenerSupport.java
deleted file mode 100644
index f76b70f..0000000
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListenerSupport.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailbox;
-
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MailboxPath;
-
-/**
- * Implementations of this interface supports {@link MailboxListener}. Its needed that the events get handled
- * in the submitted order
- *
- *
- */
-public interface MailboxListenerSupport {
-
- /**
- * <p>
- * Implementations of Mailbox may interpret the fact that someone is
- * listening and do some caching and even postpone persistence until
- * everyone has removed itself.
- * </p>
- *
- * @param mailboxId
- * not null
- * @param listener
- * not null
- * @param session
- * not null
- * @throws MailboxException
- */
- void addListener(MailboxId mailboxId, MailboxListener listener, MailboxSession session) throws MailboxException;
-
- /**
- * Remove the {@link MailboxListener}
- *
- * @param mailboxId
- * @param listner
- * @param session
- * @throws MailboxException
- */
- void removeListener(MailboxId mailboxId, MailboxListener listner, MailboxSession session) throws MailboxException;
-
- /**
- * Add a {@link MailboxListener} which get fired for ever
- * {@link MailboxPath}
- *
- * @param listener
- * @param session
- * @throws MailboxException
- */
- void addGlobalListener(MailboxListener listener, MailboxSession session) throws MailboxException;
-
-
- /**
- * Remove the {@link MailboxListener}
- *
- * @param listner
- * @param session
- * @throws MailboxException
- */
- void removeGlobalListener(MailboxListener listner, MailboxSession session) throws MailboxException;
-
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index be6c107..3b5f36c 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -23,7 +23,6 @@ import java.util.EnumSet;
import java.util.List;
import java.util.Optional;
-import org.apache.james.mailbox.events.Group;
import org.apache.james.mailbox.events.Registration;
import org.apache.james.mailbox.exception.BadCredentialsException;
import org.apache.james.mailbox.exception.MailboxException;
@@ -349,7 +348,5 @@ public interface MailboxManager extends RequestAware, RightManager, MailboxAnnot
Registration register(MailboxListener listener, MailboxId registrationKey);
- Registration register(MailboxListener listener, Group group);
-
Registration register(MailboxListener.GroupMailboxListener groupMailboxListener);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
index 02ea68f..70275cc 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java
@@ -38,4 +38,8 @@ public interface EventBus {
default Mono<Void> dispatch(Event event, RegistrationKey key) {
return dispatch(event, ImmutableSet.of(key));
}
+
+ default Registration register(MailboxListener.GroupMailboxListener groupMailboxListener) {
+ return register(groupMailboxListener, groupMailboxListener.getGroup());
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/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 02b436b..f693c7a 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
@@ -2,7 +2,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.EventBus;
import org.apache.james.mailbox.events.Group;
import org.apache.james.mailbox.exception.MailboxException;
import org.slf4j.Logger;
@@ -35,11 +35,10 @@ public class CacheInvalidatingMailboxListener implements MailboxListener.GroupMa
* Used to register the CacheInvalidatingMailboxListener as a global listener
* into the main MailboxListener
*
- * @param listener
- * @throws MailboxException
+ * @param eventBus
*/
- public void register(MailboxListenerSupport listener) throws MailboxException {
- listener.addGlobalListener(this, null);
+ public void register(EventBus eventBus) {
+ eventBus.register(this);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index bca6d37..f902976 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -54,6 +54,11 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-event-memory</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>apache-james-mailbox-store</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
index 8b5623c..44a00ad 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java
@@ -26,6 +26,7 @@ import javax.inject.Inject;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
@@ -35,7 +36,6 @@ import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
@@ -61,7 +61,7 @@ public class CassandraMailboxManager extends StoreMailboxManager {
@Inject
public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, SessionProvider sessionProvider,
MailboxPathLocker locker, MessageParser messageParser,
- MessageId.Factory messageIdFactory, DelegatingMailboxListener delegatingMailboxListener,
+ MessageId.Factory messageIdFactory, EventBus eventBus,
StoreMailboxAnnotationManager annotationManager, StoreRightManager storeRightManager,
QuotaComponents quotaComponents, MessageSearchIndex index,
MailboxManagerConfiguration configuration) {
@@ -71,7 +71,7 @@ public class CassandraMailboxManager extends StoreMailboxManager {
messageParser,
messageIdFactory,
annotationManager,
- delegatingMailboxListener,
+ eventBus,
storeRightManager,
quotaComponents,
index,
@@ -101,7 +101,7 @@ public class CassandraMailboxManager extends StoreMailboxManager {
protected StoreMessageManager createMessageManager(Mailbox mailboxRow, MailboxSession session) {
return new CassandraMessageManager(mapperFactory,
getMessageSearchIndex(),
- getDelegationListener(),
+ getEventBus(),
this.locker,
mailboxRow,
getQuotaComponents().getQuotaManager(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
index 11b46c9..918dd1d 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java
@@ -25,6 +25,7 @@ import javax.mail.Flags;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
@@ -33,7 +34,6 @@ import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.BatchSizes;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -49,12 +49,12 @@ public class CassandraMessageManager extends StoreMessageManager {
private CassandraMailboxSessionMapperFactory mapperFactory;
- public CassandraMessageManager(CassandraMailboxSessionMapperFactory mapperFactory, MessageSearchIndex index,
- DelegatingMailboxListener delegatingMailboxListener, MailboxPathLocker locker, Mailbox mailbox, QuotaManager quotaManager,
- QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory,
- BatchSizes batchSizes,
- StoreRightManager storeRightManager) {
- super(CassandraMailboxManager.MESSAGE_CAPABILITIES, mapperFactory, index, delegatingMailboxListener, locker, mailbox,
+ CassandraMessageManager(CassandraMailboxSessionMapperFactory mapperFactory, MessageSearchIndex index,
+ EventBus eventBus, MailboxPathLocker locker, Mailbox mailbox, QuotaManager quotaManager,
+ QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory,
+ BatchSizes batchSizes,
+ StoreRightManager storeRightManager) {
+ super(CassandraMailboxManager.MESSAGE_CAPABILITIES, mapperFactory, index, eventBus, locker, mailbox,
quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, storeRightManager);
this.mapperFactory = mapperFactory;
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
index 65cc240..ad58afe 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
@@ -22,10 +22,12 @@ package org.apache.james.mailbox.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraRule;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.store.AbstractCombinationManagerTest;
import org.apache.james.mailbox.store.CombinationManagerTestSystem;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -60,8 +62,9 @@ public class CassandraCombinationManagerTest extends AbstractCombinationManagerT
}
@Override
- public CombinationManagerTestSystem createTestingData() throws Exception {
- return CassandraCombinationManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), new DefaultDelegatingMailboxListener());
+ public CombinationManagerTestSystem createTestingData() {
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ return CassandraCombinationManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), eventBus);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
index 9e1430c..4878a9b 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
@@ -24,11 +24,11 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.CombinationManagerTestSystem;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
public class CassandraCombinationManagerTestSystem extends CombinationManagerTestSystem {
@@ -36,10 +36,10 @@ public class CassandraCombinationManagerTestSystem extends CombinationManagerTes
private final CassandraMailboxSessionMapperFactory mapperFactory;
private final CassandraMailboxManager cassandraMailboxManager;
- public static CombinationManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, DelegatingMailboxListener delegatingMailboxListener) throws Exception {
+ public static CombinationManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, EventBus eventBus) {
CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
- return new CassandraCombinationManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, delegatingMailboxListener),
+ return new CassandraCombinationManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, eventBus),
mapperFactory,
CassandraTestSystemFixture.createMailboxManager(mapperFactory));
}
@@ -57,7 +57,7 @@ public class CassandraCombinationManagerTestSystem extends CombinationManagerTes
}
@Override
- public MessageManager createMessageManager(Mailbox mailbox, MailboxSession session) throws MailboxException {
+ public MessageManager createMessageManager(Mailbox mailbox, MailboxSession session) {
return cassandraMailboxManager.createMessageManager(mailbox, session);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
index 1c7f467..5849e2f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
@@ -30,7 +30,8 @@ import org.apache.james.mailbox.cassandra.quota.CassandraGlobalMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerDomainMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
-import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
@@ -39,7 +40,6 @@ import org.apache.james.mailbox.store.NoMailboxPathLocker;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxAnnotationListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -49,6 +49,7 @@ import org.apache.james.mailbox.store.quota.QuotaComponents;
import org.apache.james.mailbox.store.quota.StoreQuotaManager;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
+import org.apache.james.metrics.api.NoopMetricFactory;
import com.datastax.driver.core.Session;
@@ -67,8 +68,8 @@ public class CassandraMailboxManagerProvider {
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- DefaultDelegatingMailboxListener delegatingMailboxListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver, delegatingMailboxListener);
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver, eventBus);
Authenticator noAuthenticator = null;
Authorizator noAuthorizator = null;
@@ -82,20 +83,17 @@ public class CassandraMailboxManagerProvider {
CassandraCurrentQuotaManager currentQuotaUpdater = new CassandraCurrentQuotaManager(session);
StoreQuotaManager storeQuotaManager = new StoreQuotaManager(currentQuotaUpdater, maxQuotaManager);
QuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(sessionProvider, mapperFactory);
- ListeningCurrentQuotaUpdater quotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaUpdater, quotaRootResolver, delegatingMailboxListener, storeQuotaManager);
+ ListeningCurrentQuotaUpdater quotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaUpdater, quotaRootResolver, eventBus, storeQuotaManager);
QuotaComponents quotaComponents = new QuotaComponents(maxQuotaManager, storeQuotaManager, quotaRootResolver, quotaUpdater);
MessageSearchIndex index = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new DefaultTextExtractor());
CassandraMailboxManager manager = new CassandraMailboxManager(mapperFactory, sessionProvider, new NoMailboxPathLocker(),
- messageParser, messageIdFactory, delegatingMailboxListener, annotationManager, storeRightManager,
+ messageParser, messageIdFactory, eventBus, annotationManager, storeRightManager,
quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
- try {
- delegatingMailboxListener.addGlobalListener(quotaUpdater, sessionProvider.createSystemSession("admin"));
- delegatingMailboxListener.addGlobalListener(new MailboxAnnotationListener(mapperFactory, sessionProvider), sessionProvider.createSystemSession("admin"));
- } catch (MailboxException e) {
- throw new RuntimeException(e);
- }
+
+ eventBus.register(quotaUpdater);
+ eventBus.register(new MailboxAnnotationListener(mapperFactory, sessionProvider));
return manager;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
index 72ce1b4..3b70449 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
@@ -22,10 +22,10 @@ package org.apache.james.mailbox.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraRule;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.AbstractMessageIdManagerSideEffectTest;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -60,7 +60,7 @@ public class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdMa
}
@Override
- protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, DelegatingMailboxListener delegatingMailboxListener) throws Exception {
- return CassandraMessageIdManagerTestSystem.createTestingData(cassandra, quotaManager, delegatingMailboxListener);
+ protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, EventBus eventBus) {
+ return CassandraMessageIdManagerTestSystem.createTestingData(cassandra, quotaManager, eventBus);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
index 8133113..0902dce 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
@@ -22,10 +22,12 @@ package org.apache.james.mailbox.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.DockerCassandraRule;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.store.AbstractMessageIdManagerStorageTest;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -60,7 +62,8 @@ public class CassandraMessageIdManagerStorageTest extends AbstractMessageIdManag
}
@Override
- protected MessageIdManagerTestSystem createTestingData() throws Exception {
- return CassandraMessageIdManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), new DefaultDelegatingMailboxListener());
+ protected MessageIdManagerTestSystem createTestingData() {
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ return CassandraMessageIdManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), eventBus);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index d09d540..3cc5809 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -21,34 +21,34 @@ package org.apache.james.mailbox.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
-public class CassandraMessageIdManagerTestSystem {
+class CassandraMessageIdManagerTestSystem {
- public static MessageIdManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, DelegatingMailboxListener delegatingMailboxListener) throws Exception {
+ static MessageIdManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, EventBus eventBus) {
CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
- return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, delegatingMailboxListener),
+ return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, eventBus),
new CassandraMessageId.Factory(),
mapperFactory,
CassandraTestSystemFixture.createMailboxManager(mapperFactory)) {
};
}
- public static MessageIdManagerTestSystem createTestingDataWithQuota(CassandraCluster cassandra, QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager) throws Exception {
+ static MessageIdManagerTestSystem createTestingDataWithQuota(CassandraCluster cassandra, QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager) {
CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
CassandraMailboxManager mailboxManager = CassandraTestSystemFixture.createMailboxManager(mapperFactory);
ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater(
(StoreCurrentQuotaManager) currentQuotaManager,
- mailboxManager.getQuotaComponents().getQuotaRootResolver(), mailboxManager.getDelegationListener(), quotaManager);
+ mailboxManager.getQuotaComponents().getQuotaRootResolver(), mailboxManager.getEventBus(), quotaManager);
mailboxManager.register(listeningCurrentQuotaUpdater);
- return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, mailboxManager.getDelegationListener()),
+ return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, mailboxManager.getEventBus()),
new CassandraMessageId.Factory(),
mapperFactory,
mailboxManager);
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index f8e45bc..b1bef0a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -30,6 +30,9 @@ import org.apache.james.mailbox.cassandra.quota.CassandraGlobalMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerDomainMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
+import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
@@ -41,8 +44,6 @@ import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.event.MailboxAnnotationListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -50,6 +51,7 @@ import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.QuotaComponents;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
+import org.apache.james.metrics.api.NoopMetricFactory;
class CassandraTestSystemFixture {
@@ -62,9 +64,9 @@ class CassandraTestSystemFixture {
messageIdFactory);
}
- static CassandraMailboxManager createMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory) throws Exception {
- DefaultDelegatingMailboxListener delegatingMailboxListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), delegatingMailboxListener);
+ static CassandraMailboxManager createMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory) {
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mapperFactory, storeRightManager);
SessionProvider sessionProvider = new SessionProvider(mock(Authenticator.class), mock(Authorizator.class));
@@ -73,19 +75,19 @@ class CassandraTestSystemFixture {
MessageSearchIndex index = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new DefaultTextExtractor());
CassandraMailboxManager cassandraMailboxManager = new CassandraMailboxManager(mapperFactory, sessionProvider,
new NoMailboxPathLocker(), new MessageParser(), new CassandraMessageId.Factory(),
- delegatingMailboxListener, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
+ eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
- delegatingMailboxListener.addGlobalListener(new MailboxAnnotationListener(mapperFactory, sessionProvider), sessionProvider.createSystemSession("admin"));
+ eventBus.register(new MailboxAnnotationListener(mapperFactory, sessionProvider));
return cassandraMailboxManager;
}
- static StoreMessageIdManager createMessageIdManager(CassandraMailboxSessionMapperFactory mapperFactory, QuotaManager quotaManager, DelegatingMailboxListener delegatingMailboxListener) throws Exception {
+ static StoreMessageIdManager createMessageIdManager(CassandraMailboxSessionMapperFactory mapperFactory, QuotaManager quotaManager, EventBus eventBus) {
CassandraMailboxManager mailboxManager = createMailboxManager(mapperFactory);
return new StoreMessageIdManager(
mailboxManager,
mapperFactory,
- delegatingMailboxListener,
+ eventBus,
new CassandraMessageId.Factory(),
quotaManager,
new DefaultUserQuotaRootResolver(mailboxManager.getSessionProvider(), mapperFactory));
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index 9402a41..d0ff808 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -31,6 +31,8 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFactory;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.store.AbstractMailboxManagerAttachmentTest;
import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
@@ -40,13 +42,13 @@ import org.apache.james.mailbox.store.NoMailboxPathLocker;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
@@ -92,8 +94,8 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
messageIdFactory);
Authenticator noAuthenticator = null;
Authorizator noAuthorizator = null;
- DefaultDelegatingMailboxListener delegatingMailboxListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), delegatingMailboxListener);
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
SessionProvider sessionProvider = new SessionProvider(noAuthenticator, noAuthorizator);
@@ -101,14 +103,14 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
MessageSearchIndex index = new SimpleMessageSearchIndex(mailboxSessionMapperFactory, mailboxSessionMapperFactory, new DefaultTextExtractor());
mailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, sessionProvider, new NoMailboxPathLocker(), new MessageParser(),
- messageIdFactory, delegatingMailboxListener, annotationManager, storeRightManager, quotaComponents,
+ messageIdFactory, eventBus, annotationManager, storeRightManager, quotaComponents,
index, MailboxManagerConfiguration.DEFAULT);
MessageParser failingMessageParser = mock(MessageParser.class);
when(failingMessageParser.retrieveAttachments(any()))
.thenThrow(new RuntimeException("Message parser set to fail"));
parseFailingMailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, sessionProvider,
new NoMailboxPathLocker(), failingMessageParser, messageIdFactory,
- delegatingMailboxListener, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
+ eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
}
@Override
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/pom.xml b/mailbox/elasticsearch/pom.xml
index 8a09696..2c6a030 100644
--- a/mailbox/elasticsearch/pom.xml
+++ b/mailbox/elasticsearch/pom.xml
@@ -54,6 +54,11 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-event-memory</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>apache-james-mailbox-memory</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
index b68f310..4556681 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
@@ -40,6 +40,8 @@ import org.apache.james.mailbox.elasticsearch.json.MessageToElasticSearchJson;
import org.apache.james.mailbox.elasticsearch.query.CriterionConverter;
import org.apache.james.mailbox.elasticsearch.query.QueryConverter;
import org.apache.james.mailbox.elasticsearch.search.ElasticSearchSearcher;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
@@ -55,7 +57,6 @@ import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
import org.apache.james.mailbox.store.search.AbstractMessageSearchIndexTest;
@@ -107,7 +108,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
}
@Override
- protected void initializeMailboxManager() throws Exception {
+ protected void initializeMailboxManager() {
Client client = MailboxIndexCreationUtil.prepareDefaultClient(
new TestingClientProvider(embeddedElasticSearch.getNode()).get(),
ElasticSearchConfiguration.DEFAULT_CONFIGURATION);
@@ -116,9 +117,9 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
fakeAuthenticator.addUser(ManagerTestResources.USER, ManagerTestResources.USER_PASS);
fakeAuthenticator.addUser(ManagerTestResources.OTHER_USER, ManagerTestResources.OTHER_USER_PASS);
InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
- DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(),
- new SimpleGroupMembershipResolver(), delegatingListener);
+ new SimpleGroupMembershipResolver(), eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
@@ -146,7 +147,7 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
new JVMMailboxPathLocker(),
new MessageParser(),
messageIdFactory,
- delegatingListener,
+ eventBus,
annotationManager,
storeRightManager,
quotaComponents,
@@ -155,12 +156,12 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
messageIdManager = new StoreMessageIdManager(
storeMailboxManager,
storeMailboxManager.getMapperFactory(),
- storeMailboxManager.getDelegationListener(),
+ eventBus,
storeMailboxManager.getMessageIdFactory(),
quotaComponents.getQuotaManager(),
quotaComponents.getQuotaRootResolver());
- delegatingListener.addGlobalListener(elasticSearchListeningMessageSearchIndex, MailboxSessionUtil.create("admin"));
+ eventBus.register(elasticSearchListeningMessageSearchIndex);
this.messageSearchIndex = elasticSearchListeningMessageSearchIndex;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/InVMEventBus.java
----------------------------------------------------------------------
diff --git a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/InVMEventBus.java b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/InVMEventBus.java
index aad1be0..8069739 100644
--- a/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/InVMEventBus.java
+++ b/mailbox/event/event-memory/src/main/java/org/apache/james/mailbox/events/InVMEventBus.java
@@ -22,6 +22,8 @@ package org.apache.james.mailbox.events;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import javax.inject.Inject;
+
import org.apache.james.mailbox.Event;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.events.delivery.EventDelivery;
@@ -39,7 +41,8 @@ public class InVMEventBus implements EventBus {
private final ConcurrentHashMap<Group, MailboxListener> groups;
private final EventDelivery eventDelivery;
- InVMEventBus(EventDelivery eventDelivery) {
+ @Inject
+ public InVMEventBus(EventDelivery eventDelivery) {
this.eventDelivery = eventDelivery;
this.registrations = Multimaps.synchronizedSetMultimap(HashMultimap.create());
this.groups = new ConcurrentHashMap<>();
@@ -69,6 +72,10 @@ public class InVMEventBus implements EventBus {
return Mono.empty();
}
+ public Set<Group> registeredGroups() {
+ return groups.keySet();
+ }
+
private Set<MailboxListener> registeredListeners(Set<RegistrationKey> keys) {
return ImmutableSet.<MailboxListener>builder()
.addAll(groups.values())
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/jpa/pom.xml b/mailbox/jpa/pom.xml
index 35a8050..9e8a7bc 100644
--- a/mailbox/jpa/pom.xml
+++ b/mailbox/jpa/pom.xml
@@ -54,6 +54,11 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-event-memory</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>apache-james-mailbox-store</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
index eef45a1..86ae50f 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMailboxManager.java
@@ -22,6 +22,7 @@ import java.util.EnumSet;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.jpa.mail.JPAMailboxMapper;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
@@ -32,7 +33,6 @@ import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
@@ -54,14 +54,14 @@ public abstract class JPAMailboxManager extends StoreMailboxManager {
MailboxPathLocker locker,
MessageParser messageParser,
MessageId.Factory messageIdFactory,
- DelegatingMailboxListener delegatingMailboxListener,
+ EventBus eventBus,
StoreMailboxAnnotationManager annotationManager,
StoreRightManager storeRightManager,
QuotaComponents quotaComponents,
MessageSearchIndex index) {
super(mailboxSessionMapperFactory, sessionProvider, locker,
messageParser, messageIdFactory, annotationManager,
- delegatingMailboxListener, storeRightManager, quotaComponents,
+ eventBus, storeRightManager, quotaComponents,
index, MailboxManagerConfiguration.DEFAULT);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
index e718f95..3af130f 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/JPAMessageManager.java
@@ -26,6 +26,7 @@ import javax.mail.internet.SharedInputStream;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
import org.apache.james.mailbox.jpa.mail.model.openjpa.JPAMailboxMessage;
@@ -37,7 +38,6 @@ import org.apache.james.mailbox.store.BatchSizes;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -51,7 +51,7 @@ public class JPAMessageManager extends StoreMessageManager {
public JPAMessageManager(MailboxSessionMapperFactory mapperFactory,
MessageSearchIndex index,
- DelegatingMailboxListener delegatingMailboxListener,
+ EventBus eventBus,
MailboxPathLocker locker,
Mailbox mailbox,
QuotaManager quotaManager,
@@ -61,7 +61,7 @@ public class JPAMessageManager extends StoreMessageManager {
BatchSizes batchSizes,
StoreRightManager storeRightManager) {
- super(JPAMailboxManager.DEFAULT_NO_MESSAGE_CAPABILITIES, mapperFactory, index, delegatingMailboxListener, locker, mailbox,
+ super(JPAMailboxManager.DEFAULT_NO_MESSAGE_CAPABILITIES, mapperFactory, index, eventBus, locker, mailbox,
quotaManager, quotaRootResolver, messageParser, messageIdFactory, batchSizes, storeRightManager);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
index 4aeb300..e3bb2aa 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMailboxManager.java
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.jpa.openjpa;
import javax.inject.Inject;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.jpa.JPAMailboxManager;
import org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory;
import org.apache.james.mailbox.jpa.openjpa.OpenJPAMessageManager.AdvancedFeature;
@@ -31,7 +32,6 @@ import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
@@ -48,13 +48,13 @@ public class OpenJPAMailboxManager extends JPAMailboxManager {
SessionProvider sessionProvider,
MessageParser messageParser,
MessageId.Factory messageIdFactory,
- DelegatingMailboxListener delegatingMailboxListener,
+ EventBus eventBus,
StoreMailboxAnnotationManager annotationManager,
StoreRightManager storeRightManager,
QuotaComponents quotaComponents,
MessageSearchIndex index) {
super(mapperFactory, sessionProvider, new JVMMailboxPathLocker(), messageParser,
- messageIdFactory, delegatingMailboxListener, annotationManager, storeRightManager,
+ messageIdFactory, eventBus, annotationManager, storeRightManager,
quotaComponents, index);
}
@@ -66,7 +66,7 @@ public class OpenJPAMailboxManager extends JPAMailboxManager {
protected StoreMessageManager createMessageManager(Mailbox mailboxRow, MailboxSession session) {
return new OpenJPAMessageManager(getMapperFactory(),
getMessageSearchIndex(),
- getDelegationListener(),
+ getEventBus(),
getLocker(),
mailboxRow,
getAdvancedFeature(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
index 2e96d5c..a9ba5f3 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/openjpa/OpenJPAMessageManager.java
@@ -26,6 +26,7 @@ import javax.mail.Flags;
import javax.mail.internet.SharedInputStream;
import org.apache.james.mailbox.MailboxPathLocker;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.jpa.JPAMessageManager;
import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
@@ -38,7 +39,6 @@ import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.BatchSizes;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -59,13 +59,13 @@ public class OpenJPAMessageManager extends JPAMessageManager {
}
public OpenJPAMessageManager(MailboxSessionMapperFactory mapperFactory,
- MessageSearchIndex index, DelegatingMailboxListener delegatingMailboxListener,
+ MessageSearchIndex index, EventBus eventBus,
MailboxPathLocker locker, Mailbox mailbox, AdvancedFeature f,
QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser,
MessageId.Factory messageIdFactory, BatchSizes batchSizes,
StoreRightManager storeRightManager) {
- super(mapperFactory, index, delegatingMailboxListener, locker, mailbox, quotaManager, quotaRootResolver,
+ super(mapperFactory, index, eventBus, locker, mailbox, quotaManager, quotaRootResolver,
messageParser, messageIdFactory, batchSizes, storeRightManager);
this.feature = f;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml b/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
index 9e60f9d..0c2876e 100644
--- a/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
+++ b/mailbox/jpa/src/main/resources/META-INF/spring/mailbox-jpa.xml
@@ -37,7 +37,7 @@
<constructor-arg index="1" ref="sessionProvider"/>
<constructor-arg index="2" ref="messageParser"/>
<constructor-arg index="3" ref="messageIdFactory" />
- <constructor-arg index="4" ref="delegating-listener" />
+ <constructor-arg index="4" ref="event-bus" />
<constructor-arg index="5" ref="storeMailboxAnnotationManager" />
<constructor-arg index="6" ref="storeRightManager" />
<constructor-arg index="7" ref="quotaComponents" />
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
index 27f0662..7e216ab 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
@@ -26,6 +26,8 @@ import org.apache.james.mailbox.acl.GroupMembershipResolver;
import org.apache.james.mailbox.acl.MailboxACLResolver;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
import org.apache.james.mailbox.jpa.mail.JPAUidProvider;
import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
@@ -35,13 +37,13 @@ import org.apache.james.mailbox.store.JVMMailboxPathLocker;
import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
+import org.apache.james.metrics.api.NoopMetricFactory;
public class JpaMailboxManagerProvider {
@@ -59,8 +61,9 @@ public class JpaMailboxManagerProvider {
Authenticator noAuthenticator = null;
Authorizator noAuthorizator = null;
- DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, groupMembershipResolver, delegatingListener);
+
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, groupMembershipResolver, eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mf, storeRightManager,
LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
SessionProvider sessionProvider = new SessionProvider(noAuthenticator, noAuthorizator);
@@ -69,7 +72,7 @@ public class JpaMailboxManagerProvider {
return new OpenJPAMailboxManager(mf, sessionProvider,
messageParser, new DefaultMessageId.Factory(),
- delegatingListener, annotationManager,
+ eventBus, annotationManager,
storeRightManager, quotaComponents, index);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/lucene/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/lucene/pom.xml b/mailbox/lucene/pom.xml
index becd7c2..5e802ee 100644
--- a/mailbox/lucene/pom.xml
+++ b/mailbox/lucene/pom.xml
@@ -44,6 +44,11 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-event-memory</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>apache-james-mailbox-memory</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
----------------------------------------------------------------------
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
index 28f80da..9dffa1d 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
@@ -19,9 +19,10 @@
package org.apache.james.mailbox.lucene.search;
-import org.apache.james.mailbox.MailboxSessionUtil;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
@@ -35,10 +36,10 @@ import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMessageIdManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
import org.apache.james.mailbox.store.search.AbstractMessageSearchIndexTest;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.lucene.store.RAMDirectory;
import org.junit.Ignore;
@@ -54,8 +55,8 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest
fakeAuthenticator.addUser(ManagerTestResources.USER, ManagerTestResources.USER_PASS);
fakeAuthenticator.addUser(ManagerTestResources.OTHER_USER, ManagerTestResources.OTHER_USER_PASS);
InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
- DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), delegatingListener);
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
SessionProvider sessionProvider = new SessionProvider(fakeAuthenticator, FakeAuthorizator.defaultReject());
@@ -72,7 +73,7 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest
new JVMMailboxPathLocker(),
new MessageParser(),
messageIdFactory,
- delegatingListener,
+ eventBus,
annotationManager,
storeRightManager,
quotaComponents,
@@ -81,12 +82,12 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest
messageIdManager = new StoreMessageIdManager(
storeMailboxManager,
storeMailboxManager.getMapperFactory(),
- storeMailboxManager.getDelegationListener(),
+ eventBus,
storeMailboxManager.getMessageIdFactory(),
quotaComponents.getQuotaManager(),
quotaComponents.getQuotaRootResolver());
- delegatingListener.addGlobalListener(luceneMessageSearchIndex, MailboxSessionUtil.create("admin"));
+ eventBus.register(luceneMessageSearchIndex);
this.messageSearchIndex = luceneMessageSearchIndex;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/maildir/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/maildir/pom.xml b/mailbox/maildir/pom.xml
index b2a6b61..84d3bba 100644
--- a/mailbox/maildir/pom.xml
+++ b/mailbox/maildir/pom.xml
@@ -44,6 +44,11 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-event-memory</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>apache-james-mailbox-store</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
index 6980f6d..13a40a0 100644
--- a/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
+++ b/mailbox/maildir/src/main/resources/META-INF/spring/mailbox-maildir.xml
@@ -41,7 +41,7 @@
<constructor-arg index="3" ref="messageParser"/>
<constructor-arg index="4" ref="messageIdFactory" />
<constructor-arg index="5" ref="storeMailboxAnnotationManager" />
- <constructor-arg index="6" ref="delegating-listener" />
+ <constructor-arg index="6" ref="event-bus" />
<constructor-arg index="7" ref="storeRightManager" />
<constructor-arg index="8" ref="quotaComponents" />
<constructor-arg index="9" ref="indexer" />
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
index 365967f..5eb0490 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirMailboxManagerProvider.java
@@ -26,6 +26,8 @@ import org.apache.james.mailbox.acl.GroupMembershipResolver;
import org.apache.james.mailbox.acl.MailboxACLResolver;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
@@ -35,13 +37,13 @@ import org.apache.james.mailbox.store.SessionProvider;
import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
import org.apache.james.mailbox.store.search.MessageSearchIndex;
import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.junit.rules.TemporaryFolder;
public class MaildirMailboxManagerProvider {
@@ -56,8 +58,9 @@ public class MaildirMailboxManagerProvider {
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, groupMembershipResolver, delegatingListener);
+
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mf, aclResolver, groupMembershipResolver, eventBus);
Authenticator noAuthenticator = null;
Authorizator noAuthorizator = null;
@@ -68,7 +71,7 @@ public class MaildirMailboxManagerProvider {
MessageSearchIndex index = new SimpleMessageSearchIndex(mf, mf, new DefaultTextExtractor());
StoreMailboxManager manager = new StoreMailboxManager(mf, sessionProvider, new JVMMailboxPathLocker(),
- messageParser, new DefaultMessageId.Factory(), annotationManager, delegatingListener, storeRightManager,
+ messageParser, new DefaultMessageId.Factory(), annotationManager, eventBus, storeRightManager,
quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
return manager;
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
index d83e75e..f6f6387 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxManager.java
@@ -25,6 +25,7 @@ import javax.inject.Inject;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
@@ -33,7 +34,6 @@ import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.QuotaComponents;
@@ -52,13 +52,13 @@ public class InMemoryMailboxManager extends StoreMailboxManager {
@Inject
public InMemoryMailboxManager(MailboxSessionMapperFactory mailboxSessionMapperFactory, SessionProvider sessionProvider,
MailboxPathLocker locker, MessageParser messageParser, MessageId.Factory messageIdFactory,
- DelegatingMailboxListener delegatingMailboxListener,
+ EventBus eventBus,
StoreMailboxAnnotationManager annotationManager,
StoreRightManager storeRightManager,
QuotaComponents quotaComponents,
MessageSearchIndex searchIndex) {
super(mailboxSessionMapperFactory, sessionProvider, locker, messageParser, messageIdFactory,
- annotationManager, delegatingMailboxListener, storeRightManager, quotaComponents, searchIndex, MailboxManagerConfiguration.DEFAULT);
+ annotationManager, eventBus, storeRightManager, quotaComponents, searchIndex, MailboxManagerConfiguration.DEFAULT);
}
@Override
@@ -75,7 +75,7 @@ public class InMemoryMailboxManager extends StoreMailboxManager {
protected StoreMessageManager createMessageManager(Mailbox mailbox, MailboxSession session) {
return new InMemoryMessageManager(getMapperFactory(),
getMessageSearchIndex(),
- getDelegationListener(),
+ getEventBus(),
getLocker(),
mailbox,
getQuotaComponents().getQuotaManager(),
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
index e2ef5cf..c331b6a 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageManager.java
@@ -6,6 +6,7 @@ import javax.mail.Flags;
import org.apache.james.mailbox.MailboxPathLocker;
import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
@@ -15,7 +16,6 @@ import org.apache.james.mailbox.store.BatchSizes;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.StoreMessageManager;
import org.apache.james.mailbox.store.StoreRightManager;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -29,7 +29,7 @@ public class InMemoryMessageManager extends StoreMessageManager {
public InMemoryMessageManager(MailboxSessionMapperFactory mapperFactory,
MessageSearchIndex index,
- DelegatingMailboxListener delegatingMailboxListener,
+ EventBus eventBus,
MailboxPathLocker locker,
Mailbox mailbox,
QuotaManager quotaManager,
@@ -39,7 +39,7 @@ public class InMemoryMessageManager extends StoreMessageManager {
BatchSizes batchSizes,
StoreRightManager storeRightManager) {
- super(InMemoryMailboxManager.MESSAGE_CAPABILITIES, mapperFactory, index, delegatingMailboxListener, locker, mailbox, quotaManager, quotaRootResolver,
+ super(InMemoryMailboxManager.MESSAGE_CAPABILITIES, mapperFactory, index, eventBus, locker, mailbox, quotaManager, quotaRootResolver,
messageParser, messageIdFactory, batchSizes, storeRightManager);
this.mapperFactory = (InMemoryMailboxSessionMapperFactory) mapperFactory;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
index c9b1147..4366588 100644
--- a/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
+++ b/mailbox/memory/src/main/resources/META-INF/spring/mailbox-memory.xml
@@ -37,7 +37,7 @@
<constructor-arg index="2" ref="memory-locker"/>
<constructor-arg index="3" ref="messageParser"/>
<constructor-arg index="4" ref="messageIdFactory" />
- <constructor-arg index="5" ref="delegating-listener" />
+ <constructor-arg index="5" ref="event-bus" />
<constructor-arg index="6" ref="storeMailboxAnnotationManager" />
<constructor-arg index="7" ref="storeRightManager" />
<constructor-arg index="8" ref="quotaComponents" />
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org