You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2021/01/12 11:02:00 UTC
[james-project] 01/20: JAMES-3471 JPA and maildir message mappers
should not register MessageId when handling FlagsUpdated events
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit b0cfc20732f53a85b650225ce6e20dfd903f3563
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Thu Jan 7 10:44:44 2021 +0700
JAMES-3471 JPA and maildir message mappers should not register MessageId when handling FlagsUpdated events
JPA and maildir implementation do not handle MessageId, thus it was a bug that needed to be fixed.
JpaMessageMapperTest has been adapted as well to override tests having messageId in FlagsUpdated objects.
---
.../apache/james/mailbox/model/UpdatedFlags.java | 11 +--
.../james/mailbox/jpa/mail/MessageUtils.java | 1 -
.../mailbox/jpa/mail/JpaMessageMapperTest.java | 80 ++++++++++++++++++++--
.../mailbox/maildir/mail/MaildirMessageMapper.java | 1 -
.../store/mail/model/MessageMapperTest.java | 3 +-
5 files changed, 82 insertions(+), 14 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java
index 0649c58..d36e53f 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java
@@ -274,10 +274,11 @@ public class UpdatedFlags {
@Override
public String toString() {
return MoreObjects.toStringHelper(UpdatedFlags.class)
- .add("uid", uid)
- .add("oldFlags", oldFlags)
- .add("newFlags", newFlags)
- .add("modSeq", modSeq)
- .toString();
+ .add("uid", uid)
+ .add("messageId", messageId)
+ .add("oldFlags", oldFlags)
+ .add("newFlags", newFlags)
+ .add("modSeq", modSeq)
+ .toString();
}
}
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/MessageUtils.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/MessageUtils.java
index 1c097e7..bd5d513 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/MessageUtils.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/MessageUtils.java
@@ -74,7 +74,6 @@ class MessageUtils {
updatedFlags.add(UpdatedFlags.builder()
.uid(member.getUid())
- .messageId(member.getMessageId())
.modSeq(member.getModSeq())
.newFlags(newFlags)
.oldFlags(originalFlags)
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java
index 5fea0fd..1e5db35 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java
@@ -19,13 +19,23 @@
package org.apache.james.mailbox.jpa.mail;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.Optional;
+
+import javax.mail.Flags;
+
import org.apache.james.backends.jpa.JpaTestCluster;
+import org.apache.james.mailbox.FlagsBuilder;
+import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.jpa.JPAMailboxFixture;
+import org.apache.james.mailbox.model.UpdatedFlags;
+import org.apache.james.mailbox.store.FlagsUpdateCalculator;
import org.apache.james.mailbox.store.mail.model.MapperProvider;
import org.apache.james.mailbox.store.mail.model.MessageMapperTest;
import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
class JpaMessageMapperTest extends MessageMapperTest {
@@ -42,33 +52,91 @@ class JpaMessageMapperTest extends MessageMapperTest {
JPA_TEST_CLUSTER.clear(JPAMailboxFixture.MAILBOX_TABLE_NAMES);
}
- @Disabled("JAMES-3471 messageId is not supported by JPA ")
@Test
+ @Override
public void flagsAdditionShouldReturnAnUpdatedFlagHighlightingTheAddition() throws MailboxException {
+ saveMessages();
+ messageMapper.updateFlags(benwaInboxMailbox, message1.getUid(), new FlagsUpdateCalculator(new Flags(Flags.Flag.FLAGGED), MessageManager.FlagsUpdateMode.REPLACE));
+ ModSeq modSeq = messageMapper.getHighestModSeq(benwaInboxMailbox);
+ // JPA does not support MessageId
+ assertThat(messageMapper.updateFlags(benwaInboxMailbox, message1.getUid(), new FlagsUpdateCalculator(new Flags(Flags.Flag.SEEN), MessageManager.FlagsUpdateMode.ADD)))
+ .contains(UpdatedFlags.builder()
+ .uid(message1.getUid())
+ .modSeq(modSeq.next())
+ .oldFlags(new Flags(Flags.Flag.FLAGGED))
+ .newFlags(new FlagsBuilder().add(Flags.Flag.SEEN, Flags.Flag.FLAGGED).build())
+ .build());
}
- @Disabled("")
@Test
+ @Override
public void flagsReplacementShouldReturnAnUpdatedFlagHighlightingTheReplacement() throws MailboxException {
+ saveMessages();
+ ModSeq modSeq = messageMapper.getHighestModSeq(benwaInboxMailbox);
+ Optional<UpdatedFlags> updatedFlags = messageMapper.updateFlags(benwaInboxMailbox, message1.getUid(),
+ new FlagsUpdateCalculator(new Flags(Flags.Flag.FLAGGED), MessageManager.FlagsUpdateMode.REPLACE));
+ // JPA does not support MessageId
+ assertThat(updatedFlags)
+ .contains(UpdatedFlags.builder()
+ .uid(message1.getUid())
+ .modSeq(modSeq.next())
+ .oldFlags(new Flags())
+ .newFlags(new Flags(Flags.Flag.FLAGGED))
+ .build());
}
- @Disabled("")
@Test
+ @Override
public void flagsRemovalShouldReturnAnUpdatedFlagHighlightingTheRemoval() throws MailboxException {
+ saveMessages();
+ messageMapper.updateFlags(benwaInboxMailbox, message1.getUid(), new FlagsUpdateCalculator(new FlagsBuilder().add(Flags.Flag.FLAGGED, Flags.Flag.SEEN).build(), MessageManager.FlagsUpdateMode.REPLACE));
+ ModSeq modSeq = messageMapper.getHighestModSeq(benwaInboxMailbox);
+ // JPA does not support MessageId
+ assertThat(messageMapper.updateFlags(benwaInboxMailbox, message1.getUid(), new FlagsUpdateCalculator(new Flags(Flags.Flag.SEEN), MessageManager.FlagsUpdateMode.REMOVE)))
+ .contains(
+ UpdatedFlags.builder()
+ .uid(message1.getUid())
+ .modSeq(modSeq.next())
+ .oldFlags(new FlagsBuilder().add(Flags.Flag.SEEN, Flags.Flag.FLAGGED).build())
+ .newFlags(new Flags(Flags.Flag.FLAGGED))
+ .build());
}
- @Disabled("")
@Test
+ @Override
public void userFlagsUpdateShouldReturnCorrectUpdatedFlags() throws MailboxException {
+ saveMessages();
+ ModSeq modSeq = messageMapper.getHighestModSeq(benwaInboxMailbox);
+ // JPA does not support MessageId
+ assertThat(messageMapper.updateFlags(benwaInboxMailbox, message1.getUid(), new FlagsUpdateCalculator(new Flags(USER_FLAG), MessageManager.FlagsUpdateMode.ADD)))
+ .contains(
+ UpdatedFlags.builder()
+ .uid(message1.getUid())
+ .modSeq(modSeq.next())
+ .oldFlags(new Flags())
+ .newFlags(new Flags(USER_FLAG))
+ .build());
}
- @Disabled("")
@Test
+ @Override
public void userFlagsUpdateShouldReturnCorrectUpdatedFlagsWhenNoop() throws MailboxException {
+ saveMessages();
+ // JPA does not support MessageId
+ assertThat(
+ messageMapper.updateFlags(benwaInboxMailbox,message1.getUid(),
+ new FlagsUpdateCalculator(new Flags(USER_FLAG), MessageManager.FlagsUpdateMode.REMOVE)))
+ .contains(
+ UpdatedFlags.builder()
+ .uid(message1.getUid())
+ .modSeq(message1.getModSeq())
+ .oldFlags(new Flags())
+ .newFlags(new Flags())
+ .build());
}
}
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
index f8f7894..e670055 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMessageMapper.java
@@ -194,7 +194,6 @@ public class MaildirMessageMapper extends AbstractMessageMapper {
updatedFlags.add(UpdatedFlags.builder()
.uid(member.getUid())
- .messageId(member.getMessageId())
.modSeq(member.getModSeq())
.newFlags(newFlags)
.oldFlags(originalFlags)
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 6f4d93d..b33bd9a 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
@@ -71,11 +71,12 @@ public abstract class MessageMapperTest {
private static final int LIMIT = 10;
private static final int BODY_START = 16;
private static final UidValidity UID_VALIDITY = UidValidity.of(42);
- private static final String USER_FLAG = "userFlag";
private static final String CUSTOMS_USER_FLAGS_VALUE = "CustomsFlags";
private static final Username BENWA = Username.of("benwa");
+ protected static final String USER_FLAG = "userFlag";
+
private MapperProvider mapperProvider;
protected MessageMapper messageMapper;
private MailboxMapper mailboxMapper;
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org