JAMES-2286 Fix Per-user header storage issue with FileMailRepository
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/dc2a14e0 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/dc2a14e0 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/dc2a14e0 Branch: refs/heads/master Commit: dc2a14e022f7e01accde5459d22bff034ebec4c6 Parents: bd89ec2 Author: benwa <[email protected]> Authored: Mon Jan 15 11:34:48 2018 +0700 Committer: Matthieu Baechler <[email protected]> Committed: Tue Jan 16 16:34:47 2018 +0100 ---------------------------------------------------------------------- .../org/apache/mailet/PerRecipientHeaders.java | 5 +++-- .../org/apache/james/server/core/MailImpl.java | 2 ++ .../mailrepository/FileMailRepositoryTest.java | 22 -------------------- 3 files changed, 5 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/dc2a14e0/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java ---------------------------------------------------------------------- diff --git a/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java b/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java index 0b7bcdb..8be1edd 100644 --- a/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java +++ b/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java @@ -19,6 +19,7 @@ package org.apache.mailet; +import java.io.Serializable; import java.util.Collection; import org.apache.james.core.MailAddress; @@ -31,7 +32,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; -public class PerRecipientHeaders { +public class PerRecipientHeaders implements Serializable { private Multimap<MailAddress, Header> headersByRecipient; public PerRecipientHeaders() { @@ -57,7 +58,7 @@ public class PerRecipientHeaders { headersByRecipient.put(recipient, header); } - public static class Header { + public static class Header implements Serializable { private final String name; private final String value; http://git-wip-us.apache.org/repos/asf/james-project/blob/dc2a14e0/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java ---------------------------------------------------------------------- diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java index af9020a..c586643 100644 --- a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java +++ b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java @@ -493,6 +493,7 @@ public class MailImpl implements Disposable, Mail { throw ode; } } + perRecipientSpecificHeaders = (PerRecipientHeaders) in.readObject(); } /** @@ -511,6 +512,7 @@ public class MailImpl implements Disposable, Mail { out.writeObject(remoteAddr); out.writeObject(lastUpdated); out.writeObject(attributes); + out.writeObject(perRecipientSpecificHeaders); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/dc2a14e0/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java b/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java index d9105d9..cdcb07a 100644 --- a/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java +++ b/server/data/data-file/src/test/java/org/apache/james/mailrepository/FileMailRepositoryTest.java @@ -19,14 +19,10 @@ package org.apache.james.mailrepository; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.james.filesystem.api.mock.MockFileSystem; import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.file.FileMailRepository; -import org.apache.mailet.Mail; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -57,22 +53,4 @@ public class FileMailRepositoryTest implements MailRepositoryContract { return mailRepository; } - /** - * FileMailRepository doesn't store PerRecipientSpecificHeaders - */ - @Override - public void checkMailEquality(Mail actual, Mail expected) { - assertAll( - () -> assertThat(actual.getMessage().getContent()).isEqualTo(expected.getMessage().getContent()), - () -> assertThat(actual.getMessageSize()).isEqualTo(expected.getMessageSize()), - () -> assertThat(actual.getName()).isEqualTo(expected.getName()), - () -> assertThat(actual.getState()).isEqualTo(expected.getState()), - () -> assertThat(actual.getAttribute(TEST_ATTRIBUTE)).isEqualTo(expected.getAttribute(TEST_ATTRIBUTE)), - () -> assertThat(actual.getErrorMessage()).isEqualTo(expected.getErrorMessage()), - () -> assertThat(actual.getRemoteHost()).isEqualTo(expected.getRemoteHost()), - () -> assertThat(actual.getRemoteAddr()).isEqualTo(expected.getRemoteAddr()), - () -> assertThat(actual.getLastUpdated()).isEqualTo(expected.getLastUpdated()) - ); - } - } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
