JAMES-2641 Remove MailboxEventDispatcher extra methods Callers should use directly the builders and call the `event` method
This transform the MailboxEventDispatcher into a useless wrapper around the delegatingMailboxListener that is now easier to remove. Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/185810d0 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/185810d0 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/185810d0 Branch: refs/heads/master Commit: 185810d05bdea16ada99d4e5f5f94b18c546b87c Parents: b4d9035 Author: Benoit Tellier <btell...@linagora.com> Authored: Mon Jan 7 11:26:31 2019 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Tue Jan 8 14:46:02 2019 +0700 ---------------------------------------------------------------------- .../mailbox/store/StoreMailboxManager.java | 28 +++- .../mailbox/store/StoreMessageIdManager.java | 35 ++++- .../mailbox/store/StoreMessageManager.java | 80 +++++++--- .../james/mailbox/store/StoreRightManager.java | 13 +- .../james/mailbox/store/event/EventFactory.java | 17 +- .../store/event/MailboxEventDispatcher.java | 157 +------------------ .../quota/ListeningCurrentQuotaUpdater.java | 28 ++-- .../store/MessageIdManagerTestSystem.java | 7 +- 8 files changed, 156 insertions(+), 209 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java index f86b20b..c281068 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java @@ -69,6 +69,7 @@ import org.apache.james.mailbox.model.search.MailboxQuery; 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.event.EventFactory; import org.apache.james.mailbox.store.event.MailboxAnnotationListener; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.extractor.DefaultTextExtractor; @@ -524,7 +525,10 @@ public class StoreMailboxManager implements MailboxManager { try { mapper.execute(Mapper.toTransaction(() -> mailboxIds.add(mapper.save(m)))); // notify listeners - dispatcher.mailboxAdded(mailboxSession, m); + dispatcher.event(EventFactory.mailboxAdded() + .mailboxSession(mailboxSession) + .mailbox(m) + .build()); } catch (MailboxExistsException e) { LOGGER.info("{} mailbox was created concurrently", m.generateAssociatedPath()); } @@ -568,7 +572,13 @@ public class StoreMailboxManager implements MailboxManager { // mailbox once we remove it SimpleMailbox m = new SimpleMailbox(mailbox); mailboxMapper.delete(mailbox); - dispatcher.mailboxDeleted(session, mailbox, quotaRoot, QuotaCount.count(messageCount), QuotaSize.size(totalSize)); + dispatcher.event(EventFactory.mailboxDeleted() + .mailboxSession(session) + .mailbox(mailbox) + .quotaRoot(quotaRoot) + .quotaCount(QuotaCount.count(messageCount)) + .quotaSize(QuotaSize.size(totalSize)) + .build()); return m; }); @@ -607,7 +617,12 @@ public class StoreMailboxManager implements MailboxManager { mailbox.setName(to.getName()); mapper.save(mailbox); - dispatcher.mailboxRenamed(session, from, mailbox); + dispatcher.event(EventFactory.mailboxRenamed() + .mailboxSession(session) + .mailboxId(mailbox.getMailboxId()) + .oldPath(from) + .newPath(to) + .build()); // rename submailboxes MailboxPath children = new MailboxPath(from.getNamespace(), from.getUser(), from.getName() + getDelimiter() + "%"); @@ -619,7 +634,12 @@ public class StoreMailboxManager implements MailboxManager { MailboxPath fromPath = new MailboxPath(children, subOriginalName); sub.setName(subNewName); mapper.save(sub); - dispatcher.mailboxRenamed(session, fromPath, sub); + dispatcher.event(EventFactory.mailboxRenamed() + .mailboxSession(session) + .mailboxId(sub.getMailboxId()) + .oldPath(fromPath) + .newPath(sub.generateAssociatedPath()) + .build()); LOGGER.debug("Rename mailbox sub-mailbox {} to {}", subOriginalName, subNewName); } http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java index ff93e53..8554380 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java @@ -51,6 +51,7 @@ 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.quota.QuotaRootResolver; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MessageIdMapper; @@ -217,8 +218,11 @@ public class StoreMessageIdManager implements MessageIdManager { MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession); for (MetadataWithMailboxId metadataWithMailboxId : metadataWithMailbox) { - dispatcher.expunged(mailboxSession, metadataWithMailboxId.messageMetaData, - mailboxMapper.findMailboxById(metadataWithMailboxId.mailboxId)); + dispatcher.event(EventFactory.expunged() + .mailboxSession(mailboxSession) + .mailbox(mailboxMapper.findMailboxById(metadataWithMailboxId.mailboxId)) + .addMetaData(metadataWithMailboxId.messageMetaData) + .build()); } } @@ -280,7 +284,12 @@ public class StoreMessageIdManager implements MessageIdManager { addMessageToMailboxes(mailboxMessage, messageMoves.addedMailboxIds(), mailboxSession); removeMessageFromMailboxes(mailboxMessage, messageMoves.removedMailboxIds(), mailboxSession); - dispatcher.moved(mailboxSession, messageMoves, ImmutableList.of(mailboxMessage.getMessageId())); + + dispatcher.event(EventFactory.moved() + .session(mailboxSession) + .messageMoves(messageMoves) + .messageId(mailboxMessage.getMessageId()) + .build()); } private void removeMessageFromMailboxes(MailboxMessage message, Set<MailboxId> mailboxesToRemove, MailboxSession mailboxSession) throws MailboxException { @@ -290,7 +299,11 @@ public class StoreMessageIdManager implements MessageIdManager { for (MailboxId mailboxId: mailboxesToRemove) { messageIdMapper.delete(message.getMessageId(), mailboxesToRemove); - dispatcher.expunged(mailboxSession, eventPayload, mailboxMapper.findMailboxById(mailboxId)); + dispatcher.event(EventFactory.expunged() + .mailboxSession(mailboxSession) + .mailbox(mailboxMapper.findMailboxById(mailboxId)) + .addMetaData(eventPayload) + .build()); } } @@ -301,7 +314,12 @@ public class StoreMessageIdManager implements MessageIdManager { private void dispatchFlagsChange(MailboxSession mailboxSession, MailboxId mailboxId, UpdatedFlags updatedFlags) throws MailboxException { if (updatedFlags.flagsChanged()) { Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId); - dispatcher.flagsUpdated(mailboxSession, mailbox, updatedFlags); + + dispatcher.event(EventFactory.flagsUpdated() + .mailboxSession(mailboxSession) + .mailbox(mailbox) + .updatedFlag(updatedFlags) + .build()); } } @@ -362,7 +380,12 @@ public class StoreMessageIdManager implements MessageIdManager { .build()) .build(); save(mailboxSession, messageIdMapper, copy); - dispatcher.added(mailboxSession, mailboxMapper.findMailboxById(mailboxId), copy); + + dispatcher.event(EventFactory.added() + .mailboxSession(mailboxSession) + .mailbox(mailboxMapper.findMailboxById(mailboxId)) + .addMessage(copy) + .build()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index 36cb3e8..6ec668d 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -65,6 +65,7 @@ import org.apache.james.mailbox.model.SearchQuery; import org.apache.james.mailbox.model.UpdatedFlags; import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.MessageMapper; import org.apache.james.mailbox.store.mail.MessageMapper.FetchType; @@ -86,10 +87,13 @@ import org.apache.james.mime4j.stream.MimeTokenStream; import org.apache.james.mime4j.stream.RecursionMode; import org.apache.james.util.BodyOffsetInputStream; import org.apache.james.util.IteratorWrapper; +import org.apache.james.util.streams.Iterators; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSortedMap; /** * Base class for {@link org.apache.james.mailbox.MessageManager} @@ -272,7 +276,11 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } Map<MessageUid, MessageMetaData> uids = deleteMarkedInMailbox(set, mailboxSession); - dispatcher.expunged(mailboxSession, uids, getMailboxEntity()); + dispatcher.event(EventFactory.expunged() + .mailboxSession(mailboxSession) + .mailbox(getMailboxEntity()) + .metaData(ImmutableSortedMap.copyOf(uids)) + .build()); return uids.keySet().iterator(); } @@ -414,7 +422,11 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana Mailbox mailbox = getMailboxEntity(); MailboxMessage copy = copyMessage(message); - dispatcher.added(mailboxSession, mailbox, copy); + dispatcher.event(EventFactory.added() + .mailboxSession(mailboxSession) + .mailbox(mailbox) + .addMessage(copy) + .build()); return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid()); }, true); } @@ -563,25 +575,23 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana if (!isWriteable(mailboxSession)) { throw new ReadOnlyException(getMailboxPath(), mailboxSession.getPathDelimiter()); } - final SortedMap<MessageUid, Flags> newFlagsByUid = new TreeMap<>(); trimFlags(flags, mailboxSession); - final MessageMapper messageMapper = mapperFactory.getMessageMapper(mailboxSession); + MessageMapper messageMapper = mapperFactory.getMessageMapper(mailboxSession); Iterator<UpdatedFlags> it = messageMapper.execute(() -> messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(flags, flagsUpdateMode), set)); + List<UpdatedFlags> updatedFlags = Iterators.toStream(it).collect(Guavate.toImmutableList()); - final SortedMap<MessageUid, UpdatedFlags> uFlags = new TreeMap<>(); - - while (it.hasNext()) { - UpdatedFlags flag = it.next(); - newFlagsByUid.put(flag.getUid(), flag.getNewFlags()); - uFlags.put(flag.getUid(), flag); - } - - dispatcher.flagsUpdated(mailboxSession, getMailboxEntity(), new ArrayList<>(uFlags.values())); + dispatcher.event(EventFactory.flagsUpdated() + .mailboxSession(mailboxSession) + .mailbox(getMailboxEntity()) + .updatedFlags(updatedFlags) + .build()); - return newFlagsByUid; + return updatedFlags.stream().collect(Guavate.toImmutableMap( + UpdatedFlags::getUid, + UpdatedFlags::getNewFlags)); } /** @@ -735,13 +745,21 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana for (MailboxMessage message : originalRows.getEntriesSeen()) { messageIds.add(message.getMessageId()); } - dispatcher.added(session, copiedUids, to.getMailboxEntity()); - dispatcher.moved(session, - MessageMoves.builder() + + dispatcher.event(EventFactory.added() + .mailboxSession(session) + .mailbox(to.getMailboxEntity()) + .metaData(copiedUids) + .build()); + dispatcher.event(EventFactory.moved() + .session(session) + .messageMoves(MessageMoves.builder() .previousMailboxIds(getMailboxEntity().getMailboxId()) .targetMailboxIds(to.getMailboxEntity().getMailboxId(), getMailboxEntity().getMailboxId()) - .build(), - messageIds.build()); + .build()) + .messageId(messageIds.build()) + .build()); + return copiedUids; } @@ -755,14 +773,26 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana for (MailboxMessage message : originalRows.getEntriesSeen()) { messageIds.add(message.getMessageId()); } - dispatcher.added(session, moveUids, to.getMailboxEntity()); - dispatcher.expunged(session, collectMetadata(moveResult.getOriginalMessages()), getMailboxEntity()); - dispatcher.moved(session, - MessageMoves.builder() + + dispatcher.event(EventFactory.added() + .mailboxSession(session) + .mailbox(to.getMailboxEntity()) + .metaData(moveUids) + .build()); + dispatcher.event(EventFactory.expunged() + .mailboxSession(session) + .mailbox(getMailboxEntity()) + .addMetaData(moveResult.getOriginalMessages()) + .build()); + dispatcher.event(EventFactory.moved() + .messageMoves(MessageMoves.builder() .previousMailboxIds(getMailboxEntity().getMailboxId()) .targetMailboxIds(to.getMailboxEntity().getMailboxId()) - .build(), - messageIds.build()); + .build()) + .messageId(messageIds.build()) + .session(session) + .build()); + return moveUids; } http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java index b97793f..df0924c 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreRightManager.java @@ -43,6 +43,7 @@ import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights; import org.apache.james.mailbox.model.MailboxACL.Right; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.model.Mailbox; @@ -138,7 +139,11 @@ public class StoreRightManager implements RightManager { Mailbox mailbox = mapper.findMailboxByPath(mailboxPath); ACLDiff aclDiff = mapper.updateACL(mailbox, mailboxACLCommand); - dispatcher.aclUpdated(session, mailboxPath, aclDiff, mailbox.getMailboxId()); + dispatcher.event(EventFactory.aclUpdated() + .mailboxSession(session) + .mailbox(mailbox) + .aclDiff(aclDiff) + .build()); } private void assertSharesBelongsToUserDomain(String user, ACLCommand mailboxACLCommand) throws DifferentDomainException { @@ -216,7 +221,11 @@ public class StoreRightManager implements RightManager { private void setRights(MailboxACL mailboxACL, MailboxMapper mapper, Mailbox mailbox, MailboxSession session) throws MailboxException { ACLDiff aclDiff = mapper.setACL(mailbox, mailboxACL); - dispatcher.aclUpdated(session, mailbox.generateAssociatedPath(), aclDiff, mailbox.getMailboxId()); + dispatcher.event(EventFactory.aclUpdated() + .mailboxSession(session) + .mailbox(mailbox) + .aclDiff(aclDiff) + .build()); } /** http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java index e4a96e8..6dd75a9 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java @@ -20,6 +20,9 @@ package org.apache.james.mailbox.store.event; import java.time.Instant; +import java.util.Iterator; +import java.util.Map; +import java.util.SortedMap; import org.apache.james.core.User; import org.apache.james.core.quota.QuotaCount; @@ -92,7 +95,7 @@ public class EventFactory { @FunctionalInterface public interface RequireMetadata<T> { - T metaData(ImmutableSortedMap<MessageUid, MessageMetaData> metaData); + T metaData(SortedMap<MessageUid, MessageMetaData> metaData); default T addMetaData(MessageMetaData metaData) { return metaData(ImmutableSortedMap.of(metaData.getUid(), metaData)); @@ -108,6 +111,10 @@ public class EventFactory { .collect(Guavate.toImmutableSortedMap(MessageMetaData::getUid))); } + default T addMetaData(Iterator<MessageMetaData> metaData) { + return addMetaData(ImmutableList.copyOf(metaData)); + } + default T addMessages(Iterable<MailboxMessage> messages) { return metaData(ImmutableList.copyOf(messages) .stream() @@ -197,12 +204,12 @@ public class EventFactory { private final MailboxSession.SessionId sessionId; private final ImmutableSortedMap<MessageUid, MessageMetaData> metaData; - AddedFinalStage(MailboxPath path, MailboxId mailboxId, User user, MailboxSession.SessionId sessionId, ImmutableSortedMap<MessageUid, MessageMetaData> metaData) { + AddedFinalStage(MailboxPath path, MailboxId mailboxId, User user, MailboxSession.SessionId sessionId, Map<MessageUid, MessageMetaData> metaData) { this.path = path; this.mailboxId = mailboxId; this.user = user; this.sessionId = sessionId; - this.metaData = metaData; + this.metaData = ImmutableSortedMap.copyOf(metaData); } public MailboxListener.Added build() { @@ -223,12 +230,12 @@ public class EventFactory { private final MailboxSession.SessionId sessionId; private final ImmutableSortedMap<MessageUid, MessageMetaData> metaData; - ExpungedFinalStage(MailboxPath path, MailboxId mailboxId, User user, MailboxSession.SessionId sessionId, ImmutableSortedMap<MessageUid, MessageMetaData> metaData) { + ExpungedFinalStage(MailboxPath path, MailboxId mailboxId, User user, MailboxSession.SessionId sessionId, Map<MessageUid, MessageMetaData> metaData) { this.path = path; this.mailboxId = mailboxId; this.user = user; this.sessionId = sessionId; - this.metaData = metaData; + this.metaData = ImmutableSortedMap.copyOf(metaData); } public MailboxListener.Expunged build() { http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java index c82bb13..d3d02ea 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java @@ -19,36 +19,10 @@ package org.apache.james.mailbox.store.event; -import java.time.Instant; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.SortedMap; - import javax.inject.Inject; -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.MailboxSession; -import org.apache.james.mailbox.MessageUid; -import org.apache.james.mailbox.acl.ACLDiff; -import org.apache.james.mailbox.model.MailboxId; -import org.apache.james.mailbox.model.MailboxPath; -import org.apache.james.mailbox.model.MessageId; -import org.apache.james.mailbox.model.MessageMetaData; -import org.apache.james.mailbox.model.MessageMoves; -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.store.mail.model.Mailbox; -import org.apache.james.mailbox.store.mail.model.MailboxMessage; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSortedMap; /** * Helper class to dispatch {@link org.apache.james.mailbox.Event}'s to registerend MailboxListener @@ -60,136 +34,7 @@ public class MailboxEventDispatcher { public MailboxEventDispatcher(DelegatingMailboxListener delegatingMailboxListener) { this.listener = delegatingMailboxListener; } - - /** - * Should get called when a new message was added to a Mailbox. All - * registered MailboxListener will get triggered then - * - * @param session The mailbox session - * @param uids Sorted map with uids and message meta data - * @param mailbox The mailbox - */ - public void added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) { - event(EventFactory.added() - .mailboxSession(session) - .mailbox(mailbox) - .addMetaData(uids.values()) - .build()); - } - - public void added(MailboxSession session, Mailbox mailbox, MailboxMessage mailboxMessage) { - MessageMetaData messageMetaData = mailboxMessage.metaData(); - SortedMap<MessageUid, MessageMetaData> metaDataMap = ImmutableSortedMap.<MessageUid, MessageMetaData>naturalOrder() - .put(messageMetaData.getUid(), messageMetaData) - .build(); - added(session, metaDataMap, mailbox); - } - - public void added(MailboxSession session, MessageMetaData messageMetaData, Mailbox mailbox) { - SortedMap<MessageUid, MessageMetaData> metaDataMap = ImmutableSortedMap.<MessageUid, MessageMetaData>naturalOrder() - .put(messageMetaData.getUid(), messageMetaData) - .build(); - added(session, metaDataMap, mailbox); - } - - /** - * Should get called when a message was expunged from a Mailbox. All - * registered MailboxListener will get triggered then - * - * @param session The mailbox session - * @param uids Sorted map with uids and message meta data - * @param mailbox The mailbox - */ - public void expunged(MailboxSession session, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) { - event(EventFactory.expunged() - .mailboxSession(session) - .mailbox(mailbox) - .addMetaData(uids.values()) - .build()); - } - - public void expunged(MailboxSession session, MessageMetaData messageMetaData, Mailbox mailbox) { - Map<MessageUid, MessageMetaData> metaDataMap = ImmutableMap.<MessageUid, MessageMetaData>builder() - .put(messageMetaData.getUid(), messageMetaData) - .build(); - expunged(session, metaDataMap, mailbox); - } - - /** - * Should get called when the message flags were update in a Mailbox. All - * registered MailboxListener will get triggered then - */ - public void flagsUpdated(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> uflags) { - event(EventFactory.flagsUpdated() - .mailboxSession(session) - .mailbox(mailbox) - .updatedFlags(uflags) - .build()); - } - - public void flagsUpdated(MailboxSession session, Mailbox mailbox, UpdatedFlags uflags) { - flagsUpdated(session, mailbox, ImmutableList.of(uflags)); - } - - /** - * Should get called when a Mailbox was renamed. All registered - * MailboxListener will get triggered then - */ - public void mailboxRenamed(MailboxSession session, MailboxPath from, Mailbox to) { - event(EventFactory.mailboxRenamed() - .mailboxSession(session) - .mailboxId(to.getMailboxId()) - .oldPath(from) - .newPath(to.generateAssociatedPath()) - .build()); - } - - /** - * Should get called when a Mailbox was deleted. All registered - * MailboxListener will get triggered then - */ - public void mailboxDeleted(MailboxSession session, Mailbox mailbox, QuotaRoot quotaRoot, QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) { - event(EventFactory.mailboxDeleted() - .mailboxSession(session) - .mailbox(mailbox) - .quotaRoot(quotaRoot) - .quotaCount(deletedMessageCount) - .quotaSize(totalDeletedSize) - .build()); - } - - /** - * Should get called when a Mailbox was added. All registered - * MailboxListener will get triggered then - */ - public void mailboxAdded(MailboxSession session, Mailbox mailbox) { - event(EventFactory.mailboxAdded() - .mailboxSession(session) - .mailbox(mailbox) - .build()); - } - - public void aclUpdated(MailboxSession session, MailboxPath mailboxPath, ACLDiff aclDiff, MailboxId mailboxId) { - event(EventFactory.aclUpdated() - .mailboxSession(session) - .mailboxId(mailboxId) - .mailboxPath(mailboxPath) - .aclDiff(aclDiff) - .build()); - } - - public void moved(MailboxSession session, MessageMoves messageMoves, Collection<MessageId> messageIds) { - event(EventFactory.moved() - .session(session) - .messageMoves(messageMoves) - .messageId(messageIds) - .build()); - } - - public void quota(User user, QuotaRoot quotaRoot, Quota<QuotaCount> countQuota, Quota<QuotaSize> sizeQuota) { - event(new MailboxListener.QuotaUsageUpdatedEvent(user, quotaRoot, countQuota, sizeQuota, Instant.now())); - } - + public void event(Event event) { listener.event(event); } http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java index a3519b8..baa33fe 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.mailbox.store.quota; +import java.time.Instant; import java.util.Collection; import javax.inject.Inject; @@ -29,6 +30,7 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -87,11 +89,14 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdat if (addedCount != 0 && addedSize != 0) { currentQuotaManager.decrease(quotaRoot, addedCount, addedSize); } - dispatcher.quota( - expunged.getUser(), - quotaRoot, - quotaManager.getMessageQuota(quotaRoot), - quotaManager.getStorageQuota(quotaRoot)); + dispatcher.event( + EventFactory.quotaUpdated() + .user(expunged.getUser()) + .quotaRoot(quotaRoot) + .quotaCount(quotaManager.getMessageQuota(quotaRoot)) + .quotaSize(quotaManager.getStorageQuota(quotaRoot)) + .instant(Instant.now()) + .build()); } private void handleAddedEvent(Added added, QuotaRoot quotaRoot) throws MailboxException { @@ -105,11 +110,14 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdat if (addedCount != 0 && addedSize != 0) { currentQuotaManager.increase(quotaRoot, addedCount, addedSize); } - dispatcher.quota( - added.getUser(), - quotaRoot, - quotaManager.getMessageQuota(quotaRoot), - quotaManager.getStorageQuota(quotaRoot)); + dispatcher.event( + EventFactory.quotaUpdated() + .user(added.getUser()) + .quotaRoot(quotaRoot) + .quotaCount(quotaManager.getMessageQuota(quotaRoot)) + .quotaSize(quotaManager.getStorageQuota(quotaRoot)) + .instant(Instant.now()) + .build()); } private void handleMailboxDeletionEvent(MailboxDeletion mailboxDeletionEvent) throws MailboxException { http://git-wip-us.apache.org/repos/asf/james-project/blob/185810d0/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 f195e92..0e549fe 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 @@ -33,6 +33,7 @@ import org.apache.james.mailbox.model.MailboxACL; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; @@ -81,7 +82,11 @@ public class MessageIdManagerTestSystem { Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId); MailboxMessage message = createMessage(mailboxId, flags, messageId, uid); mapperFactory.getMessageMapper(mailboxSession).add(mailbox, message); - mailboxManager.getEventDispatcher().added(mailboxSession, message.metaData(), mailbox); + mailboxManager.getEventDispatcher().event(EventFactory.added() + .mailboxSession(mailboxSession) + .mailbox(mailbox) + .addMessage(message) + .build()); return messageId; } catch (Exception e) { throw new RuntimeException(e); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org