Author: btellier
Date: Wed Jun 17 08:56:32 2015
New Revision: 1685951
URL: http://svn.apache.org/r1685951
Log:
MAILBOX-231 Correct message count handling
Modified:
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
Modified:
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java?rev=1685951&r1=1685950&r2=1685951&view=diff
==============================================================================
---
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
(original)
+++
james/mailbox/trunk/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
Wed Jun 17 08:56:32 2015
@@ -419,9 +419,19 @@ public class CassandraMessageMapper impl
throw new MailboxException("Max retries reached when asking an
update of flags on message " + uid + " for mailbox " + mailbox.getMailboxId());
}
}
+ manageUnseenMessageCounts(mailbox, originFlags, updatedFlags);
result.add(new UpdatedFlags(message.getUid(), message.getModSeq(),
originFlags, updatedFlags));
}
+ private void manageUnseenMessageCounts(Mailbox<UUID> mailbox, Flags
oldFlags, Flags newFlags) {
+ if (oldFlags.contains(Flag.SEEN) && !newFlags.contains(Flag.SEEN)) {
+ incrementUnseen(mailbox);
+ }
+ if (!oldFlags.contains(Flag.SEEN) && newFlags.contains(Flag.SEEN)) {
+ decrementUnseen(mailbox);
+ }
+ }
+
private Row findMessageByUid(Mailbox<UUID> mailbox, long uid) {
ResultSet resultSet = session.execute(selectMessage(mailbox, uid));
if ( resultSet.isExhausted() ) {
@@ -446,8 +456,13 @@ public class CassandraMessageMapper impl
@Override
public MessageMetaData copy(Mailbox<UUID> mailbox, Message<UUID> original)
throws MailboxException {
+
original.setUid(uidProvider.nextUid(mailboxSession, mailbox));
original.setModSeq(modSeqProvider.nextModSeq(mailboxSession, mailbox));
+ incrementCount(mailbox);
+ if(!original.isSeen()) {
+ incrementUnseen(mailbox);
+ }
return save(mailbox, original);
}
Modified:
james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java?rev=1685951&r1=1685950&r2=1685951&view=diff
==============================================================================
---
james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
(original)
+++
james/mailbox/trunk/store/src/test/java/org/apache/james/mailbox/store/mail/model/AbstractMessageMapperTest.java
Wed Jun 17 08:56:32 2015
@@ -115,8 +115,6 @@ public abstract class AbstractMessageMap
assertThat(messageMapper.countUnseenMessagesInMailbox(benwaInboxMailbox)).isEqualTo(5);
}
- // We should decrement mailbox unseen count when a message is marked as
read.
- @Ignore
@Test
public void
mailboxUnSeenCountShouldBeDecrementedAfterAMessageIsMarkedSeen() throws
MailboxException {
saveMessages();
@@ -410,8 +408,6 @@ public abstract class AbstractMessageMap
assertThat(messageMapper.getLastUid(benwaInboxMailbox)).isGreaterThan(uid);
}
- // Message count should be modified upon copy
- @Ignore
@Test
public void copyShouldIncrementMessageCount() throws MailboxException,
IOException {
saveMessages();
@@ -419,8 +415,6 @@ public abstract class AbstractMessageMap
assertThat(messageMapper.countMessagesInMailbox(benwaInboxMailbox)).isEqualTo(6);
}
- // Message unseen count should be modified upon copy.
- @Ignore
@Test
public void copyOfUnSeenMessageShouldIncrementUnSeenMessageCount() throws
MailboxException, IOException {
saveMessages();
@@ -436,8 +430,6 @@ public abstract class AbstractMessageMap
assertThat(messageMapper.getHighestModSeq(benwaInboxMailbox)).isGreaterThan(modSeq);
}
- // ModSeq of copied messages is not set
- @Ignore
@Test
public void copyShouldCreateAMessageInDestination() throws
MailboxException, IOException {
saveMessages();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]