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