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 2020/03/20 04:17:27 UTC

[james-project] 04/10: JAMES-3116 Group reading count & unseen

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 3bfae08134d7257f8c869eae5c4d6944e854f9b4
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Mar 13 21:08:00 2020 +0700

    JAMES-3116 Group reading count & unseen
    
    Also remove countUnseen
---
 .../mailbox/cassandra/mail/CassandraMessageMapper.java   |  5 -----
 .../apache/james/mailbox/jpa/mail/JPAMessageMapper.java  |  1 -
 .../mailbox/jpa/mail/TransactionalMessageMapper.java     |  3 +--
 .../apache/james/mailbox/store/StoreMessageManager.java  | 10 +++-------
 .../james/mailbox/store/mail/AbstractMessageMapper.java  |  1 +
 .../apache/james/mailbox/store/mail/MessageMapper.java   |  6 ------
 .../store/StoreMailboxMessageResultIteratorTest.java     | 15 +++------------
 .../mailbox/store/mail/model/MessageIdMapperTest.java    | 16 ++++++++--------
 .../mailbox/store/mail/model/MessageMapperTest.java      | 16 ++++++++--------
 .../james/mailbox/store/mail/model/MessageMoveTest.java  |  8 ++++----
 10 files changed, 28 insertions(+), 53 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index 6f4b7df..23dbc07 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -117,11 +117,6 @@ public class CassandraMessageMapper implements MessageMapper {
     }
 
     @Override
-    public long countUnseenMessagesInMailbox(Mailbox mailbox) {
-        return getMailboxCounters(mailbox).getUnseen();
-    }
-
-    @Override
     public MailboxCounters getMailboxCounters(Mailbox mailbox) {
         return getMailboxCountersAsMono(mailbox).block();
     }
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
index b1b8f71..996cd6b 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
@@ -138,7 +138,6 @@ public class JPAMessageMapper extends JPATransactionalMapper implements MessageM
         }
     }
 
-    @Override
     public long countUnseenMessagesInMailbox(Mailbox mailbox) throws MailboxException {
         JPAId mailboxId = (JPAId) mailbox.getMailboxId();
         return countUnseenMessagesInMailbox(mailboxId);
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
index 2242197..e932fc8 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
@@ -95,8 +95,7 @@ public class TransactionalMessageMapper implements MessageMapper {
         return messageMapper.countMessagesInMailbox(mailbox);
     }
 
-    @Override
-    public long countUnseenMessagesInMailbox(Mailbox mailbox) throws MailboxException {
+    private long countUnseenMessagesInMailbox(Mailbox mailbox) throws MailboxException {
         return messageMapper.countUnseenMessagesInMailbox(mailbox);
     }
 
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 f97e5f0..f9f7d71 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
@@ -546,8 +546,9 @@ public class StoreMessageManager implements MessageManager {
         MessageUid firstUnseen;
         switch (fetchGroup) {
         case UNSEEN_COUNT:
-            unseenCount = countUnseenMessagesInMailbox(mailboxSession);
-            messageCount = getMessageCount(mailboxSession);
+            MailboxCounters mailboxCounters = getMailboxCounters(mailboxSession);
+            unseenCount = mailboxCounters.getUnseen();
+            messageCount = mailboxCounters.getCount();
             firstUnseen = null;
             recent = recent(resetRecent, mailboxSession);
 
@@ -872,11 +873,6 @@ public class StoreMessageManager implements MessageManager {
         return copiedMessages;
     }
 
-    protected long countUnseenMessagesInMailbox(MailboxSession session) throws MailboxException {
-        MessageMapper messageMapper = mapperFactory.getMessageMapper(session);
-        return messageMapper.countUnseenMessagesInMailbox(getMailboxEntity());
-    }
-
     /**
      * Return the uid of the first unseen message or null of none is found
      */
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
index c4fe7ed..5a993d4 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
@@ -141,6 +141,7 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen
      */
     protected abstract MessageMetaData save(Mailbox mailbox, MailboxMessage message) throws MailboxException;
 
+    protected abstract long countUnseenMessagesInMailbox(Mailbox mailbox) throws MailboxException;
     
     /**
      * Copy the MailboxMessage to the Mailbox, using the given uid and modSeq for the new MailboxMessage
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
index 2d850ea..ff1faf0 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
@@ -68,12 +68,6 @@ public interface MessageMapper extends Mapper {
     long countMessagesInMailbox(Mailbox mailbox)
             throws MailboxException;
 
-    /**
-     * Return the count of unseen messages in the mailbox
-     */
-    long countUnseenMessagesInMailbox(Mailbox mailbox)
-            throws MailboxException;
-
     MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException;
 
     List<MailboxCounters> getMailboxCounters(Collection<Mailbox> mailboxes) throws MailboxException;
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
index f5b1635..25067ca 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
@@ -72,17 +72,13 @@ class StoreMailboxMessageResultIteratorTest {
         }
 
         @Override
-        public <T> T execute(Transaction<T> transaction) throws MailboxException {
+        public <T> T execute(Transaction<T> transaction) {
             throw new UnsupportedOperationException();
         }
 
         @Override
-        public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException {
-            return MailboxCounters.builder()
-                .mailboxId(mailbox.getMailboxId())
-                .count(countMessagesInMailbox(mailbox))
-                .unseen(countUnseenMessagesInMailbox(mailbox))
-                .build();
+        public MailboxCounters getMailboxCounters(Mailbox mailbox) {
+            throw new UnsupportedOperationException();
         }
 
         @Override
@@ -128,11 +124,6 @@ class StoreMailboxMessageResultIteratorTest {
         }
 
         @Override
-        public long countUnseenMessagesInMailbox(Mailbox mailbox) throws MailboxException {
-            throw new UnsupportedOperationException();
-        }
-
-        @Override
         public void delete(Mailbox mailbox, MailboxMessage message) throws MailboxException {
             throw new UnsupportedOperationException();
         }
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 731f35a..9939095 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -737,7 +737,7 @@ public abstract class MessageIdMapperTest {
         message1.setFlags(new Flags(Flag.SEEN));
         sut.save(message1);
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(0);
     }
 
     @Test
@@ -746,7 +746,7 @@ public abstract class MessageIdMapperTest {
         message1.setModSeq(mapperProvider.generateModSeq(benwaInboxMailbox));
         sut.save(message1);
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(1);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(1);
     }
 
     @Test
@@ -768,7 +768,7 @@ public abstract class MessageIdMapperTest {
 
         sut.delete(message1.getMessageId(), ImmutableList.of(benwaInboxMailbox.getMailboxId()));
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(0);
     }
 
     @Test
@@ -784,7 +784,7 @@ public abstract class MessageIdMapperTest {
 
         sut.delete(message1.getMessageId(), ImmutableList.of(benwaInboxMailbox.getMailboxId()));
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(1);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(1);
     }
 
     @Test
@@ -795,7 +795,7 @@ public abstract class MessageIdMapperTest {
 
         sut.setFlags(message1.getMessageId(), ImmutableList.of(message1.getMailboxId()), new Flags(Flag.SEEN), FlagsUpdateMode.ADD);
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(0);
     }
 
     @Test
@@ -807,7 +807,7 @@ public abstract class MessageIdMapperTest {
 
         sut.setFlags(message1.getMessageId(), ImmutableList.of(message1.getMailboxId()), new Flags(Flag.SEEN), FlagsUpdateMode.REMOVE);
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(1);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(1);
     }
 
     @Test
@@ -880,7 +880,7 @@ public abstract class MessageIdMapperTest {
 
         sut.setFlags(message1.getMessageId(), ImmutableList.of(message1.getMailboxId()), new Flags(Flag.ANSWERED), FlagsUpdateMode.REMOVE);
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(1);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(1);
     }
 
     @Test
@@ -944,7 +944,7 @@ public abstract class MessageIdMapperTest {
                 .put(message2.getMessageId(), benwaInboxMailbox.getMailboxId())
                 .build());
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox))
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen())
             .isEqualTo(0);
     }
 
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 44b45b8..11cf811 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -153,13 +153,13 @@ public abstract class MessageMapperTest {
 
     @Test
     void emptyMailboxShouldNotHaveUnseenMessages() throws MailboxException {
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(0);
     }
 
     @Test
     void mailboxContainingMessagesShouldHaveTheGoodUnseenMessageCount() throws MailboxException {
         saveMessages();
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(5);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(5);
     }
 
     @Test
@@ -169,7 +169,7 @@ public abstract class MessageMapperTest {
 
         messageMapper.updateFlags(benwaInboxMailbox, newFlags, message1.getUid().toRange());
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(4);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(4);
     }
 
     @Test
@@ -177,14 +177,14 @@ public abstract class MessageMapperTest {
         saveMessages();
         messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(Flags.Flag.SEEN), FlagsUpdateMode.REPLACE), MessageRange.one(message1.getUid()));
         messageMapper.updateFlags(benwaInboxMailbox, new FlagsUpdateCalculator(new Flags(), FlagsUpdateMode.REPLACE), MessageRange.one(message1.getUid()));
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(5);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(5);
     }
 
     @Test
     void mailboxUnSeenCountShouldBeDecrementedAfterAMessageDelete() throws MailboxException {
         saveMessages();
         messageMapper.delete(benwaInboxMailbox, message1);
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(4);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(4);
     }
 
     @Test
@@ -573,7 +573,7 @@ public abstract class MessageMapperTest {
     void copyOfUnSeenMessageShouldIncrementUnSeenMessageCount() throws MailboxException {
         saveMessages();
         messageMapper.copy(benwaInboxMailbox, SimpleMailboxMessage.copy(benwaInboxMailbox.getMailboxId(), message6));
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(6);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(6);
     }
 
     @Test
@@ -606,10 +606,10 @@ public abstract class MessageMapperTest {
     void copyOfSeenMessageShouldNotIncrementUnSeenMessageCount() throws MailboxException {
         message6.setFlags(new Flags(Flags.Flag.SEEN));
         saveMessages();
-        long expectedUnseenMessages = messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox);
+        long expectedUnseenMessages = messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen();
 
         messageMapper.copy(benwaInboxMailbox, SimpleMailboxMessage.copy(benwaInboxMailbox.getMailboxId(), message6));
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(expectedUnseenMessages);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(expectedUnseenMessages);
     }
 
     @Test
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
index 4542f2f..d640246 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
@@ -118,8 +118,8 @@ public abstract class MessageMoveTest {
 
         messageMapper.move(benwaWorkMailbox, message1);
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaWorkMailbox)).isEqualTo(1);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(0);
+        assertThat(messageMapper.getMailboxCounters(benwaWorkMailbox).getUnseen()).isEqualTo(1);
     }
 
     @Test
@@ -130,8 +130,8 @@ public abstract class MessageMoveTest {
 
         messageMapper.move(benwaWorkMailbox, message1);
 
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);
-        assertThat(messageMapper.countUnseenMessagesInMailbox(benwaWorkMailbox)).isEqualTo(0);
+        assertThat(messageMapper.getMailboxCounters(benwaInboxMailbox).getUnseen()).isEqualTo(0);
+        assertThat(messageMapper.getMailboxCounters(benwaWorkMailbox).getUnseen()).isEqualTo(0);
     }
 
     private Mailbox createMailbox(MailboxPath mailboxPath) throws MailboxException {


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