You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/01/08 08:00:58 UTC
[39/47] james-project git commit: JAMES-2641 Remove
MailboxEventDispatcher extra methods
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 <bt...@linagora.com>
Authored: Mon Jan 7 11:26:31 2019 +0700
Committer: Benoit Tellier <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org