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/02 03:16:11 UTC
[james-project] 14/29: JAMES-3074 Extends UidValidity strong typing
in the James code base
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 83cacbfd45b5711ff01be1a1fe606bf674b44083
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Thu Feb 20 17:53:16 2020 +0700
JAMES-3074 Extends UidValidity strong typing in the James code base
---
.../org/apache/james/mailbox/MessageManager.java | 3 +-
.../org/apache/james/mailbox/model/Mailbox.java | 6 +-
.../james/mailbox/model/MailboxAssertingTool.java | 2 +-
.../mailbox/model/MailboxAssertingToolTest.java | 8 +-
.../apache/james/mailbox/backup/zip/Zipper.java | 2 +-
.../mailbox/backup/MailboxMessageFixture.java | 9 +-
.../apache/james/mailbox/backup/ZipperTest.java | 2 +-
.../cassandra/mail/CassandraMailboxDAO.java | 5 +-
.../cassandra/mail/CassandraMailboxMapper.java | 3 +-
.../mail/CassandraIndexTableHandlerTest.java | 3 +-
.../mail/CassandraMailboxCounterDAOTest.java | 3 +-
.../cassandra/mail/CassandraMailboxDAOTest.java | 5 +-
.../CassandraMailboxMapperConcurrencyTest.java | 3 +-
.../cassandra/mail/CassandraMailboxMapperTest.java | 3 +-
.../mail/CassandraModSeqProviderTest.java | 3 +-
.../cassandra/mail/CassandraUidProviderTest.java | 3 +-
.../mail/migration/MailboxPathV2MigrationTest.java | 3 +-
.../SolveMailboxInconsistenciesServiceTest.java | 5 +-
...asticSearchListeningMessageSearchIndexTest.java | 3 +-
.../james/mailbox/jpa/mail/JPAMailboxMapper.java | 3 +-
.../james/mailbox/jpa/mail/model/JPAMailbox.java | 7 +-
.../jpa/mail/TransactionalMailboxMapper.java | 3 +-
.../LuceneMailboxMessageSearchIndexTest.java | 7 +-
.../james/mailbox/maildir/MaildirFolder.java | 22 +-
.../mailbox/maildir/mail/MaildirMailboxMapper.java | 3 +-
.../inmemory/mail/InMemoryMailboxMapper.java | 3 +-
.../InMemoryCombinationManagerTestSystem.java | 3 +-
.../inmemory/InMemoryMessageManagerTestSystem.java | 3 +-
.../spamassassin/SpamAssassinListenerTest.java | 3 +-
.../james/mailbox/store/MailboxMetaData.java | 9 +-
.../james/mailbox/store/StoreMailboxManager.java | 5 +-
.../james/mailbox/store/StoreMessageManager.java | 3 +-
.../james/mailbox/store/mail/MailboxMapper.java | 3 +-
.../james/mailbox/store/StoreRightManagerTest.java | 3 +-
.../store/mail/model/ListMailboxAssertTest.java | 3 +-
.../store/mail/model/ListMessageAssertTest.java | 3 +-
.../store/mail/model/MailboxMapperACLTest.java | 3 +-
.../store/mail/model/MailboxMapperTest.java | 3 +-
.../store/mail/model/MessageIdMapperTest.java | 3 +-
.../store/mail/model/MessageMapperTest.java | 3 +-
.../mailbox/store/mail/model/MessageMoveTest.java | 3 +-
.../model/MessageWithAttachmentMapperTest.java | 3 +-
.../quota/DefaultUserQuotaRootResolverTest.java | 5 +-
.../mailbox/store/quota/QuotaCheckerTest.java | 3 +-
.../imap/api/message/response/StatusResponse.java | 13 +-
.../parser/AbstractSelectionCommandParser.java | 7 +-
.../imap/decode/parser/ExamineCommandParser.java | 3 +-
.../imap/decode/parser/SelectCommandParser.java | 3 +-
.../imap/encode/MailboxStatusResponseEncoder.java | 7 +-
.../request/AbstractMailboxSelectionRequest.java | 7 +-
.../james/imap/message/request/ExamineRequest.java | 3 +-
.../james/imap/message/request/SelectRequest.java | 3 +-
.../message/response/MailboxStatusResponse.java | 7 +-
.../processor/AbstractMessageRangeProcessor.java | 3 +-
.../imap/processor/AbstractSelectionProcessor.java | 7 +-
.../james/imap/processor/AppendProcessor.java | 3 +-
.../james/imap/processor/ExamineProcessor.java | 5 +-
.../james/imap/processor/SelectProcessor.java | 5 +-
.../james/imap/processor/StatusProcessor.java | 5 +-
.../encode/MailboxStatusResponseEncoderTest.java | 3 +-
.../james/imap/processor/CopyProcessorTest.java | 5 +-
.../james/imap/processor/MoveProcessorTest.java | 5 +-
.../processor/base/MailboxEventAnalyserTest.java | 3 +-
.../adapter/mailbox/MailboxManagementTest.java | 3 +-
.../james/pop3server/mailbox/MailboxAdapter.java | 349 +++++++++++----------
65 files changed, 350 insertions(+), 285 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
index e91c432..52c0f6e 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java
@@ -48,6 +48,7 @@ import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.SearchQuery;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mime4j.dom.Message;
import org.apache.james.mime4j.message.DefaultMessageWriter;
@@ -377,7 +378,7 @@ public interface MessageManager {
*
* @return UIDVALIDITY
*/
- long getUidValidity();
+ UidValidity getUidValidity();
/**
* Gets the next UID predicted. The returned UID is not guaranteed to be
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java
index 04868eb..2f1a613 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Mailbox.java
@@ -33,10 +33,10 @@ public class Mailbox {
private String namespace;
private Username user;
private String name;
- private final long uidValidity;
+ private final UidValidity uidValidity;
private MailboxACL acl = MailboxACL.EMPTY;
- public Mailbox(MailboxPath path, long uidValidity, MailboxId mailboxId) {
+ public Mailbox(MailboxPath path, UidValidity uidValidity, MailboxId mailboxId) {
this.id = mailboxId;
this.namespace = path.getNamespace();
this.user = path.getUser();
@@ -113,7 +113,7 @@ public class Mailbox {
* Gets the current UID VALIDITY for this mailbox.
* @return uid validity
*/
- public long getUidValidity() {
+ public UidValidity getUidValidity() {
return uidValidity;
}
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingTool.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingTool.java
index 1292651..9d31b5b 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingTool.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingTool.java
@@ -51,7 +51,7 @@ public class MailboxAssertingTool {
if (!Objects.equals(actual.getACL(), expected.getACL())) {
failWithMessage(aclFailMessage(expected, actual));
}
- if (actual.getUidValidity() != expected.getUidValidity()) {
+ if (!Objects.equals(actual.getUidValidity(), expected.getUidValidity())) {
failWithMessage(uidValidityFailMessage(expected, actual));
}
return this;
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingToolTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingToolTest.java
index 573bc36..8e3377f 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingToolTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAssertingToolTest.java
@@ -31,7 +31,7 @@ class MailboxAssertingToolTest {
private static final Username USER = Username.of("user");
private static final Username USER1 = Username.of("user1");
- private static final long UID_VALIDITY = 42;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(42);
private static final TestId MAILBOX_ID = TestId.of(24);
@Nested
@@ -83,7 +83,7 @@ class MailboxAssertingToolTest {
@Test
void isEqualToShouldFailWithNotEqualUidValidity() {
Mailbox mailbox1 = new Mailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY, MAILBOX_ID);
- Mailbox mailbox2 = new Mailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY + 1, MAILBOX_ID);
+ Mailbox mailbox2 = new Mailbox(MailboxPath.forUser(USER, "name"), UidValidity.of(UID_VALIDITY.asLong() + 1), MAILBOX_ID);
assertThatThrownBy(() -> MailboxAssertingTool.assertThat(mailbox1).isEqualTo(mailbox2))
.isInstanceOf(AssertionError.class);
@@ -157,7 +157,7 @@ class MailboxAssertingToolTest {
@Test
void isEqualToShouldFailWithNotEqualUidValidity() {
Mailbox mailbox1 = new Mailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY, MAILBOX_ID);
- Mailbox mailbox2 = new Mailbox(MailboxPath.forUser(USER, "name"), UID_VALIDITY + 1, MAILBOX_ID);
+ Mailbox mailbox2 = new Mailbox(MailboxPath.forUser(USER, "name"), UidValidity.of(UID_VALIDITY.asLong() + 1), MAILBOX_ID);
assertThatThrownBy(() -> {
SoftAssertions.assertSoftly(softly -> {
@@ -167,7 +167,7 @@ class MailboxAssertingToolTest {
});
})
.isInstanceOf(AssertionError.class)
- .hasMessageContaining("Expected UID Validity to be <43> but was <42>");
+ .hasMessageContaining("Expected UID Validity to be <UidValidity{uidValidity=43}> but was <UidValidity{uidValidity=42}");
}
@Test
diff --git a/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/zip/Zipper.java b/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/zip/Zipper.java
index 0600b4b..4077c1e 100644
--- a/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/zip/Zipper.java
+++ b/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/zip/Zipper.java
@@ -92,7 +92,7 @@ public class Zipper implements ArchiveService {
archiveEntry.addExtraField(EntryTypeExtraField.TYPE_MAILBOX);
archiveEntry.addExtraField(new MailboxIdExtraField(mailbox.getMailboxId().serialize()));
- archiveEntry.addExtraField(new UidValidityExtraField(mailbox.getUidValidity()));
+ archiveEntry.addExtraField(new UidValidityExtraField(mailbox.getUidValidity().asLong()));
archiveOutputStream.putArchiveEntry(archiveEntry);
archiveOutputStream.closeArchiveEntry();
diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java
index ec97990..50f8a76 100644
--- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java
+++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/MailboxMessageFixture.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
@@ -100,10 +101,10 @@ public interface MailboxMessageFixture {
MailboxPath MAILBOX_PATH_USER1_MAILBOX2 = MailboxPath.forUser(USER, MAILBOX_2_NAME);
MailboxPath MAILBOX_PATH_OTHER_USER_MAILBOX1 = MailboxPath.forUser(OTHER_USER, MAILBOX_OTHER_USER_NAME);
- Mailbox MAILBOX_1 = new Mailbox(MAILBOX_PATH_USER1_MAILBOX1, 42, MAILBOX_ID_1);
- Mailbox MAILBOX_1_OTHER_USER = new Mailbox(MAILBOX_PATH_OTHER_USER_MAILBOX1, 42, MAILBOX_ID_11);
- Mailbox MAILBOX_1_SUB_1 = new Mailbox(MAILBOX_PATH_USER1_MAILBOX1_SUB_1, 420, TestId.of(11L));
- Mailbox MAILBOX_2 = new Mailbox(MAILBOX_PATH_USER1_MAILBOX2, 43, MAILBOX_ID_2);
+ Mailbox MAILBOX_1 = new Mailbox(MAILBOX_PATH_USER1_MAILBOX1, UidValidity.of(42), MAILBOX_ID_1);
+ Mailbox MAILBOX_1_OTHER_USER = new Mailbox(MAILBOX_PATH_OTHER_USER_MAILBOX1, UidValidity.of(42), MAILBOX_ID_11);
+ Mailbox MAILBOX_1_SUB_1 = new Mailbox(MAILBOX_PATH_USER1_MAILBOX1_SUB_1, UidValidity.of(420), TestId.of(11L));
+ Mailbox MAILBOX_2 = new Mailbox(MAILBOX_PATH_USER1_MAILBOX2, UidValidity.of(43), MAILBOX_ID_2);
List<MailboxAnnotation> NO_ANNOTATION = ImmutableList.of();
diff --git a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java
index 7200cc7..e489157 100644
--- a/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java
+++ b/mailbox/backup/src/test/java/org/apache/james/mailbox/backup/ZipperTest.java
@@ -195,7 +195,7 @@ class ZipperTest {
hasName(MAILBOX_1.getName() + "/")
.containsExtraFields(
new MailboxIdExtraField(MAILBOX_1.getMailboxId()),
- new UidValidityExtraField(MAILBOX_1.getUidValidity())));
+ new UidValidityExtraField(MAILBOX_1.getUidValidity().asLong())));
}
}
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
index 3c7a9f9..e5c097c 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.cassandra.mail.utils.MailboxBaseTupleUtil;
import org.apache.james.mailbox.cassandra.table.CassandraMailboxTable;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Row;
@@ -116,7 +117,7 @@ public class CassandraMailboxDAO {
return executor.executeVoid(insertStatement.bind()
.setUUID(ID, cassandraId.asUuid())
.setString(NAME, mailbox.getName())
- .setLong(UIDVALIDITY, mailbox.getUidValidity())
+ .setLong(UIDVALIDITY, mailbox.getUidValidity().asLong())
.setUDTValue(MAILBOX_BASE, mailboxBaseTupleUtil.createMailboxBaseUDT(mailbox.getNamespace(), mailbox.getUser())));
}
@@ -144,7 +145,7 @@ public class CassandraMailboxDAO {
row.getUDTValue(MAILBOX_BASE).getString(CassandraMailboxTable.MailboxBase.NAMESPACE),
Username.of(row.getUDTValue(MAILBOX_BASE).getString(CassandraMailboxTable.MailboxBase.USER)),
row.getString(NAME)),
- row.getLong(UIDVALIDITY),
+ UidValidity.of(row.getLong(UIDVALIDITY)),
cassandraId);
}
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index bfeb59f..daf71ce 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.util.ReactorUtils;
@@ -154,7 +155,7 @@ public class CassandraMailboxMapper implements MailboxMapper {
}
@Override
- public Mailbox create(MailboxPath mailboxPath, long uidValidity) throws MailboxException {
+ public Mailbox create(MailboxPath mailboxPath, UidValidity uidValidity) throws MailboxException {
CassandraId cassandraId = CassandraId.timeBased();
Mailbox mailbox = new Mailbox(mailboxPath, uidValidity, cassandraId);
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
index dc739f4..d100737 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.junit.jupiter.api.BeforeEach;
@@ -55,7 +56,7 @@ class CassandraIndexTableHandlerTest {
private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
private static final MessageUid MESSAGE_UID = MessageUid.of(18L);
private static final CassandraMessageId CASSANDRA_MESSAGE_ID = new CassandraMessageId.Factory().generate();
- private static final int UID_VALIDITY = 15;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(15);
private static final ModSeq MODSEQ = ModSeq.of(17);
@RegisterExtension
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
index 67e2007..b87fdd3 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
@@ -29,12 +29,13 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxCounters;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
class CassandraMailboxCounterDAOTest {
- private static final int UID_VALIDITY = 15;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(15);
private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
@RegisterExtension
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index 459bd6e..f13a96f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -35,13 +35,14 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
class CassandraMailboxDAOTest {
- private static final int UID_VALIDITY_1 = 145;
- private static final int UID_VALIDITY_2 = 147;
+ private static final UidValidity UID_VALIDITY_1 = UidValidity.of(145);
+ private static final UidValidity UID_VALIDITY_2 = UidValidity.of(147);
private static final Username USER = Username.of("user");
private static final MailboxPath NEW_MAILBOX_PATH = MailboxPath.forUser(USER, "xyz");
private static CassandraId CASSANDRA_ID_1 = CassandraId.timeBased();
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 99044c8..54e7290 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -41,7 +42,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
class CassandraMailboxMapperConcurrencyTest {
- private static final int UID_VALIDITY = 52;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(52);
private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser(Username.of("user"), "name");
private static final int THREAD_COUNT = 10;
private static final int OPERATION_COUNT = 10;
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index a8af418..c724053 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.exception.TooLongMailboxNameException;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.ExactName;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.model.search.Wildcard;
@@ -58,7 +59,7 @@ import com.github.fge.lambdas.Throwing;
import com.github.fge.lambdas.runnable.ThrowingRunnable;
class CassandraMailboxMapperTest {
- private static final int UID_VALIDITY = 52;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(52);
private static final Username USER = Username.of("user");
private static final CassandraId MAILBOX_ID = CassandraId.timeBased();
private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser(USER, "name");
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index 93637ef..6c328a4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -55,7 +56,7 @@ class CassandraModSeqProviderTest {
void setUp(CassandraCluster cassandra) {
modSeqProvider = new CassandraModSeqProvider(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
MailboxPath path = new MailboxPath("gsoc", Username.of("ieugen"), "Trash");
- mailbox = new Mailbox(path, 1234, CASSANDRA_ID);
+ mailbox = new Mailbox(path, UidValidity.of(1234), CASSANDRA_ID);
}
@Test
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index 88c4294..80c43b0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -35,6 +35,7 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.util.concurrency.ConcurrentTestRunner;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -55,7 +56,7 @@ class CassandraUidProviderTest {
void setUp(CassandraCluster cassandra) {
uidProvider = new CassandraUidProvider(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION);
MailboxPath path = new MailboxPath("gsoc", Username.of("ieugen"), "Trash");
- mailbox = new Mailbox(path, 1234, CASSANDRA_ID);
+ mailbox = new Mailbox(path, UidValidity.of(1234), CASSANDRA_ID);
}
@Test
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
index 2657eb7..82ee289 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
@@ -41,6 +41,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.assertj.core.api.SoftAssertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -49,7 +50,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
class MailboxPathV2MigrationTest {
private static final MailboxPath MAILBOX_PATH_1 = MailboxPath.forUser(Username.of("bob"), "Important");
- private static final int UID_VALIDITY_1 = 452;
+ private static final UidValidity UID_VALIDITY_1 = UidValidity.of(452);
private static final CassandraId MAILBOX_ID_1 = CassandraId.timeBased();
public static final CassandraModule MODULES = CassandraModule.aggregateModules(
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
index 167fcb8..6db7ae0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/task/SolveMailboxInconsistenciesServiceTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.task.Task.Result;
import org.assertj.core.api.SoftAssertions;
import org.junit.jupiter.api.BeforeEach;
@@ -49,8 +50,8 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import nl.jqno.equalsverifier.EqualsVerifier;
class SolveMailboxInconsistenciesServiceTest {
- private static final int UID_VALIDITY_1 = 145;
- private static final int UID_VALIDITY_2 = 147;
+ private static final UidValidity UID_VALIDITY_1 = UidValidity.ofValid(145);
+ private static final UidValidity UID_VALIDITY_2 = UidValidity.ofValid(147);
private static final Username USER = Username.of("user");
private static final MailboxPath MAILBOX_PATH = MailboxPath.forUser(USER, "abc");
private static final MailboxPath NEW_MAILBOX_PATH = MailboxPath.forUser(USER, "xyz");
diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
index b126711..5a94b95 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndexTest.java
@@ -62,6 +62,7 @@ import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.SearchQuery;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.FakeAuthenticator;
@@ -177,7 +178,7 @@ class ElasticSearchListeningMessageSearchIndexTest {
messageToElasticSearchJson, sessionProvider, new MailboxIdRoutingKeyFactory());
session = sessionProvider.createSystemSession(USERNAME);
- mailbox = mapperFactory.getMailboxMapper(session).create(MailboxPath.forUser(USERNAME, DefaultMailboxes.INBOX), MAILBOX_ID.id);
+ mailbox = mapperFactory.getMailboxMapper(session).create(MailboxPath.forUser(USERNAME, DefaultMailboxes.INBOX), UidValidity.of(MAILBOX_ID.id));
}
@Test
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
index 40613e9..966101a 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
@@ -41,6 +41,7 @@ import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.store.MailboxExpressionBackwardCompatibility;
import org.apache.james.mailbox.store.mail.MailboxMapper;
@@ -84,7 +85,7 @@ public class JPAMailboxMapper extends JPATransactionalMapper implements MailboxM
}
@Override
- public Mailbox create(MailboxPath mailboxPath, long uidValidity) throws MailboxException {
+ public Mailbox create(MailboxPath mailboxPath, UidValidity uidValidity) throws MailboxException {
try {
if (isPathAlreadyUsedByAnotherMailbox(mailboxPath)) {
throw new MailboxExistsException(mailboxPath.getName());
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
index 0e533e8..730ce90 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/JPAMailbox.java
@@ -33,6 +33,7 @@ import org.apache.james.core.Username;
import org.apache.james.mailbox.jpa.JPAId;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
@Entity(name = "Mailbox")
@Table(name = "JAMES_MAILBOX")
@@ -105,11 +106,11 @@ public class JPAMailbox {
public JPAMailbox() {
}
- public JPAMailbox(MailboxPath path, long uidValidity) {
+ public JPAMailbox(MailboxPath path, UidValidity uidValidity) {
this.name = path.getName();
this.user = path.getUser().asString();
this.namespace = path.getNamespace();
- this.uidValidity = uidValidity;
+ this.uidValidity = uidValidity.asLong();
}
public JPAMailbox(Mailbox mailbox) {
@@ -130,7 +131,7 @@ public class JPAMailbox {
public Mailbox toMailbox() {
MailboxPath path = new MailboxPath(namespace, Username.of(user), name);
- return new Mailbox(path, uidValidity, new JPAId(mailboxId));
+ return new Mailbox(path, UidValidity.of(uidValidity), new JPAId(mailboxId));
}
public void setMailboxId(long mailboxId) {
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
index cce5fdc..a40e189 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
@@ -31,6 +31,7 @@ import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.transaction.Mapper;
@@ -53,7 +54,7 @@ public class TransactionalMailboxMapper implements MailboxMapper {
}
@Override
- public Mailbox create(MailboxPath mailboxPath, long uidValidity) throws MailboxException {
+ public Mailbox create(MailboxPath mailboxPath, UidValidity uidValidity) throws MailboxException {
return wrapped.execute(() -> wrapped.create(mailboxPath, uidValidity));
}
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
index 24fcd4c..6ff52fb 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
@@ -47,6 +47,7 @@ import org.apache.james.mailbox.model.SearchQuery.Sort.Order;
import org.apache.james.mailbox.model.SearchQuery.Sort.SortClause;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.MessageBuilder;
import org.apache.lucene.store.RAMDirectory;
import org.junit.jupiter.api.BeforeEach;
@@ -61,9 +62,9 @@ class LuceneMailboxMessageSearchIndexTest {
static final TestId TEST_ID_3 = TestId.of(2);
static final Username BOB = Username.of("bob");
- Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, "box"), 18, TEST_ID_1);
- Mailbox mailbox2 = new Mailbox(MailboxPath.forUser(BOB, "box"), 19, TEST_ID_2);
- Mailbox mailbox3 = new Mailbox(MailboxPath.forUser(BOB, "box"), 12, TEST_ID_3);
+ Mailbox mailbox = new Mailbox(MailboxPath.forUser(BOB, "box"), UidValidity.of(18), TEST_ID_1);
+ Mailbox mailbox2 = new Mailbox(MailboxPath.forUser(BOB, "box"), UidValidity.of(19), TEST_ID_2);
+ Mailbox mailbox3 = new Mailbox(MailboxPath.forUser(BOB, "box"), UidValidity.of(12), TEST_ID_3);
LuceneMessageSearchIndex index;
MailboxSession session;
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
index e716238..2f4418e 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
@@ -53,11 +53,13 @@ import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxACL.EntryKey;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MaildirFolder {
private static final Logger LOGGER = LoggerFactory.getLogger(MaildirFolder.class);
+ private static final UidValidity DEFAULT_UID_VALIDITY = UidValidity.of(-1);
public static final String VALIDITY_FILE = "james-uidvalidity";
public static final String UIDLIST_FILE = "james-uidlist";
@@ -77,7 +79,7 @@ public class MaildirFolder {
private Optional<MessageUid> lastUid;
private int messageCount = 0;
- private long uidValidity = -1;
+ private UidValidity uidValidity = DEFAULT_UID_VALIDITY;
private MailboxACL acl;
private boolean messageNameStrictParse = false;
@@ -249,8 +251,8 @@ public class MaildirFolder {
* Returns the uidValidity of this mailbox
* @return The uidValidity
*/
- public long getUidValidity() throws IOException {
- if (uidValidity == -1) {
+ public UidValidity getUidValidity() throws IOException {
+ if (uidValidity.equals(DEFAULT_UID_VALIDITY)) {
uidValidity = readUidValidity();
}
return uidValidity;
@@ -259,7 +261,7 @@ public class MaildirFolder {
/**
* Sets the uidValidity for this mailbox and writes it to the file system
*/
- public void setUidValidity(long uidValidity) throws IOException {
+ public void setUidValidity(UidValidity uidValidity) throws IOException {
saveUidValidity(uidValidity);
this.uidValidity = uidValidity;
}
@@ -271,7 +273,7 @@ public class MaildirFolder {
* @return The uidValidity
* @throws IOException if there are problems with the validity file
*/
- private long readUidValidity() throws IOException {
+ private UidValidity readUidValidity() throws IOException {
File validityFile = new File(rootFolder, VALIDITY_FILE);
if (!validityFile.exists()) {
return resetUidValidity();
@@ -280,20 +282,20 @@ public class MaildirFolder {
InputStreamReader isr = new InputStreamReader(fis)) {
char[] uidValidity = new char[20];
int len = isr.read(uidValidity);
- return Long.parseLong(String.valueOf(uidValidity, 0, len).trim());
+ return UidValidity.of(Long.parseLong(String.valueOf(uidValidity, 0, len).trim()));
}
}
/**
* Save the given uidValidity to the file system
*/
- private void saveUidValidity(long uidValidity) throws IOException {
+ private void saveUidValidity(UidValidity uidValidity) throws IOException {
File validityFile = new File(rootFolder, VALIDITY_FILE);
if (!validityFile.createNewFile()) {
throw new IOException("Could not create file " + validityFile);
}
try (FileOutputStream fos = new FileOutputStream(validityFile)) {
- fos.write(String.valueOf(uidValidity).getBytes());
+ fos.write(String.valueOf(uidValidity.asLong()).getBytes());
}
}
@@ -339,9 +341,9 @@ public class MaildirFolder {
* Sets and returns a new uidValidity for this folder.
* @return the new uidValidity
*/
- private long resetUidValidity() throws IOException {
+ private UidValidity resetUidValidity() throws IOException {
// using the timestamp as uidValidity
- long timestamp = System.currentTimeMillis();
+ UidValidity timestamp = UidValidity.of(System.currentTimeMillis());
setUidValidity(timestamp);
return timestamp;
}
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
index 4be42b9..f6e8195 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java
@@ -42,6 +42,7 @@ import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.model.search.PrefixedWildcard;
import org.apache.james.mailbox.store.MailboxExpressionBackwardCompatibility;
@@ -158,7 +159,7 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail
}
@Override
- public Mailbox create(MailboxPath mailboxPath, long uidValidity) throws MailboxException {
+ public Mailbox create(MailboxPath mailboxPath, UidValidity uidValidity) throws MailboxException {
MaildirId maildirId = MaildirId.random();
Mailbox mailbox = new Mailbox(mailboxPath, uidValidity, maildirId);
MaildirFolder folder = maildirStore.createMaildirFolder(mailbox);
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
index 9dc6491..c990f48 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MailboxACL.NameType;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.store.mail.MailboxMapper;
@@ -93,7 +94,7 @@ public class InMemoryMailboxMapper implements MailboxMapper {
}
@Override
- public Mailbox create(MailboxPath mailboxPath, long uidValidity) throws MailboxException {
+ public Mailbox create(MailboxPath mailboxPath, UidValidity uidValidity) throws MailboxException {
InMemoryId id = InMemoryId.of(mailboxIdGenerator.incrementAndGet());
Mailbox mailbox = new Mailbox(mailboxPath, uidValidity, id);
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
index 9001e4d..3087bef 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
@@ -25,10 +25,11 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.CombinationManagerTestSystem;
public class InMemoryCombinationManagerTestSystem extends CombinationManagerTestSystem {
- private static final int UID_VALIDITY = 1024;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(1024);
private final InMemoryMailboxManager inMemoryMailboxManager;
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
index a6cbe0d..4933ee5 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTestSystem.java
@@ -24,11 +24,12 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.MessageManagerTestSystem;
public class InMemoryMessageManagerTestSystem extends MessageManagerTestSystem {
- private static final int UID_VALIDITY = 1024;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(1024);
private final MailboxManager mailboxManager;
diff --git a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
index 63bab78..4227d3b 100644
--- a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
+++ b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
@@ -47,6 +47,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageMoves;
import org.apache.james.mailbox.model.TestMessageId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.SystemMailboxesProviderImpl;
@@ -60,7 +61,7 @@ import org.junit.jupiter.api.Test;
class SpamAssassinListenerTest {
static final Username USER = Username.of("user");
static final MailboxSession MAILBOX_SESSION = MailboxSessionUtil.create(USER);
- static final int UID_VALIDITY = 43;
+ static final UidValidity UID_VALIDITY = UidValidity.of(43);
static final TestMessageId MESSAGE_ID = TestMessageId.of(45);
SpamAssassin spamAssassin;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
index 479f598..36410c6 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxACL;
+import org.apache.james.mailbox.model.UidValidity;
import com.google.common.collect.ImmutableList;
@@ -38,7 +39,7 @@ import com.google.common.collect.ImmutableList;
*/
public class MailboxMetaData implements MessageManager.MetaData {
- public static MailboxMetaData sensibleInformationFree(MailboxACL resolvedAcl, long uidValidity, boolean writeable, boolean modSeqPermanent) throws MailboxException {
+ public static MailboxMetaData sensibleInformationFree(MailboxACL resolvedAcl, UidValidity uidValidity, boolean writeable, boolean modSeqPermanent) throws MailboxException {
ImmutableList<MessageUid> recents = ImmutableList.of();
MessageUid uidNext = MessageUid.MIN_VALUE;
ModSeq highestModSeq = ModSeq.first();
@@ -62,7 +63,7 @@ public class MailboxMetaData implements MessageManager.MetaData {
private final long recentCount;
private final List<MessageUid> recent;
private final Flags permanentFlags;
- private final long uidValidity;
+ private final UidValidity uidValidity;
private final MessageUid nextUid;
private final long messageCount;
private final long unseenCount;
@@ -72,7 +73,7 @@ public class MailboxMetaData implements MessageManager.MetaData {
private final boolean modSeqPermanent;
private final MailboxACL acl;
- public MailboxMetaData(List<MessageUid> recent, Flags permanentFlags, long uidValidity, MessageUid uidNext, ModSeq highestModSeq, long messageCount, long unseenCount, MessageUid firstUnseen, boolean writeable, boolean modSeqPermanent, MailboxACL acl) {
+ public MailboxMetaData(List<MessageUid> recent, Flags permanentFlags, UidValidity uidValidity, MessageUid uidNext, ModSeq highestModSeq, long messageCount, long unseenCount, MessageUid firstUnseen, boolean writeable, boolean modSeqPermanent, MailboxACL acl) {
this.recent = Optional.ofNullable(recent).orElseGet(ArrayList::new);
this.highestModSeq = highestModSeq;
this.recentCount = this.recent.size();
@@ -104,7 +105,7 @@ public class MailboxMetaData implements MessageManager.MetaData {
}
@Override
- public long getUidValidity() {
+ public UidValidity getUidValidity() {
return uidValidity;
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 77eae6b..6e61512 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -70,6 +70,7 @@ import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
import org.apache.james.mailbox.model.QuotaRoot;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.model.search.PrefixedWildcard;
import org.apache.james.mailbox.quota.QuotaManager;
@@ -217,8 +218,8 @@ public class StoreMailboxManager implements MailboxManager {
/**
* Generate and return the next uid validity
*/
- protected int randomUidValidity() {
- return Math.abs(RANDOM.nextInt());
+ protected UidValidity randomUidValidity() {
+ return UidValidity.of(Math.abs(RANDOM.nextInt()));
}
@Override
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 259cd7b..2736d37 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
@@ -73,6 +73,7 @@ import org.apache.james.mailbox.model.MessageMoves;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.SearchQuery;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
@@ -534,7 +535,7 @@ public class StoreMessageManager implements MessageManager {
}
List<MessageUid> recent;
Flags permanentFlags = getPermanentFlags(mailboxSession);
- long uidValidity = getMailboxEntity().getUidValidity();
+ UidValidity uidValidity = getMailboxEntity().getUidValidity();
MessageUid uidNext = mapperFactory.getMessageMapper(mailboxSession).getLastUid(mailbox)
.map(MessageUid::next)
.orElse(MessageUid.MIN_VALUE);
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
index 35885b5..9973d8f 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.store.transaction.Mapper;
@@ -42,7 +43,7 @@ public interface MailboxMapper extends Mapper {
/**
* Create a {@link Mailbox} with the given {@link MailboxPath} and uid to the underlying storage
*/
- Mailbox create(MailboxPath mailboxPath, long uidValidity) throws MailboxException;
+ Mailbox create(MailboxPath mailboxPath, UidValidity uidValidity) throws MailboxException;
/**
* Rename the given {@link Mailbox} to the underlying storage
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
index a9e7933..7aa4a76 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreRightManagerTest.java
@@ -51,6 +51,7 @@ import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -58,7 +59,7 @@ import org.junit.jupiter.api.Test;
class StoreRightManagerTest {
static final MailboxId MAILBOX_ID = TestId.of(42);
- static final long UID_VALIDITY = 3421L;
+ static final UidValidity UID_VALIDITY = UidValidity.of(3421L);
StoreRightManager storeRightManager;
MailboxSession aliceSession;
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java
index de14605..0d158a6 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssertTest.java
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UidValidity;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -39,7 +40,7 @@ class ListMailboxAssertTest {
static final String NAME = "name";
static final Username USER = Username.of("user");
static final String NAMESPACE = "namespace";
- static final long UID_VALIDITY = 42;
+ static final UidValidity UID_VALIDITY = UidValidity.of(42);
static final MailboxId MAILBOX_ID_1 = TestId.of(1);
static final MailboxId MAILBOX_ID_2 = TestId.of(2);
static final Mailbox MAILBOX_1 = new Mailbox(new MailboxPath(NAMESPACE, USER, NAME), UID_VALIDITY, MAILBOX_ID_1);
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
index bd50a2a..99318de 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssertTest.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
import org.junit.jupiter.api.BeforeEach;
@@ -49,7 +50,7 @@ class ListMessageAssertTest {
static final String BODY_CONTENT2 = "Subject: Test2 \n\nBody2\n.\n";
static final String BODY_CONTENT1 = "Subject: Test1 \n\nBody1\n.\n";
static final int BODY_START = 16;
- static final int UID_VALIDITY = 42;
+ static final UidValidity UID_VALIDITY = UidValidity.of(42);
static final MailboxId MAILBOX_ID = TestId.of(1);
static final MessageUid MESSAGE_UID = MessageUid.of(2);
static final MessageId MESSAGE_ID = new DefaultMessageId();
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
index 408e6ad..744892f 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperACLTest.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.model.MailboxACL.EntryKey;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -37,7 +38,7 @@ import org.junit.jupiter.api.Test;
import com.google.common.collect.ImmutableMap;
public abstract class MailboxMapperACLTest {
- private static final long UID_VALIDITY = 42;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(42);
private static final boolean POSITIVE = true;
private static final boolean NEGATIVE = !POSITIVE;
private static final Username USER = Username.of("user");
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
index 89ffb3b..aee7ac5 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.search.ExactName;
import org.apache.james.mailbox.model.search.MailboxQuery;
import org.apache.james.mailbox.model.search.PrefixedWildcard;
@@ -48,7 +49,7 @@ import org.junit.jupiter.api.Test;
public abstract class MailboxMapperTest {
private static final char DELIMITER = '.';
- private static final long UID_VALIDITY = 42;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(42);
private static final Username BENWA = Username.of("benwa");
private static final MailboxPath benwaInboxPath = MailboxPath.forUser(BENWA, "INBOX");
private static final MailboxPath benwaWorkPath = MailboxPath.forUser(BENWA, "INBOX" + DELIMITER + "work");
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 630afc7..731f35a 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
@@ -42,6 +42,7 @@ import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.MessageIdMapper;
@@ -64,7 +65,7 @@ public abstract class MessageIdMapperTest {
private static final char DELIMITER = '.';
private static final int BODY_START = 16;
- protected static final long UID_VALIDITY = 42;
+ protected static final UidValidity UID_VALIDITY = UidValidity.of(42);
private MessageMapper messageMapper;
private MailboxMapper mailboxMapper;
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 1e4b4e5..b199021 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
@@ -48,6 +48,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.FlagsUpdateCalculator;
import org.apache.james.mailbox.store.mail.MailboxMapper;
@@ -69,7 +70,7 @@ public abstract class MessageMapperTest {
private static final char DELIMITER = '.';
private static final int LIMIT = 10;
private static final int BODY_START = 16;
- private static final int UID_VALIDITY = 42;
+ 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";
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 f0ddc85..4542f2f 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
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
@@ -47,7 +48,7 @@ public abstract class MessageMoveTest {
private static final char DELIMITER = '.';
private static final int LIMIT = 10;
private static final int BODY_START = 16;
- private static final int UID_VALIDITY = 42;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(42);
private MapperProvider mapperProvider;
private MessageMapper messageMapper;
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
index b6d22de..f10a0b6 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.mail.AttachmentMapper;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
@@ -54,7 +55,7 @@ public abstract class MessageWithAttachmentMapperTest {
private static final int LIMIT = 10;
private static final int BODY_START = 16;
- private static final int UID_VALIDITY = 42;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(42);
private MapperProvider mapperProvider;
private MessageMapper messageMapper;
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
index 283945a..d744e15 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/DefaultUserQuotaRootResolverTest.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.junit.jupiter.api.BeforeEach;
@@ -48,9 +49,9 @@ class DefaultUserQuotaRootResolverTest {
static final Username BENWA = Username.of("benwa");
static final MailboxId MAILBOX_ID = TestId.of(42);
static final MailboxPath MAILBOX_PATH = MailboxPath.inbox(BENWA);
- static final Mailbox MAILBOX = new Mailbox(MAILBOX_PATH, 10, MAILBOX_ID);
+ static final Mailbox MAILBOX = new Mailbox(MAILBOX_PATH, UidValidity.of(10), MAILBOX_ID);
static final MailboxPath MAILBOX_PATH_2 = MailboxPath.forUser(BENWA, "test");
- static final Mailbox MAILBOX_2 = new Mailbox(MAILBOX_PATH_2, 10, MAILBOX_ID);
+ static final Mailbox MAILBOX_2 = new Mailbox(MAILBOX_PATH_2, UidValidity.of(10), MAILBOX_ID);
static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot("#private&benwa", Optional.empty());
static final MailboxSession MAILBOX_SESSION = null;
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
index b162050..9c09ab2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/QuotaCheckerTest.java
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.Quota;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.junit.jupiter.api.BeforeEach;
@@ -48,7 +49,7 @@ class QuotaCheckerTest {
static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot("benwa", Optional.empty());
static final MailboxId MAILBOX_ID = TestId.of(42);
static final MailboxPath MAILBOX_PATH = MailboxPath.inbox(Username.of("benwa"));
- static final Mailbox MAILBOX = new Mailbox(MAILBOX_PATH, 10, MAILBOX_ID);
+ static final Mailbox MAILBOX = new Mailbox(MAILBOX_PATH, UidValidity.of(10), MAILBOX_ID);
QuotaRootResolver mockedQuotaRootResolver;
QuotaManager mockedQuotaManager;
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/message/response/StatusResponse.java b/protocols/imap/src/main/java/org/apache/james/imap/api/message/response/StatusResponse.java
index 4066bef..71eaf13 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/api/message/response/StatusResponse.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/api/message/response/StatusResponse.java
@@ -36,6 +36,7 @@ import org.apache.james.imap.api.message.MessageFlags;
import org.apache.james.imap.api.message.UidRange;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
+import org.apache.james.mailbox.model.UidValidity;
import com.github.steveash.guavate.Guavate;
@@ -150,17 +151,17 @@ public interface StatusResponse extends ImapResponseMessage {
/** RFC4315 <code>APPENDUID</code> response code */
- public static ResponseCode appendUid(long uidValidity, UidRange[] uids) {
+ public static ResponseCode appendUid(UidValidity uidValidity, UidRange[] uids) {
String uidParam = formatRanges(uids);
- return new ResponseCode("APPENDUID", Arrays.asList(uidParam), uidValidity, false);
+ return new ResponseCode("APPENDUID", Arrays.asList(uidParam), uidValidity.asLong(), false);
}
/** RFC4315 <code>COPYUID</code> response code */
- public static ResponseCode copyUid(long uidValidity, IdRange[] sourceRanges, IdRange[] targetRanges) {
+ public static ResponseCode copyUid(UidValidity uidValidity, IdRange[] sourceRanges, IdRange[] targetRanges) {
String source = formatRanges(sourceRanges);
String target = formatRanges(targetRanges);
- return new ResponseCode("COPYUID", Arrays.asList(new String[] { source, target }), uidValidity, false);
+ return new ResponseCode("COPYUID", Arrays.asList(new String[] { source, target }), uidValidity.asLong(), false);
}
/** RFC4551 <code>Conditional STORE</code> response code */
@@ -287,8 +288,8 @@ public interface StatusResponse extends ImapResponseMessage {
* positive non-zero integer
* @return <code>ResponseCode</code>, not null
*/
- public static ResponseCode uidValidity(long uid) {
- return new ResponseCode("UIDVALIDITY", uid);
+ public static ResponseCode uidValidity(UidValidity uid) {
+ return new ResponseCode("UIDVALIDITY", uid.asLong());
}
/**
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java
index 3933c5e..71b41d0 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/AbstractSelectionCommandParser.java
@@ -33,6 +33,7 @@ import org.apache.james.imap.decode.ImapRequestLineReader.StringMatcherCharacter
import org.apache.james.imap.decode.base.AbstractImapCommandParser;
import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest;
import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.model.UidValidity;
public abstract class AbstractSelectionCommandParser extends AbstractImapCommandParser {
private static final String CONDSTORE = ImapConstants.SUPPORTS_CONDSTORE.asString();
@@ -46,7 +47,7 @@ public abstract class AbstractSelectionCommandParser extends AbstractImapCommand
protected ImapMessage decode(ImapRequestLineReader request, Tag tag, ImapSession session) throws DecodingException {
final String mailboxName = request.mailbox();
boolean condstore = false;
- Long lastKnownUidValidity = null;
+ UidValidity lastKnownUidValidity = null;
Long knownModSeq = null;
UidRange[] uidSet = null;
UidRange[] knownUidSet = null;
@@ -79,7 +80,7 @@ public abstract class AbstractSelectionCommandParser extends AbstractImapCommand
// Consume enclosing paren
request.consumeChar('(');
- lastKnownUidValidity = request.number();
+ lastKnownUidValidity = UidValidity.of(request.number());
// Consume the SP
request.consumeChar(' ');
@@ -206,5 +207,5 @@ public abstract class AbstractSelectionCommandParser extends AbstractImapCommand
/**
* Create a new {@link AbstractMailboxSelectionRequest} for the given arguments
*/
- protected abstract AbstractMailboxSelectionRequest createRequest(String mailboxName, boolean condstore, Long lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag);
+ protected abstract AbstractMailboxSelectionRequest createRequest(String mailboxName, boolean condstore, UidValidity lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag);
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java
index bc71492..b2bef7e 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/ExamineCommandParser.java
@@ -25,6 +25,7 @@ import org.apache.james.imap.api.message.UidRange;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest;
import org.apache.james.imap.message.request.ExamineRequest;
+import org.apache.james.mailbox.model.UidValidity;
/**
* Parse EXAMINE commands
@@ -36,7 +37,7 @@ public class ExamineCommandParser extends AbstractSelectionCommandParser {
}
@Override
- protected AbstractMailboxSelectionRequest createRequest(String mailboxName, boolean condstore, Long lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
+ protected AbstractMailboxSelectionRequest createRequest(String mailboxName, boolean condstore, UidValidity lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
return new ExamineRequest(mailboxName, condstore, lastKnownUidValidity, knownModSeq, uidSet, knownUidSet, knownSequenceSet, tag);
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SelectCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SelectCommandParser.java
index 8fc5dc8..dd30d44 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SelectCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SelectCommandParser.java
@@ -25,6 +25,7 @@ import org.apache.james.imap.api.message.UidRange;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
import org.apache.james.imap.message.request.AbstractMailboxSelectionRequest;
import org.apache.james.imap.message.request.SelectRequest;
+import org.apache.james.mailbox.model.UidValidity;
/**
* Parse SELECT commands
@@ -35,7 +36,7 @@ public class SelectCommandParser extends AbstractSelectionCommandParser {
}
@Override
- protected AbstractMailboxSelectionRequest createRequest(String mailboxName, boolean condstore, Long lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
+ protected AbstractMailboxSelectionRequest createRequest(String mailboxName, boolean condstore, UidValidity lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
return new SelectRequest(mailboxName, condstore, lastKnownUidValidity, knownModSeq, uidSet, knownUidSet, knownSequenceSet, tag);
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java
index 2f64f67..be913d6 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/MailboxStatusResponseEncoder.java
@@ -25,6 +25,7 @@ import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.message.response.MailboxStatusResponse;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
+import org.apache.james.mailbox.model.UidValidity;
/**
* Encodes <code>STATUS</code> responses.
@@ -41,7 +42,7 @@ public class MailboxStatusResponseEncoder implements ImapConstants, ImapResponse
Long recent = response.getRecent();
MessageUid uidNext = response.getUidNext();
ModSeq highestModSeq = response.getHighestModSeq();
- Long uidValidity = response.getUidValidity();
+ UidValidity uidValidity = response.getUidValidity();
Long unseen = response.getUnseen();
String mailboxName = response.getMailbox();
@@ -75,8 +76,8 @@ public class MailboxStatusResponseEncoder implements ImapConstants, ImapResponse
if (uidValidity != null) {
composer.message(STATUS_UIDVALIDITY);
- final long uidValidityValue = uidValidity;
- composer.message(uidValidityValue);
+ final UidValidity uidValidityValue = uidValidity;
+ composer.message(uidValidityValue.asLong());
}
if (unseen != null) {
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequest.java b/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequest.java
index 137c17e..468e2b0 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequest.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/message/request/AbstractMailboxSelectionRequest.java
@@ -24,6 +24,7 @@ import org.apache.james.imap.api.Tag;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.UidRange;
import org.apache.james.imap.api.message.request.ImapRequest;
+import org.apache.james.mailbox.model.UidValidity;
/**
* {@link ImapRequest} which selects a Mailbox.
@@ -35,13 +36,13 @@ public abstract class AbstractMailboxSelectionRequest extends AbstractImapReques
private final String mailboxName;
private final boolean condstore;
- private final Long lastKnownUidValidity;
+ private final UidValidity lastKnownUidValidity;
private final Long knownModSeq;
private final UidRange[] uidSet;
private final UidRange[] knownUidSet;
private final IdRange[] knownSequenceSet;
- public AbstractMailboxSelectionRequest(ImapCommand command, String mailboxName, boolean condstore, Long lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
+ public AbstractMailboxSelectionRequest(ImapCommand command, String mailboxName, boolean condstore, UidValidity lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
super(tag, command);
this.mailboxName = mailboxName;
this.condstore = condstore;
@@ -79,7 +80,7 @@ public abstract class AbstractMailboxSelectionRequest extends AbstractImapReques
*
* @return lastKnownUidValidity
*/
- public final Long getLastKnownUidValidity() {
+ public final UidValidity getLastKnownUidValidity() {
return lastKnownUidValidity;
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/message/request/ExamineRequest.java b/protocols/imap/src/main/java/org/apache/james/imap/message/request/ExamineRequest.java
index 0d81852..a3989e8 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/message/request/ExamineRequest.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/message/request/ExamineRequest.java
@@ -22,9 +22,10 @@ import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.Tag;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.UidRange;
+import org.apache.james.mailbox.model.UidValidity;
public class ExamineRequest extends AbstractMailboxSelectionRequest {
- public ExamineRequest(String mailboxName, boolean condstore, Long lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
+ public ExamineRequest(String mailboxName, boolean condstore, UidValidity lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
super(ImapConstants.EXAMINE_COMMAND, mailboxName, condstore, lastKnownUidValidity, knownModSeq, uidSet, knownUidSet, knownSequenceSet, tag);
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/message/request/SelectRequest.java b/protocols/imap/src/main/java/org/apache/james/imap/message/request/SelectRequest.java
index 44aa85e..b8bf1a3 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/message/request/SelectRequest.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/message/request/SelectRequest.java
@@ -22,9 +22,10 @@ import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.Tag;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.UidRange;
+import org.apache.james.mailbox.model.UidValidity;
public class SelectRequest extends AbstractMailboxSelectionRequest {
- public SelectRequest(String mailboxName, boolean condstore, Long lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
+ public SelectRequest(String mailboxName, boolean condstore, UidValidity lastKnownUidValidity, Long knownModSeq, UidRange[] uidSet, UidRange[] knownUidSet, IdRange[] knownSequenceSet, Tag tag) {
super(ImapConstants.SELECT_COMMAND, mailboxName, condstore, lastKnownUidValidity, knownModSeq, uidSet, knownUidSet, knownSequenceSet, tag);
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/message/response/MailboxStatusResponse.java b/protocols/imap/src/main/java/org/apache/james/imap/message/response/MailboxStatusResponse.java
index c7798b3..7282ca7 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/message/response/MailboxStatusResponse.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/message/response/MailboxStatusResponse.java
@@ -22,6 +22,7 @@ package org.apache.james.imap.message.response;
import org.apache.james.imap.api.message.response.ImapResponseMessage;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
+import org.apache.james.mailbox.model.UidValidity;
/**
* Represents a <code>STATUS</code> response. See <code>RFC3501 7.2.4</code>.
@@ -30,12 +31,12 @@ public class MailboxStatusResponse implements ImapResponseMessage {
private final Long messages;
private final Long recent;
private final MessageUid uidNext;
- private final Long uidValidity;
+ private final UidValidity uidValidity;
private final Long unseen;
private final String mailbox;
private final ModSeq highestModSeq;
- public MailboxStatusResponse(Long messages, Long recent, MessageUid uidNext, ModSeq highestModSeq, Long uidValidity, Long unseen, String mailbox) {
+ public MailboxStatusResponse(Long messages, Long recent, MessageUid uidNext, ModSeq highestModSeq, UidValidity uidValidity, Long unseen, String mailbox) {
super();
this.messages = messages;
this.recent = recent;
@@ -79,7 +80,7 @@ public class MailboxStatusResponse implements ImapResponseMessage {
*
* @return the mailbox uidValidity (if requested) or null (if not)
*/
- public final Long getUidValidity() {
+ public final UidValidity getUidValidity() {
return uidValidity;
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
index 8860c1a..0d3e1f3 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMessageRangeProcessor.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MessageRangeException;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.api.MetricFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -104,7 +105,7 @@ public abstract class AbstractMessageRangeProcessor<R extends AbstractMessageRan
.toArray(new IdRange[0]);
// get folder UIDVALIDITY
- Long uidValidity = mailbox.getMailboxEntity().getUidValidity();
+ UidValidity uidValidity = mailbox.getMailboxEntity().getUidValidity();
return StatusResponse.ResponseCode.copyUid(uidValidity, request.getIdSet(), resultUids);
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
index f00345e..e243fdf 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
@@ -54,6 +54,7 @@ import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.exception.MessageRangeException;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.api.MetricFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -96,8 +97,8 @@ abstract class AbstractSelectionProcessor<R extends AbstractMailboxSelectionRequ
}
private void respond(ImapSession session, MailboxPath fullMailboxPath, AbstractMailboxSelectionRequest request, Responder responder) throws MailboxException, MessageRangeException {
-
- Long lastKnownUidValidity = request.getLastKnownUidValidity();
+
+ UidValidity lastKnownUidValidity = request.getLastKnownUidValidity();
Long modSeq = request.getKnownModSeq();
IdRange[] knownSequences = request.getKnownSequenceSet();
UidRange[] knownUids = request.getKnownUidSet();
@@ -363,7 +364,7 @@ abstract class AbstractSelectionProcessor<R extends AbstractMailboxSelectionRequ
}
private void uidValidity(Responder responder, MessageManager.MetaData metaData) throws MailboxException {
- final long uidValidity = metaData.getUidValidity();
+ final UidValidity uidValidity = metaData.getUidValidity();
final StatusResponse untaggedOk = statusResponseFactory.untaggedOk(HumanReadableText.UID_VALIDITY, ResponseCode.uidValidity(uidValidity));
responder.respond(untaggedOk);
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
index 707a356..fd869cb 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java
@@ -46,6 +46,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
import org.slf4j.Logger;
@@ -133,7 +134,7 @@ public class AppendProcessor extends AbstractMailboxProcessor<AppendRequest> {
}
// get folder UIDVALIDITY
- Long uidValidity = mailboxManager.getMailbox(mailboxPath, mailboxSession)
+ UidValidity uidValidity = mailboxManager.getMailbox(mailboxPath, mailboxSession)
.getMailboxEntity()
.getUidValidity();
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/ExamineProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/ExamineProcessor.java
index 5486524..0468251 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/ExamineProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/ExamineProcessor.java
@@ -20,6 +20,7 @@
package org.apache.james.imap.processor;
import java.io.Closeable;
+import java.util.Optional;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.UidRange;
@@ -28,6 +29,7 @@ import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.message.request.ExamineRequest;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
@@ -47,7 +49,8 @@ public class ExamineProcessor extends AbstractSelectionProcessor<ExamineRequest>
.addContext("knownModseq", request.getKnownModSeq())
.addContext("knownUids", UidRange.toString(request.getKnownUidSet()))
.addContext("knownIdRange", IdRange.toString(request.getKnownSequenceSet()))
- .addContext("lastKnownUidValidity", request.getLastKnownUidValidity())
+ .addContext("lastKnownUidValidity", Optional.ofNullable(request.getLastKnownUidValidity())
+ .map(UidValidity::asLong))
.addContext("uidSet", UidRange.toString(request.getUidSet()))
.build();
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/SelectProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/SelectProcessor.java
index 6d9bb18..12a67aa 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/SelectProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/SelectProcessor.java
@@ -20,6 +20,7 @@
package org.apache.james.imap.processor;
import java.io.Closeable;
+import java.util.Optional;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.UidRange;
@@ -28,6 +29,7 @@ import org.apache.james.imap.api.process.ImapProcessor;
import org.apache.james.imap.message.request.SelectRequest;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
@@ -47,7 +49,8 @@ public class SelectProcessor extends AbstractSelectionProcessor<SelectRequest> {
.addContext("knownModseq", message.getKnownModSeq())
.addContext("knownUids", UidRange.toString(message.getKnownUidSet()))
.addContext("knownIdRange", IdRange.toString(message.getKnownSequenceSet()))
- .addContext("lastKnownUidValidity", message.getLastKnownUidValidity())
+ .addContext("lastKnownUidValidity", Optional.ofNullable(message.getLastKnownUidValidity())
+ .map(UidValidity::asLong))
.addContext("uidSet", UidRange.toString(message.getUidSet()))
.build();
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/StatusProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/StatusProcessor.java
index cf2aade..292269a 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/StatusProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/StatusProcessor.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
import org.slf4j.Logger;
@@ -85,7 +86,7 @@ public class StatusProcessor extends AbstractMailboxProcessor<StatusRequest> {
Long messages = messages(statusDataItems, metaData);
Long recent = recent(statusDataItems, metaData);
MessageUid uidNext = uidNext(statusDataItems, metaData);
- Long uidValidity = uidValidity(statusDataItems, metaData);
+ UidValidity uidValidity = uidValidity(statusDataItems, metaData);
Long unseen = unseen(statusDataItems, metaData);
ModSeq highestModSeq = highestModSeq(statusDataItems, metaData);
return new MailboxStatusResponse(messages, recent, uidNext, highestModSeq, uidValidity, unseen, request.getMailboxName());
@@ -107,7 +108,7 @@ public class StatusProcessor extends AbstractMailboxProcessor<StatusRequest> {
}
}
- private Long uidValidity(StatusDataItems statusDataItems, MessageManager.MetaData metaData) {
+ private UidValidity uidValidity(StatusDataItems statusDataItems, MessageManager.MetaData metaData) {
if (statusDataItems.isUidValidity()) {
return metaData.getUidValidity();
} else {
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java b/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java
index facc364..110feee 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/encode/MailboxStatusResponseEncoderTest.java
@@ -25,6 +25,7 @@ import org.apache.james.imap.encode.base.ByteImapResponseWriter;
import org.apache.james.imap.encode.base.ImapResponseComposerImpl;
import org.apache.james.imap.message.response.MailboxStatusResponse;
import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.model.UidValidity;
import org.junit.Before;
import org.junit.Test;
@@ -50,7 +51,7 @@ public class MailboxStatusResponseEncoderTest {
final Long messages = 2L;
final Long recent = 3L;
final MessageUid uidNext = MessageUid.of(5);
- final Long uidValidity = 7L;
+ final UidValidity uidValidity = UidValidity.of(7L);
final Long unseen = 11L;
final String mailbox = "A mailbox named desire";
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
index 3af65df..61a7580 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
@@ -50,6 +50,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.tests.RecordingMetricFactory;
import org.junit.Before;
import org.junit.Test;
@@ -97,7 +98,7 @@ public class CopyProcessorTest {
MessageManager targetMessageManager = mock(MessageManager.class);
when(mockMailboxManager.getMailbox(INBOX, mailboxSession)).thenReturn(targetMessageManager);
Mailbox mailbox = mock(Mailbox.class);
- when(mailbox.getUidValidity()).thenReturn(58L);
+ when(mailbox.getUidValidity()).thenReturn(UidValidity.of(58L));
when(targetMessageManager.getMailboxEntity()).thenReturn(mailbox);
StatusResponse okResponse = mock(StatusResponse.class);
when(mockStatusResponseFactory.taggedOk(any(Tag.class), any(ImapCommand.class), any(HumanReadableText.class), any(StatusResponse.ResponseCode.class))).thenReturn(okResponse);
@@ -130,7 +131,7 @@ public class CopyProcessorTest {
MessageManager targetMessageManager = mock(MessageManager.class);
when(mockMailboxManager.getMailbox(INBOX, mailboxSession)).thenReturn(targetMessageManager);
Mailbox mailbox = mock(Mailbox.class);
- when(mailbox.getUidValidity()).thenReturn(58L);
+ when(mailbox.getUidValidity()).thenReturn(UidValidity.of(58L));
when(targetMessageManager.getMailboxEntity()).thenReturn(mailbox);
StatusResponse okResponse = mock(StatusResponse.class);
when(mockStatusResponseFactory.taggedOk(any(Tag.class), any(ImapCommand.class), any(HumanReadableText.class), any(StatusResponse.ResponseCode.class))).thenReturn(okResponse);
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
index 20515cb..3fafe5c 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
@@ -53,6 +53,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.metrics.tests.RecordingMetricFactory;
import org.junit.Before;
import org.junit.Test;
@@ -113,7 +114,7 @@ public class MoveProcessorTest {
MessageManager targetMessageManager = mock(MessageManager.class);
when(mockMailboxManager.getMailbox(INBOX, mailboxSession)).thenReturn(targetMessageManager);
Mailbox mailbox = mock(Mailbox.class);
- when(mailbox.getUidValidity()).thenReturn(58L);
+ when(mailbox.getUidValidity()).thenReturn(UidValidity.of(58L));
when(targetMessageManager.getMailboxEntity()).thenReturn(mailbox);
StatusResponse okResponse = mock(StatusResponse.class);
when(mockStatusResponseFactory.taggedOk(any(Tag.class), any(ImapCommand.class), any(HumanReadableText.class), any(StatusResponse.ResponseCode.class))).thenReturn(okResponse);
@@ -146,7 +147,7 @@ public class MoveProcessorTest {
MessageManager targetMessageManager = mock(MessageManager.class);
when(mockMailboxManager.getMailbox(INBOX, mailboxSession)).thenReturn(targetMessageManager);
Mailbox mailbox = mock(Mailbox.class);
- when(mailbox.getUidValidity()).thenReturn(58L);
+ when(mailbox.getUidValidity()).thenReturn(UidValidity.of(58L));
when(targetMessageManager.getMailboxEntity()).thenReturn(mailbox);
StatusResponse okResponse = mock(StatusResponse.class);
when(mockStatusResponseFactory.taggedOk(any(Tag.class), any(ImapCommand.class), any(HumanReadableText.class), any(StatusResponse.ResponseCode.class))).thenReturn(okResponse);
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index 4c885ba..736a0f3 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -50,6 +50,7 @@ import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.event.EventFactory;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
@@ -116,7 +117,7 @@ public class MailboxEventAnalyserTest {
private static final char PATH_DELIMITER = '.';
private static final MailboxPath MAILBOX_PATH = new MailboxPath("namespace", USER, "name");
private static final TestId MAILBOX_ID = TestId.of(36);
- private static final int UID_VALIDITY = 1024;
+ private static final UidValidity UID_VALIDITY = UidValidity.of(1024);
private static final Mailbox DEFAULT_MAILBOX = new Mailbox(MAILBOX_PATH, UID_VALIDITY, MAILBOX_ID);
private static final MailboxListener.Added ADDED = EventFactory.added()
.randomEventId()
diff --git a/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index c1ab9e9..21c33c7 100644
--- a/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ b/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -36,6 +36,7 @@ import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.UidValidity;
import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.apache.james.mailbox.store.mail.MailboxMapper;
@@ -47,7 +48,7 @@ import org.junit.jupiter.api.Test;
public class MailboxManagementTest {
public static final Username USER = Username.of("user");
- public static final int UID_VALIDITY = 10;
+ public static final UidValidity UID_VALIDITY = UidValidity.of(10);
public static final int LIMIT = 1;
private MailboxManagerManagement mailboxManagerManagement;
diff --git a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
index a1234d0..9d66b9b 100644
--- a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
+++ b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
@@ -1,174 +1,175 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-package org.apache.james.pop3server.mailbox;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.FetchGroup;
-import org.apache.james.mailbox.model.MessageRange;
-import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.protocols.pop3.mailbox.Mailbox;
-import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
-
-import com.github.steveash.guavate.Guavate;
-import com.google.common.collect.ImmutableList;
-
-public class MailboxAdapter implements Mailbox {
- private static final FetchGroup FULL_GROUP = FetchGroup.FULL_CONTENT;
- private static final FetchGroup BODY_GROUP = FetchGroup.BODY_CONTENT;
- private static final FetchGroup HEADERS_GROUP = FetchGroup.HEADERS;
- private static final FetchGroup METADATA_GROUP = FetchGroup.MINIMAL;
-
- private final MessageManager manager;
- private final MailboxSession session;
-
- private final MailboxManager mailboxManager;
-
- public MailboxAdapter(MailboxManager mailboxManager, MessageManager manager, MailboxSession session) {
- this.manager = manager;
- this.session = session;
- this.mailboxManager = mailboxManager;
- }
-
- @Override
- public InputStream getMessageBody(String uid) throws IOException {
- try {
- mailboxManager.startProcessingRequest(session);
- Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.parseLong(uid)).toRange(), BODY_GROUP, session);
- if (results.hasNext()) {
- return results.next().getBody().getInputStream();
- } else {
- return null;
- }
- } catch (MailboxException e) {
- throw new IOException("Unable to retrieve message body for uid " + uid, e);
- } finally {
- mailboxManager.endProcessingRequest(session);
- }
- }
-
- @Override
- public InputStream getMessageHeaders(String uid) throws IOException {
- try {
- mailboxManager.startProcessingRequest(session);
- Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.parseLong(uid)).toRange(), HEADERS_GROUP,
- session);
- if (results.hasNext()) {
- return results.next().getHeaders().getInputStream();
- } else {
- return null;
- }
- } catch (MailboxException e) {
- throw new IOException("Unable to retrieve message header for uid " + uid, e);
- } finally {
- mailboxManager.endProcessingRequest(session);
- }
- }
-
- @Override
- public InputStream getMessage(String uid) throws IOException {
- try {
- mailboxManager.startProcessingRequest(session);
- Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.parseLong(uid)).toRange(), FULL_GROUP, session);
- if (results.hasNext()) {
- return results.next().getFullContent().getInputStream();
- } else {
- return null;
- }
- } catch (MailboxException e) {
- throw new IOException("Unable to retrieve message for uid " + uid, e);
- } finally {
- mailboxManager.endProcessingRequest(session);
- }
- }
-
- @Override
- public List<MessageMetaData> getMessages() throws IOException {
- try {
- mailboxManager.startProcessingRequest(session);
- Iterator<MessageResult> results = manager.getMessages(MessageRange.all(), METADATA_GROUP, session);
- List<MessageMetaData> mList = new ArrayList<>();
- while (results.hasNext()) {
- MessageResult result = results.next();
- MessageMetaData metaData = new MessageMetaData(String.valueOf(result.getUid().asLong()), result.getSize());
- mList.add(metaData);
- }
- return ImmutableList.copyOf(mList);
- } catch (MailboxException e) {
- throw new IOException("Unable to retrieve messages", e);
- } finally {
- mailboxManager.endProcessingRequest(session);
- }
- }
-
- @Override
- public void remove(String... uids) throws IOException {
- List<MessageUid> uidList = Arrays.stream(uids)
- .map(uid -> MessageUid.of(Long.parseLong(uid)))
- .collect(Guavate.toImmutableList());
-
- try {
- mailboxManager.startProcessingRequest(session);
- manager.delete(uidList, session);
- } catch (MailboxException e) {
- String serializedUids = uidList
- .stream()
- .map(uid -> uid.toString())
- .collect(Collectors.joining(",", "[", "]"));
-
- throw new IOException("Unable to remove messages: " + serializedUids, e);
- } finally {
- mailboxManager.endProcessingRequest(session);
- }
- }
-
- @Override
- public String getIdentifier() throws IOException {
- try {
- mailboxManager.startProcessingRequest(session);
- long validity = manager.getMailboxEntity()
- .getUidValidity();
- return Long.toString(validity);
- } catch (MailboxException e) {
- throw new IOException("Unable to retrieve indentifier for mailbox", e);
- } finally {
- mailboxManager.endProcessingRequest(session);
- }
- }
-
- @Override
- public void close() throws IOException {
- try {
- mailboxManager.logout(session);
- } finally {
- mailboxManager.endProcessingRequest(session);
- }
- }
-}
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.pop3server.mailbox;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.MessageRange;
+import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.protocols.pop3.mailbox.Mailbox;
+import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
+
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
+
+public class MailboxAdapter implements Mailbox {
+ private static final FetchGroup FULL_GROUP = FetchGroup.FULL_CONTENT;
+ private static final FetchGroup BODY_GROUP = FetchGroup.BODY_CONTENT;
+ private static final FetchGroup HEADERS_GROUP = FetchGroup.HEADERS;
+ private static final FetchGroup METADATA_GROUP = FetchGroup.MINIMAL;
+
+ private final MessageManager manager;
+ private final MailboxSession session;
+
+ private final MailboxManager mailboxManager;
+
+ public MailboxAdapter(MailboxManager mailboxManager, MessageManager manager, MailboxSession session) {
+ this.manager = manager;
+ this.session = session;
+ this.mailboxManager = mailboxManager;
+ }
+
+ @Override
+ public InputStream getMessageBody(String uid) throws IOException {
+ try {
+ mailboxManager.startProcessingRequest(session);
+ Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.parseLong(uid)).toRange(), BODY_GROUP, session);
+ if (results.hasNext()) {
+ return results.next().getBody().getInputStream();
+ } else {
+ return null;
+ }
+ } catch (MailboxException e) {
+ throw new IOException("Unable to retrieve message body for uid " + uid, e);
+ } finally {
+ mailboxManager.endProcessingRequest(session);
+ }
+ }
+
+ @Override
+ public InputStream getMessageHeaders(String uid) throws IOException {
+ try {
+ mailboxManager.startProcessingRequest(session);
+ Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.parseLong(uid)).toRange(), HEADERS_GROUP,
+ session);
+ if (results.hasNext()) {
+ return results.next().getHeaders().getInputStream();
+ } else {
+ return null;
+ }
+ } catch (MailboxException e) {
+ throw new IOException("Unable to retrieve message header for uid " + uid, e);
+ } finally {
+ mailboxManager.endProcessingRequest(session);
+ }
+ }
+
+ @Override
+ public InputStream getMessage(String uid) throws IOException {
+ try {
+ mailboxManager.startProcessingRequest(session);
+ Iterator<MessageResult> results = manager.getMessages(MessageUid.of(Long.parseLong(uid)).toRange(), FULL_GROUP, session);
+ if (results.hasNext()) {
+ return results.next().getFullContent().getInputStream();
+ } else {
+ return null;
+ }
+ } catch (MailboxException e) {
+ throw new IOException("Unable to retrieve message for uid " + uid, e);
+ } finally {
+ mailboxManager.endProcessingRequest(session);
+ }
+ }
+
+ @Override
+ public List<MessageMetaData> getMessages() throws IOException {
+ try {
+ mailboxManager.startProcessingRequest(session);
+ Iterator<MessageResult> results = manager.getMessages(MessageRange.all(), METADATA_GROUP, session);
+ List<MessageMetaData> mList = new ArrayList<>();
+ while (results.hasNext()) {
+ MessageResult result = results.next();
+ MessageMetaData metaData = new MessageMetaData(String.valueOf(result.getUid().asLong()), result.getSize());
+ mList.add(metaData);
+ }
+ return ImmutableList.copyOf(mList);
+ } catch (MailboxException e) {
+ throw new IOException("Unable to retrieve messages", e);
+ } finally {
+ mailboxManager.endProcessingRequest(session);
+ }
+ }
+
+ @Override
+ public void remove(String... uids) throws IOException {
+ List<MessageUid> uidList = Arrays.stream(uids)
+ .map(uid -> MessageUid.of(Long.parseLong(uid)))
+ .collect(Guavate.toImmutableList());
+
+ try {
+ mailboxManager.startProcessingRequest(session);
+ manager.delete(uidList, session);
+ } catch (MailboxException e) {
+ String serializedUids = uidList
+ .stream()
+ .map(uid -> uid.toString())
+ .collect(Collectors.joining(",", "[", "]"));
+
+ throw new IOException("Unable to remove messages: " + serializedUids, e);
+ } finally {
+ mailboxManager.endProcessingRequest(session);
+ }
+ }
+
+ @Override
+ public String getIdentifier() throws IOException {
+ try {
+ mailboxManager.startProcessingRequest(session);
+ long validity = manager.getMailboxEntity()
+ .getUidValidity()
+ .asLong();
+ return Long.toString(validity);
+ } catch (MailboxException e) {
+ throw new IOException("Unable to retrieve indentifier for mailbox", e);
+ } finally {
+ mailboxManager.endProcessingRequest(session);
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ try {
+ mailboxManager.logout(session);
+ } finally {
+ mailboxManager.endProcessingRequest(session);
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org