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 2018/12/14 10:34:18 UTC

[02/18] james-project git commit: MAILBOX-358 Introduce POJO for MailboxEvent implementation in MailboxListener

MAILBOX-358 Introduce POJO for MailboxEvent implementation in MailboxListener


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d01178fd
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d01178fd
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d01178fd

Branch: refs/heads/master
Commit: d01178fddb4f5a737f410131eb50077990cf8ece
Parents: 3b7cf2c
Author: datph <dp...@linagora.com>
Authored: Wed Dec 12 16:23:13 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Dec 14 17:08:46 2018 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/MailboxListener.java   | 67 ++++++++++++++++----
 1 file changed, 54 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d01178fd/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
index 906532e..c4d2521 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
@@ -22,7 +22,9 @@ package org.apache.james.mailbox;
 import java.io.Serializable;
 import java.time.Instant;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
+import java.util.SortedMap;
 
 import org.apache.james.core.User;
 import org.apache.james.core.quota.QuotaCount;
@@ -35,6 +37,9 @@ import org.apache.james.mailbox.model.Quota;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.model.UpdatedFlags;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
 
 /**
  * Listens to <code>Mailbox</code> events.<br>
@@ -240,14 +245,17 @@ public interface MailboxListener {
     /**
      * Indicates that a mailbox has been renamed.
      */
-    abstract class MailboxRenamed extends MailboxEvent {
+    class MailboxRenamed extends MailboxEvent {
         /**
          *
          */
         private static final long serialVersionUID = 1L;
 
-        public MailboxRenamed(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+        private final MailboxPath newPath;
+
+        public MailboxRenamed(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId, MailboxPath newPath) {
             super(sessionId, user, path, mailboxId);
+            this.newPath = newPath;
         }
 
         /**
@@ -255,7 +263,9 @@ public interface MailboxListener {
          *
          * @return name, not null
          */
-        public abstract MailboxPath getNewPath();
+        public MailboxPath getNewPath() {
+            return newPath;
+        }
     }
 
 
@@ -314,55 +324,81 @@ public interface MailboxListener {
 
     }
 
-    abstract class Expunged extends MetaDataHoldingEvent {
+    class Expunged extends MetaDataHoldingEvent {
 
         /**
          *
          */
         private static final long serialVersionUID = 1L;
 
-        public Expunged(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+        private final Map<MessageUid, MessageMetaData> uids;
+
+        public Expunged(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId, Map<MessageUid, MessageMetaData> uids) {
             super(sessionId, user, path, mailboxId);
+            this.uids = uids;
+        }
+
+        @Override
+        public List<MessageUid> getUids() {
+            return ImmutableList.copyOf(uids.keySet());
         }
 
         /**
          * Return the flags which were set for the added message
          *
          * @return flags
+         *
          */
         @Override
-        public abstract MessageMetaData getMetaData(MessageUid uid);
+        public MessageMetaData getMetaData(MessageUid uid) {
+            return uids.get(uid);
+        }
     }
 
     /**
      * A mailbox event related to updated flags
      */
-    abstract class FlagsUpdated extends MessageEvent {
+     class FlagsUpdated extends MessageEvent {
 
         /**
          *
          */
         private static final long serialVersionUID = 1L;
 
-        public FlagsUpdated(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+        private final List<MessageUid> uids;
+        private final List<UpdatedFlags> uFlags;
+
+        public FlagsUpdated(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId, List<MessageUid> uids, List<UpdatedFlags> uFlags) {
             super(sessionId, user, path, mailboxId);
+            this.uids = ImmutableList.copyOf(uids);
+            this.uFlags = ImmutableList.copyOf(uFlags);
         }
 
-        public abstract List<UpdatedFlags> getUpdatedFlags();
+        @Override
+        public List<MessageUid> getUids() {
+            return uids;
+        }
+
+        public List<UpdatedFlags> getUpdatedFlags() {
+            return uFlags;
+        }
     }
 
     /**
      * A mailbox event related to added message
      */
-    abstract class Added extends MetaDataHoldingEvent {
+    class Added extends MetaDataHoldingEvent {
 
         /**
          *
          */
         private static final long serialVersionUID = 1L;
 
-        public Added(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+        private final Map<MessageUid, MessageMetaData> added;
+
+        public Added(MailboxSession.SessionId sessionId, User user, MailboxPath path, MailboxId mailboxId, SortedMap<MessageUid, MessageMetaData> uids) {
             super(sessionId, user, path, mailboxId);
+            this.added = ImmutableMap.copyOf(uids);
         }
 
         /**
@@ -370,9 +406,14 @@ public interface MailboxListener {
          * 
          * @return flags
          */
+        public MessageMetaData getMetaData(MessageUid uid) {
+            return added.get(uid);
+        }
+
         @Override
-        public abstract MessageMetaData getMetaData(MessageUid uid);
-        
+        public List<MessageUid> getUids() {
+            return ImmutableList.copyOf(added.keySet());
+        }
     }
     
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org