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:27 UTC
[11/27] james-project git commit: JAMES-2641 Drop Delegating mailbox
listener and rather use the EventBus
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 0ea9730..50ffb55 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -39,6 +39,9 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.MessageMoveEvent;
import org.apache.james.mailbox.MessageUid;
+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.exception.MailboxException;
import org.apache.james.mailbox.exception.OverQuotaException;
import org.apache.james.mailbox.fixture.MailboxFixture;
@@ -50,10 +53,9 @@ import org.apache.james.mailbox.model.Quota;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.quota.QuotaManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.util.EventCollector;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.assertj.core.api.AbstractListAssert;
import org.assertj.core.api.ObjectAssert;
import org.junit.Rule;
@@ -72,7 +74,6 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
private static final MessageUid messageUid2 = MessageUid.of(113);
private static final Flags FLAGS = new Flags();
- private static final MailboxSession SESSION = MailboxSessionUtil.create("any");
@Rule
public ExpectedException expectedException = ExpectedException.none();
@@ -85,17 +86,17 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
private QuotaManager quotaManager;
private MessageIdManagerTestSystem testingData;
private EventCollector eventCollector;
- private DefaultDelegatingMailboxListener delegatingMailboxListener;
+ private EventBus eventBus;
- protected abstract MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, DelegatingMailboxListener delegatingMailboxListener) throws Exception;
+ protected abstract MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, EventBus eventBus) throws Exception;
public void setUp() throws Exception {
- delegatingMailboxListener = new DefaultDelegatingMailboxListener();
+ eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
eventCollector = new EventCollector();
quotaManager = mock(QuotaManager.class);
session = MailboxSessionUtil.create(ALICE);
- testingData = createTestSystem(quotaManager, delegatingMailboxListener);
+ testingData = createTestSystem(quotaManager, eventBus);
messageIdManager = testingData.getMessageIdManager();
mailbox1 = testingData.createMailbox(MailboxFixture.INBOX_ALICE, session);
@@ -111,7 +112,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
MessageResult messageResult = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session).get(0);
MessageMetaData simpleMessageMetaData = messageResult.messageMetaData();
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
assertThat(eventCollector.getEvents())
@@ -136,7 +137,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, session).get(0);
MessageMetaData simpleMessageMetaData2 = messageResult2.messageMetaData();
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.delete(ImmutableList.of(messageId1, messageId2), session);
AbstractListAssert<?, List<? extends MailboxListener.Expunged>, MailboxListener.Expunged, ObjectAssert<MailboxListener.Expunged>> events =
@@ -155,7 +156,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -166,7 +167,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -177,7 +178,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
assertThat(eventCollector.getEvents()).hasSize(2);
@@ -192,7 +193,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId(), mailbox3.getMailboxId()), session);
messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
@@ -228,7 +229,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
assertThat(messageResults).hasSize(2);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session);
assertThat(eventCollector.getEvents()).hasSize(3);
@@ -247,7 +248,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
Flags newFlags = new Flags(Flags.Flag.SEEN);
MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, newFlags, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -260,7 +261,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, newFlags, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -272,7 +273,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
Flags newFlags = new Flags(Flags.Flag.SEEN);
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -284,7 +285,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
Flags newFlags = new Flags(Flags.Flag.SEEN);
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -297,7 +298,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
assertThat(eventCollector.getEvents()).hasSize(2).allSatisfy(event -> assertThat(event).isInstanceOf(MailboxListener.FlagsUpdated.class));
@@ -308,7 +309,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
Flags newFlags = new Flags(Flags.Flag.SEEN);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
@@ -337,7 +338,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.createNotUsedMessageId();
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -348,7 +349,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.createNotUsedMessageId();
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.delete(ImmutableList.of(messageId), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -359,7 +360,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.createNotUsedMessageId();
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setFlags(FLAGS, FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
@@ -370,7 +371,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.createNotUsedMessageId();
- delegatingMailboxListener.addGlobalListener(eventCollector, SESSION);
+ eventBus.register(eventCollector);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
assertThat(eventCollector.getEvents()).isEmpty();
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
index 6cc6933..1661de2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
@@ -28,6 +28,7 @@ import javax.mail.util.SharedByteArrayInputStream;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.events.MailboxIdRegistrationKey;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxId;
@@ -82,12 +83,13 @@ public class MessageIdManagerTestSystem {
Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
MailboxMessage message = createMessage(mailboxId, flags, messageId, uid);
mapperFactory.getMessageMapper(mailboxSession).add(mailbox, message);
- mailboxManager.getDelegationListener().event(EventFactory.added()
+ mailboxManager.getEventBus().dispatch(EventFactory.added()
.randomEventId()
.mailboxSession(mailboxSession)
.mailbox(mailbox)
.addMessage(message)
- .build());
+ .build(),
+ new MailboxIdRegistrationKey(mailboxId));
return messageId;
} catch (Exception e) {
throw new RuntimeException(e);
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
index 86d4df3..b5b5ca1 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerTest.java
@@ -29,6 +29,8 @@ import org.apache.james.mailbox.MailboxSessionUtil;
import org.apache.james.mailbox.MessageManager;
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.BadCredentialsException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -42,7 +44,6 @@ import org.apache.james.mailbox.model.MessageId.Factory;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.model.search.PrefixedRegex;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
@@ -50,6 +51,7 @@ 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.Before;
import org.junit.Test;
@@ -79,10 +81,10 @@ public class StoreMailboxManagerTest {
authenticator.addUser(CURRENT_USER, CURRENT_USER_PASSWORD);
authenticator.addUser(ADMIN, ADMIN_PASSWORD);
- DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
StoreRightManager storeRightManager = new StoreRightManager(mockedMapperFactory, new UnionMailboxACLResolver(),
- new SimpleGroupMembershipResolver(), delegatingListener);
+ new SimpleGroupMembershipResolver(), eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mockedMapperFactory, storeRightManager);
SessionProvider sessionProvider = new SessionProvider(authenticator, FakeAuthorizator.forUserAndAdmin(ADMIN, CURRENT_USER));
@@ -91,7 +93,7 @@ public class StoreMailboxManagerTest {
storeMailboxManager = new StoreMailboxManager(mockedMapperFactory, sessionProvider,
new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory,
- annotationManager, delegatingListener, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
+ annotationManager, eventBus, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
}
@Test(expected = MailboxNotFoundException.class)
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
index 5643181..6329e56 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
@@ -36,6 +36,7 @@ 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.EventBus;
import org.apache.james.mailbox.exception.DifferentDomainException;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -46,7 +47,6 @@ import org.apache.james.mailbox.model.MailboxACL.ACLCommand;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.model.Mailbox;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
@@ -69,11 +69,11 @@ public class StoreRightManagerTest {
mockedMailboxMapper = mock(MailboxMapper.class);
mailboxAclResolver = new UnionMailboxACLResolver();
groupMembershipResolver = new SimpleGroupMembershipResolver();
- DelegatingMailboxListener delegatingMailboxListener = mock(DelegatingMailboxListener.class);
+ EventBus eventBus = mock(EventBus.class);
when(mockedMapperFactory.getMailboxMapper(aliceSession))
.thenReturn(mockedMailboxMapper);
- storeRightManager = new StoreRightManager(mockedMapperFactory, mailboxAclResolver, groupMembershipResolver, delegatingMailboxListener);
+ storeRightManager = new StoreRightManager(mockedMapperFactory, mailboxAclResolver, groupMembershipResolver, eventBus);
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
index 27a38b2..b942af1 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
@@ -19,6 +19,8 @@
package org.apache.james.mailbox.store.quota;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anySet;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -34,21 +36,24 @@ import javax.mail.Flags;
import org.apache.james.core.User;
import org.apache.james.core.quota.QuotaCount;
import org.apache.james.core.quota.QuotaSize;
+import org.apache.james.mailbox.Event;
import org.apache.james.mailbox.MailboxListener;
import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
-import org.apache.james.mailbox.store.event.DelegatingMailboxListener;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.junit.Before;
import org.junit.Test;
import com.google.common.collect.Lists;
+import reactor.core.publisher.Mono;
+
public class ListeningCurrentQuotaUpdaterTest {
private static final int SIZE = 45;
@@ -65,8 +70,10 @@ public class ListeningCurrentQuotaUpdaterTest {
public void setUp() throws Exception {
mockedQuotaRootResolver = mock(QuotaRootResolver.class);
mockedCurrentQuotaManager = mock(StoreCurrentQuotaManager.class);
+ EventBus eventBus = mock(EventBus.class);
+ when(eventBus.dispatch(any(Event.class), anySet())).thenReturn(Mono.empty());
testee = new ListeningCurrentQuotaUpdater(mockedCurrentQuotaManager, mockedQuotaRootResolver,
- mock(DelegatingMailboxListener.class), mock(QuotaManager.class));
+ eventBus, mock(QuotaManager.class));
}
@Test
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/pom.xml b/mpt/impl/imap-mailbox/cassandra/pom.xml
index 39b0ebc..27d1dbb 100644
--- a/mpt/impl/imap-mailbox/cassandra/pom.xml
+++ b/mpt/impl/imap-mailbox/cassandra/pom.xml
@@ -53,6 +53,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-mpt-imapmailbox-core</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index 5ce4b21..76ed7ea 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -38,6 +38,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.events.InVMEventBus;
+import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
import org.apache.james.mailbox.store.MailboxManagerConfiguration;
@@ -45,7 +47,6 @@ 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.StoreSubscriptionManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
@@ -54,6 +55,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 org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
import org.apache.james.mpt.api.ImapFeatures.Feature;
@@ -89,8 +91,9 @@ public class CassandraHostSystem extends JamesImapHostSystem {
cassandra.getTypesProvider(),
messageIdFactory);
- DefaultDelegatingMailboxListener delegatingMailboxListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), delegatingMailboxListener);
+
+ 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(authenticator, authorizator);
@@ -102,16 +105,16 @@ public class CassandraHostSystem extends JamesImapHostSystem {
new CassandraGlobalMaxQuotaDao(session));
CassandraCurrentQuotaManager currentQuotaManager = new CassandraCurrentQuotaManager(session);
StoreQuotaManager quotaManager = new StoreQuotaManager(currentQuotaManager, perUserMaxQuotaManager);
- ListeningCurrentQuotaUpdater quotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, delegatingMailboxListener, quotaManager);
+ ListeningCurrentQuotaUpdater quotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, eventBus, quotaManager);
QuotaComponents quotaComponents = new QuotaComponents(perUserMaxQuotaManager, quotaManager, quotaRootResolver, quotaUpdater);
MessageSearchIndex index = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new DefaultTextExtractor());
mailboxManager = new CassandraMailboxManager(mapperFactory, sessionProvider,
new JVMMailboxPathLocker(), new MessageParser(), messageIdFactory,
- delegatingMailboxListener, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
+ eventBus, annotationManager, storeRightManager, quotaComponents, index, MailboxManagerConfiguration.DEFAULT);
- delegatingMailboxListener.addGlobalListener(quotaUpdater, sessionProvider.createSystemSession("admin"));
+ eventBus.register(quotaUpdater);
SubscriptionManager subscriptionManager = new StoreSubscriptionManager(mapperFactory);
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/elasticsearch/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/elasticsearch/pom.xml b/mpt/impl/imap-mailbox/elasticsearch/pom.xml
index c3a8bd5..dc0f12b 100644
--- a/mpt/impl/imap-mailbox/elasticsearch/pom.xml
+++ b/mpt/impl/imap-mailbox/elasticsearch/pom.xml
@@ -56,6 +56,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>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
index f20d56b..c12e44d 100644
--- a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
@@ -38,7 +38,6 @@ import org.apache.james.imap.encode.main.DefaultImapEncoderFactory;
import org.apache.james.imap.main.DefaultImapDecoderFactory;
import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
import org.apache.james.mailbox.MailboxManager;
-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.elasticsearch.IndexAttachments;
@@ -49,6 +48,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.exception.MailboxException;
import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
@@ -60,12 +61,12 @@ 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.StoreSubscriptionManager;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.mailbox.store.quota.QuotaComponents;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
import org.apache.james.mpt.api.ImapFeatures.Feature;
@@ -106,8 +107,8 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
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(authenticator, authorizator);
@@ -135,13 +136,13 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
new JVMMailboxPathLocker(),
new MessageParser(),
messageIdFactory,
- delegatingListener,
+ eventBus,
annotationManager,
storeRightManager,
quotaComponents,
searchIndex);
- delegatingListener.addGlobalListener(searchIndex, MailboxSessionUtil.create("admin"));
+ eventBus.register(searchIndex);
ImapProcessor defaultImapProcessorFactory =
DefaultImapProcessorFactory.createDefaultProcessor(mailboxManager,
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/pom.xml b/mpt/impl/imap-mailbox/jpa/pom.xml
index fdb9b1f..6f28763 100644
--- a/mpt/impl/imap-mailbox/jpa/pom.xml
+++ b/mpt/impl/imap-mailbox/jpa/pom.xml
@@ -39,6 +39,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-jpa</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
index cf3c594..c15466d 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
@@ -35,6 +35,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.JPAMailboxFixture;
import org.apache.james.mailbox.jpa.JPAMailboxSessionMapperFactory;
import org.apache.james.mailbox.jpa.JPASubscriptionManager;
@@ -48,7 +50,6 @@ 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.event.MailboxAnnotationListener;
import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
@@ -59,6 +60,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 org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
import org.apache.james.mpt.api.ImapFeatures.Feature;
@@ -101,23 +103,24 @@ public class JPAHostSystem extends JamesImapHostSystem {
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver, delegatingListener);
+
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mapperFactory, aclResolver, groupMembershipResolver, eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mapperFactory, storeRightManager);
SessionProvider sessionProvider = new SessionProvider(authenticator, authorizator);
DefaultUserQuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(sessionProvider, mapperFactory);
JpaCurrentQuotaManager currentQuotaManager = new JpaCurrentQuotaManager(entityManagerFactory);
maxQuotaManager = new JPAPerUserMaxQuotaManager(new JPAPerUserMaxQuotaDAO(entityManagerFactory));
StoreQuotaManager storeQuotaManager = new StoreQuotaManager(currentQuotaManager, maxQuotaManager);
- ListeningCurrentQuotaUpdater quotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, delegatingListener, storeQuotaManager);
+ ListeningCurrentQuotaUpdater quotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, eventBus, storeQuotaManager);
QuotaComponents quotaComponents = new QuotaComponents(maxQuotaManager, storeQuotaManager, quotaRootResolver, quotaUpdater);
MessageSearchIndex index = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new DefaultTextExtractor());
mailboxManager = new OpenJPAMailboxManager(mapperFactory, sessionProvider, messageParser, new DefaultMessageId.Factory(),
- delegatingListener, annotationManager, storeRightManager, quotaComponents, index);
+ eventBus, annotationManager, storeRightManager, quotaComponents, index);
- delegatingListener.addGlobalListener(quotaUpdater, sessionProvider.createSystemSession("admin"));
- delegatingListener.addGlobalListener(new MailboxAnnotationListener(mapperFactory, sessionProvider), sessionProvider.createSystemSession("admin"));
+ eventBus.register(quotaUpdater);
+ eventBus.register(new MailboxAnnotationListener(mapperFactory, sessionProvider));
SubscriptionManager subscriptionManager = new JPASubscriptionManager(mapperFactory);
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/lucenesearch/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/lucenesearch/pom.xml b/mpt/impl/imap-mailbox/lucenesearch/pom.xml
index 875ca8a..beeaf79 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/pom.xml
+++ b/mpt/impl/imap-mailbox/lucenesearch/pom.xml
@@ -37,6 +37,10 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-event-memory</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>apache-james-mailbox-memory</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
index 8163306..2035304 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
@@ -35,7 +35,8 @@ import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.SubscriptionManager;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
-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.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
@@ -46,11 +47,11 @@ 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.StoreSubscriptionManager;
-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.DefaultUserQuotaRootResolver;
import org.apache.james.mailbox.store.quota.NoQuotaManager;
import org.apache.james.mailbox.store.quota.QuotaComponents;
+import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
import org.apache.james.mpt.api.ImapFeatures.Feature;
@@ -98,10 +99,10 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
private void initFields() {
try {
- DefaultDelegatingMailboxListener delegatingMailboxListener = new DefaultDelegatingMailboxListener();
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
InMemoryMailboxSessionMapperFactory mapperFactory = new InMemoryMailboxSessionMapperFactory();
- StoreRightManager rightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), delegatingMailboxListener);
+ StoreRightManager rightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), eventBus);
JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
SessionProvider sessionProvider = new SessionProvider(authenticator, authorizator);
@@ -113,7 +114,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
locker,
new MessageParser(),
messageIdFactory,
- delegatingMailboxListener,
+ eventBus,
new StoreMailboxAnnotationManager(mapperFactory, rightManager),
rightManager,
QuotaComponents.disabled(sessionProvider, mapperFactory),
@@ -121,7 +122,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
searchIndex.setEnableSuffixMatch(true);
- delegatingMailboxListener.addGlobalListener(searchIndex, sessionProvider.createSystemSession("admin"));
+ eventBus.register(searchIndex);
SubscriptionManager subscriptionManager = new StoreSubscriptionManager(mapperFactory);
@@ -137,7 +138,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
new DefaultImapEncoderFactory().buildImapEncoder(),
defaultImapProcessorFactory);
- } catch (IOException | MailboxException e) {
+ } catch (IOException e) {
throw new RuntimeException(e);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/maildir/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/pom.xml b/mpt/impl/imap-mailbox/maildir/pom.xml
index 41b0584..8f66a55 100644
--- a/mpt/impl/imap-mailbox/maildir/pom.xml
+++ b/mpt/impl/imap-mailbox/maildir/pom.xml
@@ -33,6 +33,11 @@
<dependencies>
<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-maildir</artifactId>
<scope>test</scope>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
index de93a3d..688fe71 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
@@ -33,6 +33,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.maildir.MaildirMailboxSessionMapperFactory;
import org.apache.james.mailbox.maildir.MaildirStore;
import org.apache.james.mailbox.store.JVMMailboxPathLocker;
@@ -42,13 +44,13 @@ 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.StoreSubscriptionManager;
-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.apache.james.metrics.logger.DefaultMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
import org.apache.james.mpt.api.ImapFeatures.Feature;
@@ -56,15 +58,11 @@ import org.apache.james.mpt.host.JamesImapHostSystem;
public class MaildirHostSystem extends JamesImapHostSystem {
- public static final String META_DATA_DIRECTORY = "target/user-meta-data";
+ private static final String META_DATA_DIRECTORY = "target/user-meta-data";
private static final String MAILDIR_HOME = "target/Maildir";
private static final ImapFeatures SUPPORTED_FEATURES = ImapFeatures.of();
private StoreMailboxManager mailboxManager;
-
- public static JamesImapHostSystem build() throws Exception {
- return new MaildirHostSystem();
- }
@Override
public void beforeTest() throws Exception {
@@ -78,15 +76,15 @@ public class MaildirHostSystem extends JamesImapHostSystem {
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
MessageParser messageParser = new MessageParser();
- DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
- StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, aclResolver, groupMembershipResolver, delegatingListener);
+ InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory()));
+ StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, aclResolver, groupMembershipResolver, eventBus);
StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
SessionProvider sessionProvider = new SessionProvider(authenticator, authorizator);
QuotaComponents quotaComponents = QuotaComponents.disabled(sessionProvider, mailboxSessionMapperFactory);
MessageSearchIndex index = new SimpleMessageSearchIndex(mailboxSessionMapperFactory, mailboxSessionMapperFactory, new DefaultTextExtractor());
mailboxManager = new StoreMailboxManager(mailboxSessionMapperFactory, sessionProvider, locker,
- messageParser, new DefaultMessageId.Factory(), annotationManager, delegatingListener, storeRightManager, quotaComponents,
+ messageParser, new DefaultMessageId.Factory(), annotationManager, eventBus, storeRightManager, quotaComponents,
index, MailboxManagerConfiguration.DEFAULT);
ImapProcessor defaultImapProcessorFactory =
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/app/src/test/java/org/apache/james/app/spring/JamesSpringContextTest.java
----------------------------------------------------------------------
diff --git a/server/app/src/test/java/org/apache/james/app/spring/JamesSpringContextTest.java b/server/app/src/test/java/org/apache/james/app/spring/JamesSpringContextTest.java
index f060891..9480061 100644
--- a/server/app/src/test/java/org/apache/james/app/spring/JamesSpringContextTest.java
+++ b/server/app/src/test/java/org/apache/james/app/spring/JamesSpringContextTest.java
@@ -22,8 +22,8 @@ package org.apache.james.app.spring;
import static org.assertj.core.api.Assertions.assertThat;
import org.apache.james.container.spring.context.JamesServerApplicationContext;
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener;
+import org.apache.james.mailbox.events.Group;
+import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.assertj.core.api.Condition;
import org.junit.After;
@@ -31,10 +31,10 @@ import org.junit.Before;
import org.junit.Test;
public class JamesSpringContextTest {
- private static final Condition<MailboxListener> QUOTA_UPDATER_LISTENER = new Condition<MailboxListener>() {
+ private static final Condition<Group> QUOTA_UPDATER_LISTENER = new Condition<Group>() {
@Override
- public boolean matches(MailboxListener mailboxListener) {
- return mailboxListener instanceof ListeningCurrentQuotaUpdater;
+ public boolean matches(Group group) {
+ return ListeningCurrentQuotaUpdater.GROUP.equals(group);
}
};
private static final int ONCE = 1;
@@ -55,9 +55,9 @@ public class JamesSpringContextTest {
@Test
public void springShouldLoadAndAddOnlyOneQuotaUpdaterListener() {
- DefaultDelegatingMailboxListener mailboxListener = context.getBean(DefaultDelegatingMailboxListener.class);
+ InVMEventBus eventBus = context.getBean(InVMEventBus.class);
- assertThat(mailboxListener.getRegistry().getGlobalListeners())
+ assertThat(eventBus.registeredGroups())
.areExactly(ONCE, QUOTA_UPDATER_LISTENER);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
index c9a8f4c..6c95c9c 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraMailboxModule.java
@@ -185,7 +185,7 @@ public class CassandraMailboxModule extends AbstractModule {
Multibinder.newSetBinder(binder(), MailboxManagerDefinition.class).addBinding().to(CassandraMailboxManagerDefinition.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(MailboxAnnotationListener.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
index eaadda6..006d323 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchMailboxModule.java
@@ -74,7 +74,7 @@ public class ElasticSearchMailboxModule extends AbstractModule {
bind(MessageSearchIndex.class).to(ElasticSearchListeningMessageSearchIndex.class);
bind(ListeningMessageSearchIndex.class).to(ElasticSearchListeningMessageSearchIndex.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(ElasticSearchListeningMessageSearchIndex.class);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java
index 78bc752..80f2575 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ElasticSearchQuotaSearcherModule.java
@@ -51,7 +51,7 @@ public class ElasticSearchQuotaSearcherModule extends AbstractModule {
@Override
protected void configure() {
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(ElasticSearchQuotaMailboxListener.class);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
index bbe0590..1ceeb0d 100644
--- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
+++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JPAMailboxModule.java
@@ -106,7 +106,7 @@ public class JPAMailboxModule extends AbstractModule {
Multibinder.newSetBinder(binder(), MailboxManagerDefinition.class).addBinding().to(JPAMailboxManagerDefinition.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(MailboxAnnotationListener.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
index 118adf1..925ea99 100644
--- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
+++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/JpaQuotaModule.java
@@ -55,7 +55,7 @@ public class JpaQuotaModule extends AbstractModule {
bind(ListeningCurrentQuotaUpdater.class).in(Scopes.SINGLETON);
bind(QuotaUpdater.class).to(ListeningCurrentQuotaUpdater.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(ListeningCurrentQuotaUpdater.class);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java
index 79ea234..4b93211 100644
--- a/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java
+++ b/server/container/guice/jpa-guice/src/main/java/org/apache/james/modules/mailbox/LuceneSearchMailboxModule.java
@@ -43,7 +43,7 @@ public class LuceneSearchMailboxModule extends AbstractModule {
bind(MessageSearchIndex.class).to(LuceneMessageSearchIndex.class);
bind(ListeningMessageSearchIndex.class).to(LuceneMessageSearchIndex.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(LuceneMessageSearchIndex.class);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/mailbox/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/pom.xml b/server/container/guice/mailbox/pom.xml
index 51053c1..32b6591 100644
--- a/server/container/guice/mailbox/pom.xml
+++ b/server/container/guice/mailbox/pom.xml
@@ -38,6 +38,10 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-event-memory</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>james-server-guice-configuration</artifactId>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
index 9921b23..3ec0a61 100644
--- a/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
+++ b/server/container/guice/mailbox/src/main/java/org/apache/james/modules/mailbox/DefaultEventModule.java
@@ -26,10 +26,10 @@ import javax.inject.Inject;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.delivery.EventDelivery;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
-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.event.MailboxListenerRegistry;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
@@ -45,8 +45,6 @@ import com.google.inject.multibindings.Multibinder;
public class DefaultEventModule extends AbstractModule {
@Override
protected void configure() {
- bind(DefaultDelegatingMailboxListener.class).in(Scopes.SINGLETON);
- bind(DelegatingMailboxListener.class).to(DefaultDelegatingMailboxListener.class);
Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(ListenerRegistrationPerformer.class);
@@ -57,10 +55,13 @@ public class DefaultEventModule extends AbstractModule {
bind(MailboxListenersLoaderImpl.class).in(Scopes.SINGLETON);
bind(MailboxListenerRegistry.class).in(Scopes.SINGLETON);
bind(MailboxListenersLoader.class).to(MailboxListenersLoaderImpl.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class);
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class);
bind(InVmEventDelivery.class).in(Scopes.SINGLETON);
bind(EventDelivery.class).to(InVmEventDelivery.class);
+
+ bind(InVMEventBus.class).in(Scopes.SINGLETON);
+ bind(EventBus.class).to(InVMEventBus.class);
}
@Singleton
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
index 2432baa..3bb2430 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java
@@ -122,7 +122,7 @@ public class MemoryMailboxModule extends AbstractModule {
.addBinding()
.to(MemoryMailboxManagerDefinition.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(MailboxAnnotationListener.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
index 5bd73fc..9216f78 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryQuotaModule.java
@@ -55,7 +55,7 @@ public class MemoryQuotaModule extends AbstractModule {
bind(ListeningCurrentQuotaUpdater.class).in(Scopes.SINGLETON);
bind(QuotaUpdater.class).to(ListeningCurrentQuotaUpdater.class);
- Multibinder.newSetBinder(binder(), MailboxListener.class)
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class)
.addBinding()
.to(ListeningCurrentQuotaUpdater.class);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/89f168de/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
index c35225b..307f4b5 100644
--- a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
+++ b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java
@@ -102,7 +102,7 @@ public class JMAPModule extends AbstractModule {
bind(MailQueueItemDecoratorFactory.class).to(PostDequeueDecoratorFactory.class).in(Scopes.SINGLETON);
- Multibinder.newSetBinder(binder(), MailboxListener.class).addBinding().to(PropagateLookupRightListener.class);
+ Multibinder.newSetBinder(binder(), MailboxListener.GroupMailboxListener.class).addBinding().to(PropagateLookupRightListener.class);
}
@Provides
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org