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 2019/11/28 02:12:17 UTC
[james-project] branch master updated (970357f -> e8c2f63)
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.
from 970357f [Refactoring] Correct ModSeq mailbox json serializer
new 3d422bf JAMES-2989 StoreMessageIdManager should comply to fetchGroup read level
new a311e9e JAMES-2989 FetchGroupImpl constructors should be private
new 6ee07f3 JAMES-2989 MimePathImpl class should be located in mailbox-api
new b4d98b1 JAMES-2989 Rework equals & hashcode for MimePathImpl
new 95cb9dc JAMES-2989 Rework toString for MimePathImpl
new 11424cc JAMES-2989 POJOify MimePath
new 9401010 JAMES-2989 Remove unused PartContentDescriptorImpl constructor
new 844c0ad JAMES-2989 POP3 should rely on mailbox-api fetch groups
new f608394 JAMES-2989 Mailbox copier should rely on mailbox-api fetch groups
new a19703b JAMES-2989 POJOify PartContentDescriptor
new ca808dc JAMES-2989 StoreMailboxMessageResultIteratorTest should use FetchGroupImpl
new 4a44dc8 JAMES-2989 POJOify FetchGroup
new 19940b3 JAMES-2989 FetchGroup & PartContentDescriptor should be immutable
new 9e5ddfb JAMES-2989 Tests for FetchGroupConverter
new c80a852 JAMES-2989 Little refactor for FetchGroupConverter
new 6c9350f JAMES-2989 POJOify mailbox-api headers
new b0dc0b3 JAMES-2988 Move bitewise logic with FetchGroup models
new be28f6e JAMES-2989 Rework toString for MimePathImpl
new 575cac3 JAMES-2988 Full unit test coverage for FetchGroup generation in IMAP
new 362bc72 s/JAMES-2988 FetchGroup::or/FetchGroup::with
new 77d5ad0 JAMES-2988 Fix FetchGroup javadoc
new b9af21b JAMES-2988 Restrict MessageView to the minimal one in GetResponse
new e8c2f63 JAMES-2988 Use the smallest fetch group possible upon GetMessages
The 23 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../listeners/SetCustomFlagOnBigMessagesTest.java | 6 +-
.../org/apache/james/mailbox/MessageIdManager.java | 2 +-
.../org/apache/james/mailbox/MessageManager.java | 2 +-
.../org/apache/james/mailbox/model/FetchGroup.java | 156 +++++++++++++++++++++
.../apache/james/mailbox/model/FetchGroupImpl.java | 98 -------------
.../org/apache/james/mailbox/model/Header.java} | 23 ++-
.../org/apache/james/mailbox/model/Headers.java | 2 -
.../apache/james/mailbox/model/MessageResult.java | 113 ---------------
.../model/{MessageIdDto.java => MimePath.java} | 61 ++++----
...criptorImpl.java => PartContentDescriptor.java} | 62 +++++---
.../apache/james/mailbox/MailboxManagerTest.java | 10 +-
.../apache/james/mailbox/model/FetchGroupTest.java | 131 +++++++++++++++++
.../apache/james/mailbox/model/MimePathTest.java | 37 +++--
.../PartContentDescriptorTest.java} | 36 ++---
.../james/mailbox/backup/DefaultMailboxBackup.java | 4 +-
.../james/vault/DeletedMessageVaultHookTest.java | 4 +-
.../james/mailbox/store/LazyMimeDescriptor.java | 2 +-
.../james/mailbox/store/MessageResultImpl.java | 13 +-
.../james/mailbox/store/MimeDescriptorImpl.java | 22 +--
.../apache/james/mailbox/store/ResultUtils.java | 64 ++++-----
.../james/mailbox/store/StoreBlobManager.java | 4 +-
.../james/mailbox/store/StoreMessageIdManager.java | 10 +-
.../james/mailbox/store/StoreMessageManager.java | 2 +-
.../mailbox/store/StoreMessageResultIterator.java | 53 +------
.../mailbox/store/mail/FetchGroupConverter.java | 62 ++++++++
.../mailbox/store/search/MessageSearches.java | 2 +-
.../comparator/AbstractHeaderComparator.java | 2 +-
.../mailbox/store/streaming/FullByteContent.java | 5 +-
.../store/streaming/PartContentBuilder.java | 16 +--
.../store/AbstractCombinationManagerTest.java | 45 +++---
.../AbstractMessageIdManagerSideEffectTest.java | 18 +--
.../store/AbstractMessageIdManagerStorageTest.java | 102 +++++++-------
.../PartContentBuilderComplexMultipartTest.java | 4 +-
...PartContentBuilderMultipartAlternativeTest.java | 4 +-
.../james/mailbox/store/StoreBlobManagerTest.java | 18 +--
.../StoreMailboxMessageResultIteratorTest.java | 24 +---
.../store/mail/FetchGroupConverterTest.java | 121 ++++++++++++++++
.../mailbox/tools/copier/MailboxCopierImpl.java | 20 +--
protocols/imap/pom.xml | 5 +
.../apache/james/imap/api/message/FetchData.java | 33 +++--
.../imap/processor/AbstractMailboxProcessor.java | 4 +-
.../james/imap/processor/SearchProcessor.java | 4 +-
.../james/imap/processor/StoreProcessor.java | 13 +-
.../imap/processor/fetch/EnvelopeBuilder.java | 6 +-
.../imap/processor/fetch/FetchDataConverter.java | 83 +++++++++++
.../james/imap/processor/fetch/FetchProcessor.java | 60 +-------
.../imap/processor/fetch/FetchResponseBuilder.java | 34 ++---
.../imap/processor/fetch/HeaderBodyElement.java | 6 +-
.../imap/processor/fetch/MessageResultUtils.java | 46 +++---
.../imap/processor/fetch/MimeBodyElement.java | 12 +-
.../james/imap/processor/fetch/MimePathImpl.java | 76 ----------
.../processor/fetch/FetchDataConverterTest.java | 79 +++++++++++
.../fetch/MailboxMessageResultUtilsTest.java | 54 ++-----
.../apache/james/jmap/draft/MessageIdProbe.java | 6 +-
.../mailets/delivery/MailboxAppenderTest.java | 11 +-
.../jmap/draft/methods/GetMessagesMethod.java | 22 +--
.../james/jmap/draft/methods/ReferenceUpdater.java | 6 +-
.../james/jmap/draft/methods/SendMDNProcessor.java | 4 +-
.../draft/methods/SetMessagesUpdateProcessor.java | 6 +-
.../james/jmap/draft/model/MessageProperties.java | 16 ++-
.../message/view/MessageHeaderViewFactory.java | 4 +-
.../message/view/MessageMetadataViewFactory.java | 5 +-
.../message/view/MetaMessageViewFactory.java} | 40 +++---
.../jmap/draft/send/PostDequeueDecorator.java | 4 +-
.../jmap/draft/methods/GetMessagesMethodTest.java | 129 ++++++++++++++++-
.../message/view/MessageFullViewFactoryTest.java | 6 +-
.../message/view/MessageHeaderViewFactoryTest.java | 6 +-
.../view/MessageMetadataViewFactoryTest.java | 6 +-
.../jmap/draft/send/PostDequeueDecoratorTest.java | 24 ++--
.../james/pop3server/mailbox/MailboxAdapter.java | 49 +------
.../routes/DeletedMessagesVaultRoutesTest.java | 4 +-
71 files changed, 1268 insertions(+), 955 deletions(-)
create mode 100644 mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
delete mode 100644 mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
rename mailbox/{store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java => api/src/main/java/org/apache/james/mailbox/model/Header.java} (84%)
copy mailbox/api/src/main/java/org/apache/james/mailbox/model/{MessageIdDto.java => MimePath.java} (56%)
rename mailbox/api/src/main/java/org/apache/james/mailbox/model/{PartContentDescriptorImpl.java => PartContentDescriptor.java} (54%)
create mode 100644 mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
copy server/container/util/src/test/java/org/apache/james/util/streams/OffsetTest.java => mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java (68%)
copy mailbox/api/src/test/java/org/apache/james/mailbox/{ModSeqTest.java => model/PartContentDescriptorTest.java} (63%)
create mode 100644 mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
create mode 100644 mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java
create mode 100644 protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java
delete mode 100644 protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimePathImpl.java
create mode 100644 protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java
copy server/protocols/{webadmin/webadmin-cassandra-data/src/main/java/org/apache/james/webadmin/service/CassandraMappingsService.java => jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java} (51%)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 06/23: JAMES-2989 POJOify MimePath
Posted by bt...@apache.org.
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 11424cc5fe78504ab510266c0d2a2c4d6537ef80
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:28:04 2019 +0700
JAMES-2989 POJOify MimePath
---
.../apache/james/mailbox/model/FetchGroupImpl.java | 2 --
.../apache/james/mailbox/model/MessageResult.java | 14 ------------
.../model/{MimePathImpl.java => MimePath.java} | 25 ++++++++++++++++------
.../mailbox/model/PartContentDescriptorImpl.java | 2 --
.../{MimePathImplTest.java => MimePathTest.java} | 10 ++++-----
.../james/mailbox/store/MessageResultImpl.java | 1 +
.../apache/james/mailbox/store/ResultUtils.java | 2 +-
.../mailbox/store/StoreMessageResultIterator.java | 1 +
.../james/imap/processor/fetch/FetchProcessor.java | 5 ++---
.../imap/processor/fetch/FetchResponseBuilder.java | 10 ++++-----
10 files changed, 34 insertions(+), 38 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
index d3b8d62..7cafe91 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
@@ -22,8 +22,6 @@ package org.apache.james.mailbox.model;
import java.util.HashSet;
import java.util.Set;
-import org.apache.james.mailbox.model.MessageResult.MimePath;
-
/**
* Specifies a fetch group.
*/
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
index 2cb24c1..7ed64f5 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
@@ -266,19 +266,5 @@ public interface MessageResult extends Comparable<MessageResult> {
* Indicates if the message have attachments, regardless of loaded attachments.
*/
boolean hasAttachments() throws MailboxException;
-
- /**
- * Describes a path within a multipart MIME message. All implementations
- * must implement equals. Two paths are equal if and only if each position
- * is identical.
- */
- interface MimePath {
- /**
- * Gets the positions of each part in the path.
- *
- * @return part positions describing the path
- */
- int[] getPositions();
- }
}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
similarity index 73%
rename from mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
rename to mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
index 0548429..f77a5ea 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
@@ -23,23 +23,36 @@
package org.apache.james.mailbox.model;
import java.util.Arrays;
+import java.util.List;
-public class MimePathImpl implements MessageResult.MimePath {
+import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Joiner;
+
+/**
+ * Describes a path within a multipart MIME message. All implementations
+ * must implement equals. Two paths are equal if and only if each position
+ * is identical.
+ */
+public final class MimePath {
private final int[] positions;
- public MimePathImpl(int[] positions) {
- this.positions = positions;
+ public MimePath(int[] positions) {
+ this.positions = Arrays.copyOf(positions, positions.length);
}
- @Override
+ /**
+ * Gets the positions of each part in the path.
+ *
+ * @return part positions describing the path
+ */
public int[] getPositions() {
return positions;
}
@Override
public final boolean equals(Object o) {
- if (o instanceof MimePathImpl) {
- MimePathImpl mimePath = (MimePathImpl) o;
+ if (o instanceof MimePath) {
+ MimePath mimePath = (MimePath) o;
return Arrays.equals(this.positions, mimePath.positions);
}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
index 6072220..e0761f4 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
@@ -22,8 +22,6 @@ package org.apache.james.mailbox.model;
import java.util.Objects;
import org.apache.james.mailbox.model.MessageResult.FetchGroup.PartContentDescriptor;
-import org.apache.james.mailbox.model.MessageResult.MimePath;
-
public class PartContentDescriptorImpl implements PartContentDescriptor {
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
similarity index 88%
rename from mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
rename to mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
index ff649d2..3715a40 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
@@ -25,31 +25,31 @@ import org.junit.jupiter.api.Test;
import nl.jqno.equalsverifier.EqualsVerifier;
-class MimePathImplTest {
+class MimePathTest {
@Test
void shouldMatchBeanContract() {
- EqualsVerifier.forClass(MimePathImpl.class)
+ EqualsVerifier.forClass(MimePath.class)
.verify();
}
@Test
void toStringWhenEmpty() {
int[] empty = {};
- assertThat(new MimePathImpl(empty).toString())
+ assertThat(new MimePath(empty).toString())
.isEqualTo("MIMEPath:[]");
}
@Test
void toStringWhenSingle() {
int[] single = {1};
- assertThat(new MimePathImpl(single).toString())
+ assertThat(new MimePath(single).toString())
.isEqualTo("MIMEPath:[1]");
}
@Test
void toStringWhenMany() {
int[] many = {1, 2, 3};
- assertThat(new MimePathImpl(many).toString())
+ assertThat(new MimePath(many).toString())
.isEqualTo("MIMEPath:[1, 2, 3]");
}
}
\ No newline at end of file
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
index 0e4e4a1..46a92c9 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MimeDescriptor;
+import org.apache.james.mailbox.model.MimePath;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.streaming.InputStreamContent;
import org.apache.james.mailbox.store.streaming.InputStreamContent.Type;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index 96a64ac..e83d74d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -29,7 +29,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Content;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResult.FetchGroup;
-import org.apache.james.mailbox.model.MessageResult.MimePath;
+import org.apache.james.mailbox.model.MimePath;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.streaming.PartContentBuilder;
import org.apache.james.mime4j.MimeException;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
index c18d1f8..aec7a7d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.MimeDescriptor;
+import org.apache.james.mailbox.model.MimePath;
import org.apache.james.mailbox.store.mail.MessageMapper;
import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
index ebe12e5..03ba656 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
@@ -47,9 +47,8 @@ import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResult.FetchGroup;
-import org.apache.james.mailbox.model.MessageResult.MimePath;
import org.apache.james.mailbox.model.MessageResultIterator;
-import org.apache.james.mailbox.model.MimePathImpl;
+import org.apache.james.mailbox.model.MimePath;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
import org.slf4j.Logger;
@@ -234,7 +233,7 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
if (isBase) {
result.or(content);
} else {
- MimePath mimePath = new MimePathImpl(path);
+ MimePath mimePath = new MimePath(path);
result.addPartContent(mimePath, content);
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
index 29b9535..36329fd 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
@@ -46,7 +46,7 @@ import org.apache.james.mailbox.exception.MessageRangeException;
import org.apache.james.mailbox.model.Content;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MimePathImpl;
+import org.apache.james.mailbox.model.MimePath;
public final class FetchResponseBuilder {
@@ -290,7 +290,7 @@ public final class FetchResponseBuilder {
throw new MailboxException("Unable to get TEXT of body", e);
}
} else {
- MessageResult.MimePath mimePath = new MimePathImpl(path);
+ MimePath mimePath = new MimePath(path);
body = messageResult.getBody(mimePath);
}
if (body == null) {
@@ -378,14 +378,14 @@ public final class FetchResponseBuilder {
if (isBase) {
headers = messageResult.getHeaders().headers();
} else {
- MessageResult.MimePath mimePath = new MimePathImpl(path);
+ MimePath mimePath = new MimePath(path);
headers = messageResult.iterateHeaders(mimePath);
}
return headers;
}
private Iterator<MessageResult.Header> getMimeHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
- MessageResult.MimePath mimePath = new MimePathImpl(path);
+ MimePath mimePath = new MimePath(path);
return messageResult.iterateMimeHeaders(mimePath);
}
@@ -400,7 +400,7 @@ public final class FetchResponseBuilder {
throw new MailboxException("Unable to get content", e);
}
} else {
- MessageResult.MimePath mimePath = new MimePathImpl(path);
+ MimePath mimePath = new MimePath(path);
full = messageResult.getMimeBody(mimePath);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 01/23: JAMES-2989 StoreMessageIdManager should
comply to fetchGroup read level
Posted by bt...@apache.org.
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 3d422bf11f2b596c69e3576a4a16c182659f27ed
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Nov 22 14:59:05 2019 +0700
JAMES-2989 StoreMessageIdManager should comply to fetchGroup read level
---
.../james/mailbox/store/StoreMessageIdManager.java | 5 +-
.../mailbox/store/StoreMessageResultIterator.java | 47 +--------------
.../mailbox/store/mail/FetchGroupConverter.java | 69 ++++++++++++++++++++++
.../apache/james/jmap/draft/MessageIdProbe.java | 2 +-
4 files changed, 76 insertions(+), 47 deletions(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index bf3d810..229638e 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -55,6 +55,7 @@ import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.event.EventFactory;
+import org.apache.james.mailbox.store.mail.FetchGroupConverter;
import org.apache.james.mailbox.store.mail.MailboxMapper;
import org.apache.james.mailbox.store.mail.MessageIdMapper;
import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -137,7 +138,9 @@ public class StoreMessageIdManager implements MessageIdManager {
@Override
public List<MessageResult> getMessages(List<MessageId> messageIds, MessageResult.FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
- List<MailboxMessage> messageList = messageIdMapper.find(messageIds, MessageMapper.FetchType.Full);
+
+ MessageMapper.FetchType fetchType = FetchGroupConverter.getFetchType(fetchGroup);
+ List<MailboxMessage> messageList = messageIdMapper.find(messageIds, fetchType);
ImmutableSet<MailboxId> allowedMailboxIds = getAllowedMailboxIds(mailboxSession, messageList, Right.Read);
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
index f2cb048..c18d1f8 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
@@ -18,6 +18,8 @@
****************************************************************/
package org.apache.james.mailbox.store;
+import static org.apache.james.mailbox.store.mail.FetchGroupConverter.getFetchType;
+
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -76,51 +78,6 @@ public class StoreMessageResultIterator implements MessageResultIterator {
LOGGER.debug("batchSizes used: {}", batchSizes);
}
- /**
- * Use the passed {@link FetchGroup} and calculate the right
- * {@link FetchType} for it
- */
- private static FetchType getFetchType(FetchGroup group) {
- int content = group.content();
- boolean headers = false;
- boolean body = false;
- boolean full = false;
-
- if ((content & FetchGroup.HEADERS) > 0) {
- headers = true;
- content -= FetchGroup.HEADERS;
- }
- if (group.getPartContentDescriptors().size() > 0) {
- full = true;
- }
- if ((content & FetchGroup.BODY_CONTENT) > 0) {
- body = true;
- content -= FetchGroup.BODY_CONTENT;
- }
-
- if ((content & FetchGroup.FULL_CONTENT) > 0) {
- full = true;
- content -= FetchGroup.FULL_CONTENT;
- }
-
- if ((content & FetchGroup.MIME_DESCRIPTOR) > 0) {
- // If we need the mimedescriptor we MAY need the full content later
- // too.
- // This gives us no other choice then request it
- full = true;
- content -= FetchGroup.MIME_DESCRIPTOR;
- }
- if (full || (body && headers)) {
- return FetchType.Full;
- } else if (body) {
- return FetchType.Body;
- } else if (headers) {
- return FetchType.Headers;
- } else {
- return FetchType.Metadata;
- }
- }
-
@Override
public boolean hasNext() {
if (cursor.compareTo(to) > 0) {
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
new file mode 100644
index 0000000..d280172
--- /dev/null
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
@@ -0,0 +1,69 @@
+/****************************************************************
+ * 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.mailbox.store.mail;
+
+import org.apache.james.mailbox.model.MessageResult;
+
+public class FetchGroupConverter {
+ /**
+ * Use the passed {@link MessageResult.FetchGroup} and calculate the right
+ * {@link MessageMapper.FetchType} for it
+ */
+ public static MessageMapper.FetchType getFetchType(MessageResult.FetchGroup group) {
+ int content = group.content();
+ boolean headers = false;
+ boolean body = false;
+ boolean full = false;
+
+ if ((content & MessageResult.FetchGroup.HEADERS) > 0) {
+ headers = true;
+ content -= MessageResult.FetchGroup.HEADERS;
+ }
+ if (group.getPartContentDescriptors().size() > 0) {
+ full = true;
+ }
+ if ((content & MessageResult.FetchGroup.BODY_CONTENT) > 0) {
+ body = true;
+ content -= MessageResult.FetchGroup.BODY_CONTENT;
+ }
+
+ if ((content & MessageResult.FetchGroup.FULL_CONTENT) > 0) {
+ full = true;
+ content -= MessageResult.FetchGroup.FULL_CONTENT;
+ }
+
+ if ((content & MessageResult.FetchGroup.MIME_DESCRIPTOR) > 0) {
+ // If we need the mimedescriptor we MAY need the full content later
+ // too.
+ // This gives us no other choice then request it
+ full = true;
+ content -= MessageResult.FetchGroup.MIME_DESCRIPTOR;
+ }
+ if (full || (body && headers)) {
+ return MessageMapper.FetchType.Full;
+ } else if (body) {
+ return MessageMapper.FetchType.Body;
+ } else if (headers) {
+ return MessageMapper.FetchType.Headers;
+ } else {
+ return MessageMapper.FetchType.Metadata;
+ }
+ }
+}
diff --git a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java
index e6703fe..a2ae27d 100644
--- a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java
+++ b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java
@@ -68,7 +68,7 @@ public class MessageIdProbe implements GuiceProbe {
MailboxSession mailboxSession = mailboxManager.createSystemSession(username);
List<MessageResult> messages = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroupImpl.FULL_CONTENT,
mailboxSession);
return messages.stream()
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 12/23: JAMES-2989 POJOify FetchGroup
Posted by bt...@apache.org.
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 4a44dc857120f9d43eab97c6603b5fc9f5e29321
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:59:52 2019 +0700
JAMES-2989 POJOify FetchGroup
---
.../listeners/SetCustomFlagOnBigMessagesTest.java | 6 +-
.../org/apache/james/mailbox/MessageIdManager.java | 2 +-
.../org/apache/james/mailbox/MessageManager.java | 2 +-
.../model/{FetchGroupImpl.java => FetchGroup.java} | 53 ++++++++---
.../org/apache/james/mailbox/model/Headers.java | 1 -
.../apache/james/mailbox/model/MessageResult.java | 51 -----------
.../james/mailbox/model/PartContentDescriptor.java | 14 +--
.../apache/james/mailbox/MailboxManagerTest.java | 10 +-
.../james/mailbox/backup/DefaultMailboxBackup.java | 4 +-
.../james/vault/DeletedMessageVaultHookTest.java | 4 +-
.../james/mailbox/store/MessageResultImpl.java | 11 ++-
.../apache/james/mailbox/store/ResultUtils.java | 28 +++---
.../james/mailbox/store/StoreBlobManager.java | 4 +-
.../james/mailbox/store/StoreMessageIdManager.java | 5 +-
.../james/mailbox/store/StoreMessageManager.java | 2 +-
.../mailbox/store/StoreMessageResultIterator.java | 4 +-
.../mailbox/store/mail/FetchGroupConverter.java | 22 ++---
.../store/AbstractCombinationManagerTest.java | 45 +++++----
.../AbstractMessageIdManagerSideEffectTest.java | 18 ++--
.../store/AbstractMessageIdManagerStorageTest.java | 102 ++++++++++-----------
.../james/mailbox/store/StoreBlobManagerTest.java | 18 ++--
.../StoreMailboxMessageResultIteratorTest.java | 10 +-
.../mailbox/tools/copier/MailboxCopierImpl.java | 4 +-
.../imap/processor/AbstractMailboxProcessor.java | 4 +-
.../james/imap/processor/SearchProcessor.java | 4 +-
.../james/imap/processor/StoreProcessor.java | 13 ++-
.../james/imap/processor/fetch/FetchProcessor.java | 21 ++---
.../apache/james/jmap/draft/MessageIdProbe.java | 6 +-
.../mailets/delivery/MailboxAppenderTest.java | 10 +-
.../jmap/draft/methods/GetMessagesMethod.java | 4 +-
.../james/jmap/draft/methods/ReferenceUpdater.java | 4 +-
.../james/jmap/draft/methods/SendMDNProcessor.java | 4 +-
.../draft/methods/SetMessagesUpdateProcessor.java | 6 +-
.../jmap/draft/send/PostDequeueDecorator.java | 4 +-
.../message/view/MessageFullViewFactoryTest.java | 6 +-
.../message/view/MessageHeaderViewFactoryTest.java | 6 +-
.../view/MessageMetadataViewFactoryTest.java | 6 +-
.../jmap/draft/send/PostDequeueDecoratorTest.java | 24 ++---
.../james/pop3server/mailbox/MailboxAdapter.java | 11 +--
.../routes/DeletedMessagesVaultRoutesTest.java | 4 +-
40 files changed, 264 insertions(+), 293 deletions(-)
diff --git a/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java b/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java
index be8f918..e3340d5 100644
--- a/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java
+++ b/examples/custom-listeners/src/test/java/org/apache/james/examples/custom/listeners/SetCustomFlagOnBigMessagesTest.java
@@ -37,7 +37,7 @@ import org.apache.james.mailbox.events.Event;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageMetaData;
@@ -125,7 +125,7 @@ class SetCustomFlagOnBigMessagesTest {
mailboxSession);
MessageResult addedMessage = inboxMessageManager
- .getMessages(MessageRange.one(composedIdOfSmallMessage.getUid()), FetchGroupImpl.MINIMAL, mailboxSession)
+ .getMessages(MessageRange.one(composedIdOfSmallMessage.getUid()), FetchGroup.MINIMAL, mailboxSession)
.next();
MessageMetaData oneMBMetaData = new MessageMetaData(addedMessage.getUid(), addedMessage.getModSeq(),
addedMessage.getFlags(), ONE_MB, addedMessage.getInternalDate(), addedMessage.getMessageId());
@@ -181,7 +181,7 @@ class SetCustomFlagOnBigMessagesTest {
private Stream<Flags> getMessageFlags(MessageUid messageUid) throws Exception {
return Streams.stream(inboxMessageManager
- .getMessages(MessageRange.one(messageUid), FetchGroupImpl.MINIMAL, mailboxSession))
+ .getMessages(MessageRange.one(messageUid), FetchGroup.MINIMAL, mailboxSession))
.map(MessageResult::getFlags);
}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java
index c61581d..7b69892 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageIdManager.java
@@ -28,10 +28,10 @@ import javax.mail.Flags;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.DeleteResult;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import com.google.common.collect.ImmutableList;
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 58a887e..e91c432 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
@@ -38,6 +38,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.UnsupportedCriteriaException;
import org.apache.james.mailbox.exception.UnsupportedRightException;
import org.apache.james.mailbox.model.ComposedMessageId;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxCounters;
@@ -45,7 +46,6 @@ import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.SearchQuery;
import org.apache.james.mime4j.dom.Message;
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
similarity index 62%
rename from mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
rename to mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
index c9dd1c7..40b5fae 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
@@ -23,32 +23,51 @@ import java.util.HashSet;
import java.util.Set;
/**
- * Specifies a fetch group.
+ * Indicates the results fetched.
*/
-public class FetchGroupImpl implements MessageResult.FetchGroup {
-
- public static final FetchGroupImpl MINIMAL = new FetchGroupImpl(MessageResult.FetchGroup.MINIMAL);
-
- public static final FetchGroupImpl HEADERS = new FetchGroupImpl(MessageResult.FetchGroup.HEADERS);
-
- public static final FetchGroupImpl FULL_CONTENT = new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT);
-
- public static final FetchGroupImpl BODY_CONTENT = new FetchGroupImpl(MessageResult.FetchGroup.BODY_CONTENT);
+public class FetchGroup {
+ /**
+ * For example: could have best performance when doing store and then
+ * forget. UIDs are always returned
+ */
+ public static final int MINIMAL_MASK = 0x00;
+ public static final int MIME_DESCRIPTOR_MASK = 0x01;
+ public static final int HEADERS_MASK = 0x100;
+ public static final int FULL_CONTENT_MASK = 0x200;
+ public static final int BODY_CONTENT_MASK = 0x400;
+ public static final int MIME_HEADERS_MASK = 0x800;
+ public static final int MIME_CONTENT_MASK = 0x1000;
+
+ public static final FetchGroup MINIMAL = new FetchGroup(MINIMAL_MASK);
+ public static final FetchGroup HEADERS = new FetchGroup(HEADERS_MASK);
+ public static final FetchGroup FULL_CONTENT = new FetchGroup(FULL_CONTENT_MASK);
+ public static final FetchGroup BODY_CONTENT = new FetchGroup(BODY_CONTENT_MASK);
private int content;
private Set<PartContentDescriptor> partContentDescriptors;
- private FetchGroupImpl(int content) {
+ private FetchGroup(int content) {
this(content, new HashSet<>());
}
- private FetchGroupImpl(int content, Set<PartContentDescriptor> partContentDescriptors) {
+ private FetchGroup(int content, Set<PartContentDescriptor> partContentDescriptors) {
this.content = content;
this.partContentDescriptors = partContentDescriptors;
}
- @Override
+ /**
+ * Contents to be fetched. Composed bitwise.
+ *
+ * @return bitwise description
+ * @see #MINIMAL_MASK
+ * @see #MIME_DESCRIPTOR_MASK
+ * @see #HEADERS_MASK
+ * @see #FULL_CONTENT_MASK
+ * @see #BODY_CONTENT_MASK
+ * @see #MIME_HEADERS_MASK
+ * @see #MIME_CONTENT_MASK
+ */
public int content() {
return content;
}
@@ -61,7 +80,13 @@ public class FetchGroupImpl implements MessageResult.FetchGroup {
return "Fetch " + content;
}
- @Override
+ /**
+ * Gets contents to be fetched for contained parts. For each part to be
+ * contained, only one descriptor should be contained.
+ *
+ * @return <code>Set</code> of {@link PartContentDescriptor}, or null if
+ * there is no part content to be fetched
+ */
public Set<PartContentDescriptor> getPartContentDescriptors() {
return partContentDescriptors;
}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
index 12e6007..52b959b 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.model;
import java.util.Iterator;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MessageResult.Header;
public interface Headers extends Content {
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
index 12a4ae8..c85df56 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
@@ -23,7 +23,6 @@ import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
import javax.mail.Flags;
@@ -75,56 +74,6 @@ public interface MessageResult extends Comparable<MessageResult> {
ModSeq getModSeq();
- /**
- * Indicates the results fetched.
- */
- interface FetchGroup {
-
- /**
- * For example: could have best performance when doing store and then
- * forget. UIDs are always returned
- */
- int MINIMAL = 0x00;
-
- /**
- *
- */
- int MIME_DESCRIPTOR = 0x01;
-
- int HEADERS = 0x100;
-
- int FULL_CONTENT = 0x200;
-
- int BODY_CONTENT = 0x400;
-
- int MIME_HEADERS = 0x800;
-
- int MIME_CONTENT = 0x1000;
-
- /**
- * Contents to be fetched. Composed bitwise.
- *
- * @return bitwise description
- * @see #MINIMAL
- * @see #MIME_DESCRIPTOR
- * @see #HEADERS
- * @see #FULL_CONTENT
- * @see #BODY_CONTENT
- * @see #MIME_HEADERS
- * @see #MIME_CONTENT
- */
- int content();
-
- /**
- * Gets contents to be fetched for contained parts. For each part to be
- * contained, only one descriptor should be contained.
- *
- * @return <code>Set</code> of {@link PartContentDescriptor}, or null if
- * there is no part content to be fetched
- */
- Set<PartContentDescriptor> getPartContentDescriptors();
- }
-
MimeDescriptor getMimeDescriptor() throws MailboxException;
MailboxId getMailboxId();
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
index 38a949c..2a1b815 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
@@ -44,13 +44,13 @@ public class PartContentDescriptor {
* Contents to be fetched. Composed bitwise.
*
* @return bitwise descripion
- * @see MessageResult.FetchGroup#MINIMAL
- * @see MessageResult.FetchGroup#MIME_DESCRIPTOR
- * @see MessageResult.FetchGroup#HEADERS
- * @see MessageResult.FetchGroup#FULL_CONTENT
- * @see MessageResult.FetchGroup#BODY_CONTENT
- * @see MessageResult.FetchGroup#MIME_HEADERS
- * @see MessageResult.FetchGroup#MIME_CONTENT
+ * @see FetchGroup#MINIMAL_MASK
+ * @see FetchGroup#MIME_DESCRIPTOR_MASK
+ * @see FetchGroup#HEADERS_MASK
+ * @see FetchGroup#FULL_CONTENT_MASK
+ * @see FetchGroup#BODY_CONTENT_MASK
+ * @see FetchGroup#MIME_HEADERS_MASK
+ * @see FetchGroup#MIME_CONTENT_MASK
*/
public int content() {
return content;
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 022294b..91bd97f 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -59,7 +59,7 @@ import org.apache.james.mailbox.exception.TooLongMailboxNameException;
import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.mock.DataProvisioner;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxAnnotation;
import org.apache.james.mailbox.model.MailboxAnnotationKey;
@@ -1771,7 +1771,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
assertThatThrownBy(() -> inboxManager.expunge(MessageRange.one(composeId1.getUid()), session))
.isInstanceOf(RuntimeException.class);
- assertThat(ImmutableList.copyOf(inboxManager.getMessages(MessageRange.one(composeId1.getUid()), FetchGroupImpl.MINIMAL, session))
+ assertThat(ImmutableList.copyOf(inboxManager.getMessages(MessageRange.one(composeId1.getUid()), FetchGroup.MINIMAL, session))
.stream()
.map(MessageResult::getMessageId))
.hasSize(1)
@@ -1802,7 +1802,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
latchForHook1.await();
latchForHook2.await();
- assertThat(inboxManager.getMessages(MessageRange.one(composeId1.getUid()), FetchGroupImpl.MINIMAL, session))
+ assertThat(inboxManager.getMessages(MessageRange.one(composeId1.getUid()), FetchGroup.MINIMAL, session))
.toIterable()
.isEmpty();
}
@@ -1827,7 +1827,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
.withFlags(new Flags(Flags.Flag.DELETED))
.build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/twoAttachmentsApi.eml")), session);
- MessageResultIterator messages = inboxManager.getMessages(MessageRange.one(composeId.getUid()), FetchGroupImpl.MINIMAL, session);
+ MessageResultIterator messages = inboxManager.getMessages(MessageRange.one(composeId.getUid()), FetchGroup.MINIMAL, session);
assertThat(messages).toIterable()
.hasSize(1)
@@ -1841,7 +1841,7 @@ public abstract class MailboxManagerTest<T extends MailboxManager> {
.withFlags(new Flags(Flags.Flag.DELETED))
.build(message), session);
- MessageResultIterator messages = inboxManager.getMessages(MessageRange.one(composeId.getUid()), FetchGroupImpl.MINIMAL, session);
+ MessageResultIterator messages = inboxManager.getMessages(MessageRange.one(composeId.getUid()), FetchGroup.MINIMAL, session);
assertThat(messages).toIterable()
.hasSize(1)
diff --git a/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/DefaultMailboxBackup.java b/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/DefaultMailboxBackup.java
index 61a699d..ab708f6 100644
--- a/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/DefaultMailboxBackup.java
+++ b/mailbox/backup/src/main/java/org/apache/james/mailbox/backup/DefaultMailboxBackup.java
@@ -30,7 +30,7 @@ import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.BadCredentialsException;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxAnnotation;
import org.apache.james.mailbox.model.MailboxMetaData;
@@ -128,7 +128,7 @@ public class DefaultMailboxBackup implements MailboxBackup {
Mailbox mailbox = messageManager.getMailboxEntity();
List<MailboxAnnotation> annotations = mailboxManager.getAllAnnotations(path, session);
MailboxWithAnnotations mailboxWithAnnotations = new MailboxWithAnnotations(mailbox, annotations);
- Stream<MessageResult> messages = Iterators.toStream(messageManager.getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session));
+ Stream<MessageResult> messages = Iterators.toStream(messageManager.getMessages(MessageRange.all(), FetchGroup.FULL_CONTENT, session));
return Stream.of(new MailAccountContent(mailboxWithAnnotations, messages));
} catch (MailboxException e) {
LOGGER.error("Error while fetching Mailbox during backup", e);
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
index bfe285c..f3f9b15 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
@@ -41,7 +41,7 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
@@ -303,7 +303,7 @@ class DeletedMessageVaultHookTest {
}
private long messageSize(MessageManager messageManager, ComposedMessageId composedMessageId) throws MailboxException {
- return messageManager.getMessages(MessageRange.one(composedMessageId.getUid()), FetchGroupImpl.MINIMAL, aliceSession)
+ return messageManager.getMessages(MessageRange.one(composedMessageId.getUid()), FetchGroup.MINIMAL, aliceSession)
.next()
.getSize();
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
index 46a92c9..e3f5e05 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
@@ -33,6 +33,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.Content;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Headers;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageAttachment;
@@ -233,7 +234,7 @@ public class MessageResultImpl implements MessageResult {
}
public void setBody(Content body) {
- content = content | FetchGroup.BODY_CONTENT;
+ content = content | FetchGroup.BODY_CONTENT_MASK;
this.body = body;
}
@@ -242,7 +243,7 @@ public class MessageResultImpl implements MessageResult {
}
void setMimeBody(Content mimeBody) {
- content = content | FetchGroup.MIME_CONTENT;
+ content = content | FetchGroup.MIME_CONTENT_MASK;
this.mimeBody = mimeBody;
}
@@ -251,7 +252,7 @@ public class MessageResultImpl implements MessageResult {
}
public void setFull(Content full) {
- content = content | FetchGroup.FULL_CONTENT;
+ content = content | FetchGroup.FULL_CONTENT_MASK;
this.full = full;
}
@@ -260,7 +261,7 @@ public class MessageResultImpl implements MessageResult {
}
public void setHeaders(Iterator<Header> headers) {
- content = content | FetchGroup.HEADERS;
+ content = content | FetchGroup.HEADERS_MASK;
this.headers = headers;
}
@@ -269,7 +270,7 @@ public class MessageResultImpl implements MessageResult {
}
void setMimeHeaders(Iterator<Header> mimeHeaders) {
- content = content | FetchGroup.MIME_HEADERS;
+ content = content | FetchGroup.MIME_HEADERS_MASK;
this.mimeHeaders = mimeHeaders;
}
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index b1acbe6..d3803ae 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -27,8 +27,8 @@ import java.util.List;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Content;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MimePath;
import org.apache.james.mailbox.model.PartContentDescriptor;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
@@ -100,17 +100,17 @@ public class ResultUtils {
if (fetchGroup != null) {
int content = fetchGroup.content();
- if ((content & FetchGroup.HEADERS) > 0) {
- content -= FetchGroup.HEADERS;
+ if ((content & FetchGroup.HEADERS_MASK) > 0) {
+ content -= FetchGroup.HEADERS_MASK;
}
- if ((content & FetchGroup.BODY_CONTENT) > 0) {
- content -= FetchGroup.BODY_CONTENT;
+ if ((content & FetchGroup.BODY_CONTENT_MASK) > 0) {
+ content -= FetchGroup.BODY_CONTENT_MASK;
}
- if ((content & FetchGroup.FULL_CONTENT) > 0) {
- content -= FetchGroup.FULL_CONTENT;
+ if ((content & FetchGroup.FULL_CONTENT_MASK) > 0) {
+ content -= FetchGroup.FULL_CONTENT_MASK;
}
- if ((content & FetchGroup.MIME_DESCRIPTOR) > 0) {
- content -= FetchGroup.MIME_DESCRIPTOR;
+ if ((content & FetchGroup.MIME_DESCRIPTOR_MASK) > 0) {
+ content -= FetchGroup.MIME_DESCRIPTOR_MASK;
}
if (content != 0) {
throw new UnsupportedOperationException("Unsupported result: " + content);
@@ -140,19 +140,19 @@ public class ResultUtils {
throws MailboxException, IOException, MimeException {
MimePath mimePath = descriptor.path();
int content = descriptor.content();
- if ((content & MessageResult.FetchGroup.FULL_CONTENT) > 0) {
+ if ((content & FetchGroup.FULL_CONTENT_MASK) > 0) {
addFullContent(message, messageResult, mimePath);
}
- if ((content & MessageResult.FetchGroup.BODY_CONTENT) > 0) {
+ if ((content & FetchGroup.BODY_CONTENT_MASK) > 0) {
addBodyContent(message, messageResult, mimePath);
}
- if ((content & MessageResult.FetchGroup.MIME_CONTENT) > 0) {
+ if ((content & FetchGroup.MIME_CONTENT_MASK) > 0) {
addMimeBodyContent(message, messageResult, mimePath);
}
- if ((content & MessageResult.FetchGroup.HEADERS) > 0) {
+ if ((content & FetchGroup.HEADERS_MASK) > 0) {
addHeaders(message, messageResult, mimePath);
}
- if ((content & MessageResult.FetchGroup.MIME_HEADERS) > 0) {
+ if ((content & FetchGroup.MIME_HEADERS_MASK) > 0) {
addMimeHeaders(message, messageResult, mimePath);
}
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java
index 0b85405..85eba76 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreBlobManager.java
@@ -35,7 +35,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.Blob;
import org.apache.james.mailbox.model.BlobId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageId;
import com.github.fge.lambdas.Throwing;
@@ -97,7 +97,7 @@ public class StoreBlobManager implements BlobManager {
private Optional<InputStream> loadMessageAsBlob(MessageId messageId, MailboxSession mailboxSession) {
try {
- return messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.FULL_CONTENT, mailboxSession)
+ return messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.FULL_CONTENT, mailboxSession)
.stream()
.map(Throwing.function(message -> message.getFullContent().getInputStream()))
.findFirst();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 229638e..2170733 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.model.DeleteResult;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxACL.Right;
import org.apache.james.mailbox.model.MailboxId;
@@ -136,7 +137,7 @@ public class StoreMessageIdManager implements MessageIdManager {
}
@Override
- public List<MessageResult> getMessages(List<MessageId> messageIds, MessageResult.FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
+ public List<MessageResult> getMessages(List<MessageId> messageIds, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
MessageMapper.FetchType fetchType = FetchGroupConverter.getFetchType(fetchGroup);
@@ -406,7 +407,7 @@ public class StoreMessageIdManager implements MessageIdManager {
messageIdMapper.copyInMailbox(mailboxMessage);
}
- private ThrowingFunction<MailboxMessage, MessageResult> messageResultConverter(MessageResult.FetchGroup fetchGroup) {
+ private ThrowingFunction<MailboxMessage, MessageResult> messageResultConverter(FetchGroup fetchGroup) {
return input -> ResultUtils.loadMessageResult(input, fetchGroup);
}
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 b7e5df3..d985641 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
@@ -59,6 +59,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.ReadOnlyException;
import org.apache.james.mailbox.exception.UnsupportedRightException;
import org.apache.james.mailbox.model.ComposedMessageId;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxCounters;
@@ -70,7 +71,6 @@ import org.apache.james.mailbox.model.MessageId.Factory;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageMoves;
import org.apache.james.mailbox.model.MessageRange;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.SearchQuery;
import org.apache.james.mailbox.model.UpdatedFlags;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
index aec7a7d..dfdf2ce 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
@@ -32,6 +32,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.Content;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Headers;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
@@ -41,7 +42,6 @@ import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageRange.Type;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.MimeDescriptor;
import org.apache.james.mailbox.model.MimePath;
@@ -66,7 +66,7 @@ public class StoreMessageResultIterator implements MessageResultIterator {
private final MessageMapper mapper;
private final FetchType ftype;
- public StoreMessageResultIterator(MessageMapper mapper, Mailbox mailbox, MessageRange range, BatchSizes batchSizes, org.apache.james.mailbox.model.MessageResult.FetchGroup group) {
+ public StoreMessageResultIterator(MessageMapper mapper, Mailbox mailbox, MessageRange range, BatchSizes batchSizes, FetchGroup group) {
this.mailbox = mailbox;
this.group = group;
this.mapper = mapper;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
index d280172..cfd91fb 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
@@ -19,42 +19,42 @@
package org.apache.james.mailbox.store.mail;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.FetchGroup;
public class FetchGroupConverter {
/**
- * Use the passed {@link MessageResult.FetchGroup} and calculate the right
+ * Use the passed {@link FetchGroup} and calculate the right
* {@link MessageMapper.FetchType} for it
*/
- public static MessageMapper.FetchType getFetchType(MessageResult.FetchGroup group) {
+ public static MessageMapper.FetchType getFetchType(FetchGroup group) {
int content = group.content();
boolean headers = false;
boolean body = false;
boolean full = false;
- if ((content & MessageResult.FetchGroup.HEADERS) > 0) {
+ if ((content & FetchGroup.HEADERS_MASK) > 0) {
headers = true;
- content -= MessageResult.FetchGroup.HEADERS;
+ content -= FetchGroup.HEADERS_MASK;
}
if (group.getPartContentDescriptors().size() > 0) {
full = true;
}
- if ((content & MessageResult.FetchGroup.BODY_CONTENT) > 0) {
+ if ((content & FetchGroup.BODY_CONTENT_MASK) > 0) {
body = true;
- content -= MessageResult.FetchGroup.BODY_CONTENT;
+ content -= FetchGroup.BODY_CONTENT_MASK;
}
- if ((content & MessageResult.FetchGroup.FULL_CONTENT) > 0) {
+ if ((content & FetchGroup.FULL_CONTENT_MASK) > 0) {
full = true;
- content -= MessageResult.FetchGroup.FULL_CONTENT;
+ content -= FetchGroup.FULL_CONTENT_MASK;
}
- if ((content & MessageResult.FetchGroup.MIME_DESCRIPTOR) > 0) {
+ if ((content & FetchGroup.MIME_DESCRIPTOR_MASK) > 0) {
// If we need the mimedescriptor we MAY need the full content later
// too.
// This gives us no other choice then request it
full = true;
- content -= MessageResult.FetchGroup.MIME_DESCRIPTOR;
+ content -= FetchGroup.MIME_DESCRIPTOR_MASK;
}
if (full || (body && headers)) {
return MessageMapper.FetchType.Full;
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
index 15e934b..344d673 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
@@ -36,11 +36,10 @@ import org.apache.james.mailbox.MailboxSessionUtil;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
-import org.apache.james.mailbox.MessageManager.MetaData.FetchGroup;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.fixture.MailboxFixture;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageRange;
@@ -128,7 +127,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId,
ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- MessageUid uidInMailbox2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)
+ MessageUid uidInMailbox2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session)
.get(0)
.getUid();
@@ -176,7 +175,7 @@ public abstract class AbstractCombinationManagerTest {
messageManager1.setFlags(deleted, FlagsUpdateMode.ADD, MessageRange.all(), session);
messageManager1.expunge(MessageRange.all(), session);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).isEmpty();
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session)).isEmpty();
}
@Test
@@ -211,7 +210,7 @@ public abstract class AbstractCombinationManagerTest {
MessageId messageId = messageManager1.appendMessage(MessageManager.AppendCommand.from(mailContent), session)
.getMessageId();
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)).hasSize(1);
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session)).hasSize(1);
}
@Test
@@ -221,7 +220,7 @@ public abstract class AbstractCombinationManagerTest {
mailboxManager.copyMessages(MessageRange.all(), mailbox1.getMailboxId(), mailbox2.getMailboxId(), session);
- List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
+ List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session);
assertThat(listMessages).hasSize(2)
.extractingResultOf("getMailboxId")
@@ -235,7 +234,7 @@ public abstract class AbstractCombinationManagerTest {
mailboxManager.copyMessages(MessageRange.all(), MailboxFixture.INBOX_ALICE, MailboxFixture.OUTBOX_ALICE, session);
- List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
+ List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session);
assertThat(listMessages).hasSize(2)
.extractingResultOf("getMailboxId")
@@ -249,7 +248,7 @@ public abstract class AbstractCombinationManagerTest {
mailboxManager.moveMessages(MessageRange.all(), MailboxFixture.INBOX_ALICE, MailboxFixture.OUTBOX_ALICE, session);
- List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
+ List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session);
assertThat(listMessages).hasSize(1)
.extractingResultOf("getMailboxId")
@@ -263,7 +262,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager2.getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, session))
+ assertThat(messageManager2.getMessages(MessageRange.all(), FetchGroup.MINIMAL, session))
.toIterable()
.hasSize(1);
}
@@ -276,10 +275,10 @@ public abstract class AbstractCombinationManagerTest {
.withFlags(recent)
.build(mailContent), session);
- long mailbox2NextUid = messageManager2.getMetaData(true, session, FetchGroup.UNSEEN_COUNT).getUidNext().asLong();
+ long mailbox2NextUid = messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT).getUidNext().asLong();
messageIdManager.setInMailboxes(messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- List<MessageUid> messageUids = messageManager2.getMetaData(true, session, FetchGroup.UNSEEN_COUNT).getRecent();
+ List<MessageUid> messageUids = messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT).getRecent();
assertThat(messageUids).hasSize(1);
assertThat(messageUids.get(0).asLong()).isGreaterThanOrEqualTo(mailbox2NextUid);
@@ -296,7 +295,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager2.getMetaData(true, session, FetchGroup.FIRST_UNSEEN).countRecent()).isEqualTo(1);
+ assertThat(messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.FIRST_UNSEEN).countRecent()).isEqualTo(1);
}
@Test
@@ -309,7 +308,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId.getMessageId()), FetchGroupImpl.MINIMAL, session);
+ List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId.getMessageId()), FetchGroup.MINIMAL, session);
long uid2 = listMessages.stream()
.filter(messageInMailbox2())
@@ -318,7 +317,7 @@ public abstract class AbstractCombinationManagerTest {
.getUid()
.asLong();
- assertThat(messageManager2.getMetaData(true, session, FetchGroup.FIRST_UNSEEN).getUidNext().asLong())
+ assertThat(messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.FIRST_UNSEEN).getUidNext().asLong())
.isGreaterThan(uid2);
}
@@ -329,7 +328,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager2.getMetaData(true, session, FetchGroup.FIRST_UNSEEN).getHighestModSeq().asLong()).isNotNegative();
+ assertThat(messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.FIRST_UNSEEN).getHighestModSeq().asLong()).isNotNegative();
}
@Test
@@ -339,7 +338,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager2.getMetaData(true, session, FetchGroup.FIRST_UNSEEN).getMessageCount()).isEqualTo(1);
+ assertThat(messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.FIRST_UNSEEN).getMessageCount()).isEqualTo(1);
}
@Test
@@ -349,7 +348,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager2.getMetaData(true, session, FetchGroup.UNSEEN_COUNT).getUnseenCount()).isEqualTo(1);
+ assertThat(messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT).getUnseenCount()).isEqualTo(1);
}
@Test
@@ -358,7 +357,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager2.getMetaData(true, session, FetchGroup.FIRST_UNSEEN).getFirstUnseen()).isEqualTo(messageId.getUid());
+ assertThat(messageManager2.getMetaData(true, session, MessageManager.MetaData.FetchGroup.FIRST_UNSEEN).getFirstUnseen()).isEqualTo(messageId.getUid());
}
@Test
@@ -369,7 +368,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setFlags(newFlag, FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager1.getMetaData(true, session, FetchGroup.UNSEEN_COUNT).getUnseenCount()).isEqualTo(1);
+ assertThat(messageManager1.getMetaData(true, session, MessageManager.MetaData.FetchGroup.UNSEEN_COUNT).getUnseenCount()).isEqualTo(1);
}
@Test
@@ -379,7 +378,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setFlags(newFlag, FlagsUpdateMode.ADD, messageId.getMessageId(), ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- assertThat(messageManager1.getMetaData(true, session, FetchGroup.FIRST_UNSEEN).getFirstUnseen()).isEqualTo(messageId.getUid());
+ assertThat(messageManager1.getMetaData(true, session, MessageManager.MetaData.FetchGroup.FIRST_UNSEEN).getFirstUnseen()).isEqualTo(messageId.getUid());
}
@Test
@@ -389,10 +388,10 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
- assertThat(messageManager1.getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, session))
+ assertThat(messageManager1.getMessages(MessageRange.all(), FetchGroup.MINIMAL, session))
.toIterable()
.isEmpty();
- assertThat(messageManager2.getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, session))
+ assertThat(messageManager2.getMessages(MessageRange.all(), FetchGroup.MINIMAL, session))
.toIterable()
.hasSize(1)
.extracting(MessageResult::getMessageId)
@@ -502,7 +501,7 @@ public abstract class AbstractCombinationManagerTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- MessageUid uid2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)
+ MessageUid uid2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session)
.stream()
.filter(messageInMailbox2())
.findFirst()
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index de0169f..60124c3 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -55,7 +55,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.OverQuotaException;
import org.apache.james.mailbox.extension.PreDeletionHook;
import org.apache.james.mailbox.fixture.MailboxFixture;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
@@ -134,7 +134,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
- MessageResult messageResult = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session).get(0);
+ MessageResult messageResult = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session).get(0);
MessageMetaData simpleMessageMetaData = messageResult.messageMetaData();
eventBus.register(eventCollector);
@@ -158,9 +158,9 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
MessageId messageId2 = testingData.persist(mailbox1.getMailboxId(), messageUid2, FLAGS, session);
- MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session).get(0);
+ MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroup.MINIMAL, session).get(0);
MessageMetaData simpleMessageMetaData1 = messageResult1.messageMetaData();
- MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, session).get(0);
+ MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroup.MINIMAL, session).get(0);
MessageMetaData simpleMessageMetaData2 = messageResult2.messageMetaData();
eventBus.register(eventCollector);
@@ -275,7 +275,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
assertThatThrownBy(() -> messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session))
.isInstanceOf(RuntimeException.class);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session)
.stream()
.map(MessageResult::getMessageId))
.hasSize(1)
@@ -306,7 +306,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
latchForHook1.await();
latchForHook2.await();
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session))
.isEmpty();
}
@@ -343,7 +343,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
eventBus.register(eventCollector);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId(), mailbox3.getMailboxId()), session);
- messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
+ messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session);
assertThat(eventCollector.getEvents()).filteredOn(event -> event instanceof MessageMoveEvent).hasSize(1);
assertThat(eventCollector.getEvents()).filteredOn(event -> event instanceof MailboxListener.Added).hasSize(2)
@@ -373,7 +373,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
+ List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session);
assertThat(messageResults).hasSize(2);
eventBus.register(eventCollector);
@@ -459,7 +459,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
Flags newFlags = new Flags(Flags.Flag.SEEN);
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, session);
assertThat(messages).hasSize(1);
MessageResult messageResult = messages.get(0);
MessageUid messageUid = messageResult.getUid();
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index 2874746..ac79368 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -40,7 +40,7 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.fixture.MailboxFixture;
import org.apache.james.mailbox.model.DeleteResult;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxACL;
import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
@@ -92,7 +92,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
void getMessagesShouldReturnEmptyListWhenMessageIdNotUsed() throws Exception {
MessageId messageId = testingData.createNotUsedMessageId();
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession))
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession))
.isEmpty();
}
@@ -122,7 +122,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
void getMessagesShouldReturnStoredResults() throws Exception {
MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession))
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession))
.hasSize(1);
}
@@ -130,8 +130,8 @@ public abstract class AbstractMessageIdManagerStorageTest {
void getMessageShouldReturnOnlyMessageBelongingToCurrentUser() throws Exception {
MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)).hasSize(1);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, bobSession)).isEmpty();
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)).hasSize(1);
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, bobSession)).isEmpty();
}
@Test
@@ -140,7 +140,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox2.getMailboxId()), aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession))
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession))
.hasSize(2);
}
@@ -150,7 +150,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession))
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession))
.hasSize(1);
}
@@ -161,10 +161,10 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId2, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- MessageUid uidMessage1Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, aliceSession)
+ MessageUid uidMessage1Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroup.MINIMAL, aliceSession)
.get(0)
.getUid();
- MessageUid uidMessage2Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, aliceSession)
+ MessageUid uidMessage2Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroup.MINIMAL, aliceSession)
.stream()
.filter(inMailbox(aliceMailbox1.getMailboxId()))
.findFirst()
@@ -181,10 +181,10 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId2, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox2.getMailboxId()), aliceSession);
- ModSeq modSeqMessage1Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, aliceSession)
+ ModSeq modSeqMessage1Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroup.MINIMAL, aliceSession)
.get(0)
.getModSeq();
- ModSeq modSeqMessage2Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, aliceSession)
+ ModSeq modSeqMessage2Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroup.MINIMAL, aliceSession)
.stream()
.filter(inMailbox(aliceMailbox1.getMailboxId()))
.findFirst()
@@ -197,13 +197,13 @@ public abstract class AbstractMessageIdManagerStorageTest {
@Test
void setInMailboxesShouldNotChangeUidAndModSeqInOriginalMailbox() throws Exception {
MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
- MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession).get(0);
+ MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession).get(0);
MessageUid messageUid1 = messageResult1.getUid();
ModSeq modSeq1 = messageResult1.getModSeq();
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox2.getMailboxId()), aliceSession);
- MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)
+ MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)
.stream()
.filter(inMailbox(aliceMailbox1.getMailboxId()))
.findFirst()
@@ -221,7 +221,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox2.getMailboxId()), aliceSession);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox3.getMailboxId()), aliceSession);
- List<MailboxId> messageMailboxIds = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)
+ List<MailboxId> messageMailboxIds = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)
.stream()
.map(MessageResult::getMailboxId)
.collect(Guavate.toImmutableList());
@@ -238,7 +238,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox3.getMailboxId()), aliceSession);
- MessageResult messageResult3 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)
+ MessageResult messageResult3 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)
.stream()
.filter(inMailbox(aliceMailbox3.getMailboxId()))
.findFirst()
@@ -272,7 +272,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)).isEmpty();
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)).isEmpty();
}
@Test
@@ -281,7 +281,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.delete(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)).isEmpty();
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)).isEmpty();
}
@Test
@@ -290,7 +290,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.delete(messageId, aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)).isEmpty();
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)).isEmpty();
}
@Test
@@ -300,7 +300,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.delete(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messageResults).hasSize(1);
assertThat(messageResults.get(0).getMailboxId()).isEqualTo(aliceMailbox2.getMailboxId());
}
@@ -312,7 +312,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.delete(messageId, aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)).isEmpty();
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)).isEmpty();
}
@Test
@@ -321,7 +321,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.delete(messageId, ImmutableList.of(aliceMailbox2.getMailboxId()), aliceSession);
- List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messageResults).hasSize(1);
assertThat(messageResults.get(0).getMailboxId()).isEqualTo(aliceMailbox1.getMailboxId());
}
@@ -365,7 +365,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- MessageResult messageResult = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession).get(0);
+ MessageResult messageResult = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession).get(0);
assertThat(messageResult.getFlags()).isEqualTo(newFlags);
}
@@ -374,12 +374,12 @@ public abstract class AbstractMessageIdManagerStorageTest {
Flags newFlags = new Flags(Flags.Flag.SEEN);
MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
- MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession).get(0);
+ MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession).get(0);
MessageUid messageUid1 = messageResult1.getUid();
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession).get(0);
+ MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession).get(0);
MessageUid messageUid2 = messageResult2.getUid();
assertThat(messageUid2).isEqualTo(messageUid1);
@@ -390,12 +390,12 @@ public abstract class AbstractMessageIdManagerStorageTest {
Flags newFlags = new Flags(Flags.Flag.SEEN);
MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
- MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession).get(0);
+ MessageResult messageResult1 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession).get(0);
ModSeq modSeq1 = messageResult1.getModSeq();
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession).get(0);
+ MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession).get(0);
ModSeq modSeq2 = messageResult2.getModSeq();
assertThat(modSeq2).isGreaterThan(modSeq1);
@@ -409,7 +409,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox2.getMailboxId()), aliceSession);
- List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)
+ List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)
.stream()
.map(MessageResult::getFlags)
.collect(Guavate.toImmutableList());
@@ -427,7 +427,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId2, ImmutableList.of(aliceMailbox1.getMailboxId()), aliceSession);
- List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, aliceSession)
+ List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroup.MINIMAL, aliceSession)
.stream()
.map(MessageResult::getFlags)
.collect(Guavate.toImmutableList());
@@ -443,7 +443,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(), aliceSession);
- List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, aliceSession)
+ List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroup.MINIMAL, aliceSession)
.stream()
.map(MessageResult::getFlags)
.collect(Guavate.toImmutableList());
@@ -459,7 +459,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(aliceMailbox2.getMailboxId()), aliceSession);
- List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, aliceSession)
+ List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroup.MINIMAL, aliceSession)
.stream()
.map(MessageResult::getFlags)
.collect(Guavate.toImmutableList());
@@ -476,7 +476,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(aliceMailbox1.getMailboxId(), aliceMailbox2.getMailboxId()), aliceSession);
- Map<MessageId, Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1, messageId2), FetchGroupImpl.MINIMAL, aliceSession)
+ Map<MessageId, Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1, messageId2), FetchGroup.MINIMAL, aliceSession)
.stream()
.collect(Guavate.toImmutableMap(MessageResult::getMessageId, MessageResult::getFlags));
@@ -530,7 +530,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
testingData.deleteMailbox(aliceMailbox1.getMailboxId(), aliceSession);
- assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession)).isEmpty();
+ assertThat(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession)).isEmpty();
}
@Test
@@ -540,7 +540,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
testingData.deleteMailbox(aliceMailbox1.getMailboxId(), aliceSession);
- List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messageResults = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messageResults).hasSize(1);
assertThat(messageResults.get(0).getMailboxId()).isEqualTo(aliceMailbox2.getMailboxId());
}
@@ -589,7 +589,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL, bobSession);
+ FetchGroup.MINIMAL, bobSession);
assertThat(messages)
.extracting(MessageResult::getMessageId)
@@ -607,7 +607,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
aliceSession);
MessageId messageId = testingData.persist(aliceMailbox1.getMailboxId(), messageUid1, FLAGS, aliceSession);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, bobSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, bobSession);
assertThat(messages)
.isEmpty();
@@ -628,7 +628,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.REPLACE,
messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), bobSession);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messages)
.extracting(MessageResult::getFlags)
.containsOnly(newFlags);
@@ -650,7 +650,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), bobSession))
.isInstanceOf(MailboxNotFoundException.class);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messages)
.extracting(MessageResult::getFlags)
.containsOnly(FLAGS);
@@ -672,7 +672,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId(), bobMailbox1.getMailboxId()), bobSession);
//Then
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, bobSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, bobSession);
assertThat(messages)
.extracting(MessageResult::getMessageId)
.containsOnly(messageId, messageId);
@@ -703,7 +703,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
//Then
List<MessageResult> messages = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroup.MINIMAL,
bobSession);
assertThat(messages)
.isEmpty();
@@ -727,7 +727,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
//Then
List<MessageResult> messages = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroup.MINIMAL,
aliceSession);
assertThat(messages)
.extracting(MessageResult::getMessageId)
@@ -759,7 +759,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
//Then
List<MessageResult> messages = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroup.MINIMAL,
bobSession);
assertThat(messages)
.extracting(MessageResult::getMessageId)
@@ -787,7 +787,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
//Then
List<MessageResult> messages = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroup.MINIMAL,
bobSession);
assertThat(messages)
.extracting(MessageResult::getMessageId)
@@ -819,7 +819,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
//Then
List<MessageResult> messages = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroup.MINIMAL,
bobSession);
assertThat(messages)
.extracting(MessageResult::getMessageId)
@@ -850,7 +850,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
//Then
List<MessageResult> messagesForSharee = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroup.MINIMAL,
bobSession);
assertThat(messagesForSharee)
.extracting(MessageResult::getMessageId)
@@ -861,7 +861,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
List<MessageResult> messagesForOwner = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.MINIMAL,
+ FetchGroup.MINIMAL,
aliceSession);
assertThat(messagesForOwner)
.extracting(MessageResult::getMessageId)
@@ -884,7 +884,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.delete(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), bobSession);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messages)
.isEmpty();
}
@@ -904,7 +904,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.delete(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), bobSession))
.isInstanceOf(MailboxNotFoundException.class);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messages)
.extracting(MessageResult::getMessageId)
.containsOnly(messageId);
@@ -958,7 +958,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), bobSession);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messages)
.extracting(MessageResult::getFlags)
.containsOnly(new Flags());
@@ -978,7 +978,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
messageIdManager.setInMailboxes(messageId, ImmutableList.of(aliceMailbox1.getMailboxId()), bobSession);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, aliceSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, aliceSession);
assertThat(messages)
.extracting(MessageResult::getFlags)
.containsOnly(flags);
@@ -992,7 +992,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
.build(ClassLoaderUtils.getSystemResourceAsSharedStream("eml/twoAttachmentsApi.eml")), bobSession)
.getMessageId();
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, bobSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, bobSession);
assertThat(messages)
.hasSize(1)
@@ -1005,7 +1005,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
Flags flags = new Flags(Flags.Flag.FLAGGED);
MessageId messageId = testingData.persist(bobMailbox1.getMailboxId(), messageUid1, flags, bobSession);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, bobSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, bobSession);
assertThat(messages)
.hasSize(1)
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java
index 33a3a32..26bfd1d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreBlobManagerTest.java
@@ -42,7 +42,7 @@ import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.Blob;
import org.apache.james.mailbox.model.BlobId;
import org.apache.james.mailbox.model.Content;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.TestMessageId;
import org.junit.Before;
@@ -94,7 +94,7 @@ public class StoreBlobManagerTest {
public void retrieveShouldThrowWhenNotFound() throws Exception {
when(attachmentManager.getAttachment(ATTACHMENT_ID, session))
.thenThrow(new AttachmentNotFoundException(ID));
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenReturn(ImmutableList.of());
assertThatThrownBy(() -> blobManager.retrieve(BLOB_ID_ATTACHMENT, session))
@@ -110,7 +110,7 @@ public class StoreBlobManagerTest {
Content content = mock(Content.class);
when(content.getInputStream()).thenReturn(new ByteArrayInputStream(BYTES));
when(messageResult.getFullContent()).thenReturn(content);
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenReturn(ImmutableList.of(messageResult));
assertThat(blobManager.retrieve(BLOB_ID_MESSAGE, session))
@@ -144,7 +144,7 @@ public class StoreBlobManagerTest {
when(attachmentManager.getAttachment(any(), any()))
.thenThrow(new AttachmentNotFoundException(ID));
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenThrow(new RuntimeException());
assertThatThrownBy(() -> blobManager.retrieve(BLOB_ID_MESSAGE, session))
@@ -156,7 +156,7 @@ public class StoreBlobManagerTest {
when(attachmentManager.getAttachment(any(), any()))
.thenThrow(new AttachmentNotFoundException(ID));
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenThrow(new MailboxException());
assertThatThrownBy(() -> blobManager.retrieve(BLOB_ID_MESSAGE, session))
@@ -170,7 +170,7 @@ public class StoreBlobManagerTest {
MessageResult messageResult = mock(MessageResult.class);
when(messageResult.getFullContent()).thenThrow(new MailboxException());
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenReturn(ImmutableList.of(messageResult));
assertThatThrownBy(() -> blobManager.retrieve(BLOB_ID_MESSAGE, session))
@@ -184,7 +184,7 @@ public class StoreBlobManagerTest {
MessageResult messageResult = mock(MessageResult.class);
when(messageResult.getFullContent()).thenThrow(new RuntimeException());
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenReturn(ImmutableList.of(messageResult));
assertThatThrownBy(() -> blobManager.retrieve(BLOB_ID_MESSAGE, session))
@@ -200,7 +200,7 @@ public class StoreBlobManagerTest {
Content content = mock(Content.class);
when(content.getInputStream()).thenThrow(new IOException());
when(messageResult.getFullContent()).thenReturn(content);
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenReturn(ImmutableList.of(messageResult));
assertThatThrownBy(() -> blobManager.retrieve(BLOB_ID_MESSAGE, session))
@@ -216,7 +216,7 @@ public class StoreBlobManagerTest {
Content content = mock(Content.class);
when(content.getInputStream()).thenThrow(new RuntimeException());
when(messageResult.getFullContent()).thenReturn(content);
- when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroupImpl.FULL_CONTENT, session))
+ when(messageIdManager.getMessages(ImmutableList.of(MESSAGE_ID), FetchGroup.FULL_CONTENT, session))
.thenReturn(ImmutableList.of(messageResult));
assertThatThrownBy(() -> blobManager.retrieve(BLOB_ID_MESSAGE, session))
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
index a41d703..cadaf56 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
@@ -35,7 +35,7 @@ import javax.mail.util.SharedByteArrayInputStream;
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.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxCounters;
import org.apache.james.mailbox.model.MessageMetaData;
@@ -189,7 +189,7 @@ public class StoreMailboxMessageResultIteratorTest {
public void testBatching() {
MessageRange range = MessageRange.range(MessageUid.of(1), MessageUid.of(10));
BatchSizes batchSize = BatchSizes.uniqueBatchSize(3);
- StoreMessageResultIterator it = new StoreMessageResultIterator(new TestMessageMapper(MessageRange.all()), null, range, batchSize, FetchGroupImpl.MINIMAL);
+ StoreMessageResultIterator it = new StoreMessageResultIterator(new TestMessageMapper(MessageRange.all()), null, range, batchSize, FetchGroup.MINIMAL);
assertThat(it).toIterable()
.extracting(input -> input.getUid().asLong())
@@ -200,7 +200,7 @@ public class StoreMailboxMessageResultIteratorTest {
public void nextShouldReturnFirstElement() {
MessageRange range = MessageUid.of(1).toRange();
BatchSizes batchSize = BatchSizes.uniqueBatchSize(42);
- StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(range), null, range, batchSize, FetchGroupImpl.MINIMAL);
+ StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(range), null, range, batchSize, FetchGroup.MINIMAL);
assertThat(iterator.next()).isNotNull();
}
@@ -209,7 +209,7 @@ public class StoreMailboxMessageResultIteratorTest {
MessageRange messages = MessageUid.of(1).toRange();
MessageRange findRange = MessageUid.of(2).toRange();
BatchSizes batchSize = BatchSizes.uniqueBatchSize(42);
- StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, FetchGroupImpl.MINIMAL);
+ StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, FetchGroup.MINIMAL);
iterator.next();
}
@@ -218,7 +218,7 @@ public class StoreMailboxMessageResultIteratorTest {
MessageRange messages = MessageUid.of(1).toRange();
MessageRange findRange = MessageUid.of(2).toRange();
BatchSizes batchSize = BatchSizes.uniqueBatchSize(42);
- StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, FetchGroupImpl.MINIMAL);
+ StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, FetchGroup.MINIMAL);
assertThat(iterator.hasNext()).isFalse();
}
}
diff --git a/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java b/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java
index 5955469..cf9f0f4 100644
--- a/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java
+++ b/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java
@@ -32,7 +32,7 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.copier.MailboxCopier;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxExistsException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
@@ -99,7 +99,7 @@ public class MailboxCopierImpl implements MailboxCopier {
MessageManager dstMessageManager = dstMailboxManager.getMailbox(mailboxPath, dstMailboxSession);
int j = 0;
- Iterator<MessageResult> messageResultIterator = srcMessageManager.getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, srcMailboxSession);
+ Iterator<MessageResult> messageResultIterator = srcMessageManager.getMessages(MessageRange.all(), FetchGroup.FULL_CONTENT, srcMailboxSession);
while (messageResultIterator.hasNext()) {
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
index b8930db..0073028 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
@@ -57,7 +57,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.exception.MessageRangeException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageRange.Type;
@@ -238,7 +238,7 @@ public abstract class AbstractMailboxProcessor<R extends ImapRequest> extends Ab
MessageRange messageSet, MessageManager mailbox,
boolean isModSeqPermanent,
MailboxSession mailboxSession) throws MailboxException {
- final MessageResultIterator it = mailbox.getMessages(messageSet, FetchGroupImpl.MINIMAL, mailboxSession);
+ final MessageResultIterator it = mailbox.getMessages(messageSet, FetchGroup.MINIMAL, mailboxSession);
final boolean qresyncEnabled = EnableProcessor.getEnabledCapabilities(session).contains(ImapConstants.SUPPORTS_QRESYNC);
final boolean condstoreEnabled = EnableProcessor.getEnabledCapabilities(session).contains(ImapConstants.SUPPORTS_CONDSTORE);
while (it.hasNext()) {
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
index 6185386..ce1920a 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
@@ -55,7 +55,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.exception.MessageRangeException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.SearchQuery;
@@ -244,7 +244,7 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
// Reverse loop over the ranges as its more likely that we find a match at the end
int size = ranges.size();
for (int i = size - 1; i > 0; i--) {
- MessageResultIterator results = mailbox.getMessages(ranges.get(i), FetchGroupImpl.MINIMAL, session);
+ MessageResultIterator results = mailbox.getMessages(ranges.get(i), FetchGroup.MINIMAL, session);
while (results.hasNext()) {
ModSeq modSeq = results.next().getModSeq();
if (highestModSeq == null || modSeq.asLong() > highestModSeq.asLong()) {
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/StoreProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
index daed075..b8ac0bd 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
@@ -47,12 +47,11 @@ import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageManager.MetaData;
-import org.apache.james.mailbox.MessageManager.MetaData.FetchGroup;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MessageRangeException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageRange.Type;
import org.apache.james.mailbox.model.MessageResult;
@@ -88,7 +87,7 @@ public class StoreProcessor extends AbstractMailboxProcessor<StoreRequest> {
final Flags flags = request.getFlags();
if (unchangedSince != -1) {
- MetaData metaData = mailbox.getMetaData(false, mailboxSession, FetchGroup.NO_COUNT);
+ MetaData metaData = mailbox.getMetaData(false, mailboxSession, MetaData.FetchGroup.NO_COUNT);
if (metaData.isModSeqPermanent() == false) {
// Check if the mailbox did not support modsequences. If so return a tagged bad response.
// See RFC4551 3.1.2. NOMODSEQ Response Code
@@ -125,7 +124,7 @@ public class StoreProcessor extends AbstractMailboxProcessor<StoreRequest> {
List<MessageUid> uids = new ArrayList<>();
- MessageResultIterator results = mailbox.getMessages(messageSet, FetchGroupImpl.MINIMAL, mailboxSession);
+ MessageResultIterator results = mailbox.getMessages(messageSet, FetchGroup.MINIMAL, mailboxSession);
while (results.hasNext()) {
MessageResult r = results.next();
MessageUid uid = r.getUid();
@@ -245,7 +244,7 @@ public class StoreProcessor extends AbstractMailboxProcessor<StoreRequest> {
// See IMAP-303
if (selected.hasNewApplicableFlags()) {
flags(responder, selected);
- permanentFlags(responder, mailbox.getMetaData(false, mailboxSession, FetchGroup.NO_COUNT), selected);
+ permanentFlags(responder, mailbox.getMetaData(false, mailboxSession, MetaData.FetchGroup.NO_COUNT), selected);
selected.resetNewApplicableFlags();
}
@@ -264,7 +263,7 @@ public class StoreProcessor extends AbstractMailboxProcessor<StoreRequest> {
// - QRESYNC was enabled via ENABLE QRESYNC
//
if (unchangedSince != -1 || qresyncEnabled || condstoreEnabled) {
- MessageResultIterator results = mailbox.getMessages(messageSet, FetchGroupImpl.MINIMAL, mailboxSession);
+ MessageResultIterator results = mailbox.getMessages(messageSet, FetchGroup.MINIMAL, mailboxSession);
while (results.hasNext()) {
MessageResult r = results.next();
// Store the modseq for the uid for later usage in the response
@@ -322,7 +321,7 @@ public class StoreProcessor extends AbstractMailboxProcessor<StoreRequest> {
if (unchangedSince != -1) {
// Enable CONDSTORE as this is a CONDSTORE enabling command
- condstoreEnablingCommand(session, responder, mailbox.getMetaData(false, mailboxSession, FetchGroup.NO_COUNT), true);
+ condstoreEnablingCommand(session, responder, mailbox.getMetaData(false, mailboxSession, MetaData.FetchGroup.NO_COUNT), true);
}
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
index 03ba656..4326df9 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
@@ -43,10 +43,9 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.MessageManager.MetaData;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MessageRangeException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+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.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MessageResultIterator;
import org.apache.james.mailbox.model.MimePath;
import org.apache.james.metrics.api.MetricFactory;
@@ -186,13 +185,13 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
}
protected FetchGroup getFetchGroup(FetchData fetch) {
- FetchGroupImpl result = FetchGroupImpl.MINIMAL;
+ FetchGroup result = FetchGroup.MINIMAL;
if (fetch.isEnvelope()) {
- result.or(FetchGroup.HEADERS);
+ result.or(FetchGroup.HEADERS_MASK);
}
if (fetch.isBody() || fetch.isBodyStructure()) {
- result.or(FetchGroup.MIME_DESCRIPTOR);
+ result.or(FetchGroup.MIME_DESCRIPTOR_MASK);
}
Collection<BodyFetchElement> bodyElements = fetch.getBodyElements();
@@ -204,21 +203,21 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
switch (sectionType) {
case BodyFetchElement.CONTENT:
if (isBase) {
- addContent(result, path, isBase, FetchGroup.FULL_CONTENT);
+ addContent(result, path, isBase, FetchGroup.FULL_CONTENT_MASK);
} else {
- addContent(result, path, isBase, FetchGroup.MIME_CONTENT);
+ addContent(result, path, isBase, FetchGroup.MIME_CONTENT_MASK);
}
break;
case BodyFetchElement.HEADER:
case BodyFetchElement.HEADER_NOT_FIELDS:
case BodyFetchElement.HEADER_FIELDS:
- addContent(result, path, isBase, FetchGroup.HEADERS);
+ addContent(result, path, isBase, FetchGroup.HEADERS_MASK);
break;
case BodyFetchElement.MIME:
- addContent(result, path, isBase, FetchGroup.MIME_HEADERS);
+ addContent(result, path, isBase, FetchGroup.MIME_HEADERS_MASK);
break;
case BodyFetchElement.TEXT:
- addContent(result, path, isBase, FetchGroup.BODY_CONTENT);
+ addContent(result, path, isBase, FetchGroup.BODY_CONTENT_MASK);
break;
default:
break;
@@ -229,7 +228,7 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
return result;
}
- private void addContent(FetchGroupImpl result, int[] path, boolean isBase, int content) {
+ private void addContent(FetchGroup result, int[] path, boolean isBase, int content) {
if (isBase) {
result.or(content);
} else {
diff --git a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java
index a2ae27d..6b57af0 100644
--- a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java
+++ b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/MessageIdProbe.java
@@ -31,7 +31,7 @@ import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.AttachmentId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
@@ -55,7 +55,7 @@ public class MessageIdProbe implements GuiceProbe {
public List<MessageResult> getMessages(MessageId messageId, Username user) throws MailboxException {
MailboxSession mailboxSession = mailboxManager.createSystemSession(user);
- return messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ return messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.FULL_CONTENT, mailboxSession);
}
public void updateNewFlags(Username user, Flags newFlags, MessageId messageId, List<MailboxId> mailboxIds) throws MailboxException {
@@ -68,7 +68,7 @@ public class MessageIdProbe implements GuiceProbe {
MailboxSession mailboxSession = mailboxManager.createSystemSession(username);
List<MessageResult> messages = messageIdManager.getMessages(
ImmutableList.of(messageId),
- FetchGroupImpl.FULL_CONTENT,
+ FetchGroup.FULL_CONTENT,
mailboxSession);
return messages.stream()
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
index 58102dd..72461e2 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
@@ -32,7 +32,7 @@ import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResultIterator;
@@ -71,7 +71,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, FOLDER);
MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER), session)
- .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
+ .getMessages(MessageRange.all(), FetchGroup.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
@@ -85,7 +85,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, FOLDER);
MessageResultIterator messages = mailboxManager.getMailbox(mailboxPath, session)
- .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
+ .getMessages(MessageRange.all(), FetchGroup.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
@@ -102,7 +102,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, "." + FOLDER);
MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER), session)
- .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
+ .getMessages(MessageRange.all(), FetchGroup.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
@@ -113,7 +113,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, FOLDER + "/any");
MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER + ".any"), session)
- .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
+ .getMessages(MessageRange.all(), FetchGroup.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
index b29a38e..966ec40 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
@@ -38,7 +38,7 @@ import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
@@ -125,7 +125,7 @@ public class GetMessagesMethod implements Method {
MessageProperties.ReadProfile readProfile = getMessagesRequest.getProperties().computeReadLevel();
return GetMessagesResponse.builder()
.messages(
- messageIdManager.getMessages(getMessagesRequest.getIds(), FetchGroupImpl.FULL_CONTENT, mailboxSession)
+ messageIdManager.getMessages(getMessagesRequest.getIds(), FetchGroup.FULL_CONTENT, mailboxSession)
.stream()
.collect(Guavate.toImmutableListMultimap(MessageResult::getMessageId))
.asMap()
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
index 6637b99..410c17d 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
@@ -32,7 +32,7 @@ import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.Headers;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
@@ -93,7 +93,7 @@ public class ReferenceUpdater {
List<MessageId> references = mailboxManager.search(searchByRFC822MessageId, session, limit);
try {
MessageId reference = Iterables.getOnlyElement(references);
- List<MailboxId> mailboxIds = messageIdManager.getMessages(references, FetchGroupImpl.MINIMAL, session).stream()
+ List<MailboxId> mailboxIds = messageIdManager.getMessages(references, FetchGroup.MINIMAL, session).stream()
.map(MessageResult::getMailboxId)
.collect(Guavate.toImmutableList());
messageIdManager.setFlags(flag, FlagsUpdateMode.ADD, reference, mailboxIds, session);
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
index 67db9a2..9edfb60 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
@@ -44,7 +44,7 @@ import org.apache.james.mailbox.SystemMailboxesProvider;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.OverQuotaException;
import org.apache.james.mailbox.model.Attachment;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageAttachment;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageResult;
@@ -162,7 +162,7 @@ public class SendMDNProcessor implements SetMessagesProcessor {
private Message retrieveOriginalMessage(JmapMDN mdn, MailboxSession mailboxSession) throws MailboxException, IOException, MessageNotFoundException {
List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(mdn.getMessageId()),
- FetchGroupImpl.HEADERS,
+ FetchGroup.HEADERS,
mailboxSession);
if (messages.size() == 0) {
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java
index 331acd2..0633c0d 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesUpdateProcessor.java
@@ -56,7 +56,7 @@ import org.apache.james.mailbox.SystemMailboxesProvider;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxNotFoundException;
import org.apache.james.mailbox.exception.OverQuotaException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxId.Factory;
import org.apache.james.mailbox.model.MessageId;
@@ -127,7 +127,7 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
private void update(MessageId messageId, UpdateMessagePatch updateMessagePatch, MailboxSession mailboxSession,
SetMessagesResponse.Builder builder) {
try {
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, mailboxSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, mailboxSession);
assertValidUpdate(messages, updateMessagePatch, mailboxSession);
if (messages.isEmpty()) {
@@ -175,7 +175,7 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor {
if (isTargetingOutbox(mailboxSession, listTargetMailboxIds(updateMessagePatch))) {
Optional<MessageResult> maybeMessageToSend =
messageIdManager.getMessages(
- ImmutableList.of(messageId), FetchGroupImpl.FULL_CONTENT, mailboxSession)
+ ImmutableList.of(messageId), FetchGroup.FULL_CONTENT, mailboxSession)
.stream()
.findFirst();
if (maybeMessageToSend.isPresent()) {
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/send/PostDequeueDecorator.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/send/PostDequeueDecorator.java
index 751e677..a7ff93c 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/send/PostDequeueDecorator.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/send/PostDequeueDecorator.java
@@ -34,7 +34,7 @@ import org.apache.james.mailbox.Role;
import org.apache.james.mailbox.SystemMailboxesProvider;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxRoleNotFoundException;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageId.Factory;
@@ -143,7 +143,7 @@ public class PostDequeueDecorator extends MailQueueItemDecorator {
private void assertMessageBelongsToOutbox(MessageId messageId, MailboxSession mailboxSession) throws MailboxException, MailShouldBeInOutboxException {
MailboxId outboxMailboxId = getOutboxMailboxId(mailboxSession);
- List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, mailboxSession);
+ List<MessageResult> messages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroup.MINIMAL, mailboxSession);
for (MessageResult message: messages) {
if (message.getMailboxId().equals(outboxMailboxId)) {
return;
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
index da51cb7..c1c3082 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactoryTest.java
@@ -55,7 +55,7 @@ import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.AttachmentId;
import org.apache.james.mailbox.model.Cid;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageAttachment;
@@ -112,7 +112,7 @@ class MessageFullViewFactoryTest {
@Test
void fromMessageResultsShouldReturnCorrectView() throws Exception {
List<MessageResult> messages = messageIdManager
- .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+ .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroup.FULL_CONTENT, session);
MessageFullView actual = messageFullViewFactory.fromMessageResults(messages);
SoftAssertions.assertSoftly(softly -> {
@@ -146,7 +146,7 @@ class MessageFullViewFactoryTest {
bobMailbox.setFlags(new Flags(Flags.Flag.FLAGGED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.all(), session);
List<MessageResult> messages = messageIdManager
- .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+ .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroup.FULL_CONTENT, session);
MessageFullView actual = messageFullViewFactory.fromMessageResults(messages);
SoftAssertions.assertSoftly(softly -> {
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java
index ec7711c..4973e1e 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactoryTest.java
@@ -41,7 +41,7 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
@@ -85,7 +85,7 @@ class MessageHeaderViewFactoryTest {
@Test
void fromMessageResultsShouldReturnCorrectView() throws Exception {
List<MessageResult> messages = messageIdManager
- .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+ .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroup.HEADERS, session);
MessageHeaderView actual = testee.fromMessageResults(messages);
SoftAssertions.assertSoftly(softly -> {
@@ -113,7 +113,7 @@ class MessageHeaderViewFactoryTest {
bobMailbox.setFlags(new Flags(Flags.Flag.FLAGGED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.all(), session);
List<MessageResult> messages = messageIdManager
- .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+ .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroup.HEADERS, session);
MessageHeaderView actual = testee.fromMessageResults(messages);
SoftAssertions.assertSoftly(softly -> {
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java
index f4f82c0..d6626f4 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactoryTest.java
@@ -35,7 +35,7 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
@@ -78,7 +78,7 @@ class MessageMetadataViewFactoryTest {
@Test
void fromMessageResultsShouldReturnCorrectView() throws Exception {
List<MessageResult> messages = messageIdManager
- .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+ .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroup.MINIMAL, session);
MessageMetadataView actual = testee.fromMessageResults(messages);
SoftAssertions.assertSoftly(softly -> {
@@ -97,7 +97,7 @@ class MessageMetadataViewFactoryTest {
bobMailbox.setFlags(new Flags(Flags.Flag.FLAGGED), MessageManager.FlagsUpdateMode.REPLACE, MessageRange.all(), session);
List<MessageResult> messages = messageIdManager
- .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroupImpl.MINIMAL, session);
+ .getMessages(ImmutableList.of(message1.getMessageId()), FetchGroup.MINIMAL, session);
MessageMetadataView actual = testee.fromMessageResults(messages);
SoftAssertions.assertSoftly(softly -> {
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java
index cd7b85d..21555bf 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/send/PostDequeueDecoratorTest.java
@@ -44,7 +44,7 @@ import org.apache.james.mailbox.exception.MailboxRoleNotFoundException;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.ComposedMessageId;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
@@ -146,7 +146,7 @@ public class PostDequeueDecoratorTest {
testee.done(true);
MessageManager sentMailbox = mailboxManager.getMailbox(SENT_MAILBOX_PATH, mailboxSession);
- MessageResultIterator resultIterator = sentMailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ MessageResultIterator resultIterator = sentMailbox.getMessages(MessageRange.one(UID), FetchGroup.FULL_CONTENT, mailboxSession);
assertThat(resultIterator).toIterable()
.hasSize(1);
}
@@ -164,7 +164,7 @@ public class PostDequeueDecoratorTest {
testee.done(true);
MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession);
- MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroup.FULL_CONTENT, mailboxSession);
assertThat(resultIterator).toIterable()
.hasSize(0);
}
@@ -182,7 +182,7 @@ public class PostDequeueDecoratorTest {
testee.done(false);
MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession);
- MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroup.FULL_CONTENT, mailboxSession);
assertThat(resultIterator).toIterable()
.hasSize(1);
}
@@ -198,7 +198,7 @@ public class PostDequeueDecoratorTest {
testee.done(true);
MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession);
- MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroup.FULL_CONTENT, mailboxSession);
assertThat(resultIterator).toIterable()
.hasSize(1);
}
@@ -215,7 +215,7 @@ public class PostDequeueDecoratorTest {
testee.done(true);
MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession);
- MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroup.FULL_CONTENT, mailboxSession);
assertThat(resultIterator).toIterable()
.hasSize(1);
}
@@ -232,7 +232,7 @@ public class PostDequeueDecoratorTest {
testee.done(true);
MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession);
- MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroup.FULL_CONTENT, mailboxSession);
assertThat(resultIterator).toIterable()
.hasSize(1);
}
@@ -250,7 +250,7 @@ public class PostDequeueDecoratorTest {
testee.done(true);
MessageManager mailbox = mailboxManager.getMailbox(OUTBOX_MAILBOX_PATH, mailboxSession);
- MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroupImpl.FULL_CONTENT, mailboxSession);
+ MessageResultIterator resultIterator = mailbox.getMessages(MessageRange.one(UID), FetchGroup.FULL_CONTENT, mailboxSession);
assertThat(resultIterator).toIterable()
.hasSize(1);
}
@@ -269,14 +269,14 @@ public class PostDequeueDecoratorTest {
mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize()));
mail.setAttribute(USERNAME_ATTRIBUTE);
- ImmutableList<MessageResult> allMessages = ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, mailboxSession));
+ ImmutableList<MessageResult> allMessages = ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), FetchGroup.MINIMAL, mailboxSession));
- when(messageIdManager.getMessages(eq(ImmutableList.of(messageId.getMessageId())), eq(FetchGroupImpl.MINIMAL), any(MailboxSession.class))).thenReturn(allMessages);
+ when(messageIdManager.getMessages(eq(ImmutableList.of(messageId.getMessageId())), eq(FetchGroup.MINIMAL), any(MailboxSession.class))).thenReturn(allMessages);
testee.done(true);
testee.done(true);
- verify(messageIdManager, times(1)).getMessages(eq(ImmutableList.of(messageId.getMessageId())), eq(FetchGroupImpl.MINIMAL), any(MailboxSession.class));
+ verify(messageIdManager, times(1)).getMessages(eq(ImmutableList.of(messageId.getMessageId())), eq(FetchGroup.MINIMAL), any(MailboxSession.class));
verify(messageIdManager, times(1)).setInMailboxes(eq(messageId.getMessageId()), eq(ImmutableList.of(sentMailboxId)), any(MailboxSession.class));
verify(messageIdManager, times(1)).setFlags(eq(new Flags(Flag.SEEN)), eq(MessageManager.FlagsUpdateMode.ADD), eq(messageId.getMessageId()), eq(ImmutableList.of(sentMailboxId)), any(MailboxSession.class));
@@ -297,7 +297,7 @@ public class PostDequeueDecoratorTest {
mail.setAttribute(messageIdAttribute(messageId.getMessageId().serialize()));
mail.setAttribute(USERNAME_ATTRIBUTE);
- when(messageIdManager.getMessages(eq(ImmutableList.of(messageId.getMessageId())), eq(FetchGroupImpl.MINIMAL), any(MailboxSession.class))).thenThrow(MailboxException.class);
+ when(messageIdManager.getMessages(eq(ImmutableList.of(messageId.getMessageId())), eq(FetchGroup.MINIMAL), any(MailboxSession.class))).thenThrow(MailboxException.class);
testee.done(true);
}
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 996e3b3..cffb653 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
@@ -31,10 +31,9 @@ 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.FetchGroupImpl;
+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.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.protocols.pop3.mailbox.Mailbox;
import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
@@ -42,10 +41,10 @@ import com.github.steveash.guavate.Guavate;
import com.google.common.collect.ImmutableList;
public class MailboxAdapter implements Mailbox {
- private static final FetchGroup FULL_GROUP = FetchGroupImpl.FULL_CONTENT;
- private static final FetchGroup BODY_GROUP = FetchGroupImpl.BODY_CONTENT;
- private static final FetchGroup HEADERS_GROUP = FetchGroupImpl.HEADERS;
- private static final FetchGroup METADATA_GROUP = FetchGroupImpl.MINIMAL;
+ 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;
diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
index 6cb20b1..4025a5b 100644
--- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
@@ -92,7 +92,7 @@ import org.apache.james.mailbox.inmemory.InMemoryId;
import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
import org.apache.james.mailbox.inmemory.InMemoryMessageId;
import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
-import org.apache.james.mailbox.model.FetchGroupImpl;
+import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageId;
@@ -2269,7 +2269,7 @@ class DeletedMessagesVaultRoutesTest {
private List<MessageResult> restoreMailboxMessages(Username username) throws Exception {
MailboxSession session = mailboxManager.createSystemSession(username);
MessageManager messageManager = mailboxManager.getMailbox(MailboxPath.forUser(username, DefaultMailboxes.RESTORED_MESSAGES), session);
- return ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, session));
+ return ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), FetchGroup.MINIMAL, session));
}
private DeletedMessage.Builder.RequireHasAttachment<DeletedMessage.Builder.RequireSize<DeletedMessage.Builder.FinalStage>> messageWithAttachmentBuilder() {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 08/23: JAMES-2989 POP3 should rely on mailbox-api
fetch groups
Posted by bt...@apache.org.
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 844c0adbe7d6941a0c3ce94f76c89bb86ef3bc1d
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:37:24 2019 +0700
JAMES-2989 POP3 should rely on mailbox-api fetch groups
---
.../james/pop3server/mailbox/MailboxAdapter.java | 48 +++-------------------
1 file changed, 5 insertions(+), 43 deletions(-)
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 b6ca3b2..996e3b3 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
@@ -22,10 +22,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
import java.util.stream.Collectors;
import org.apache.james.mailbox.MailboxManager;
@@ -33,6 +31,7 @@ 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.FetchGroupImpl;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResult.FetchGroup;
@@ -43,47 +42,10 @@ import com.github.steveash.guavate.Guavate;
import com.google.common.collect.ImmutableList;
public class MailboxAdapter implements Mailbox {
-
- private abstract static class POP3FetchGroup implements FetchGroup {
- @Override
- public Set<PartContentDescriptor> getPartContentDescriptors() {
- return new HashSet<>();
- }
- }
-
- private static final FetchGroup FULL_GROUP = new POP3FetchGroup() {
-
- @Override
- public int content() {
- return BODY_CONTENT | HEADERS;
- }
-
- };
-
- private static final FetchGroup BODY_GROUP = new POP3FetchGroup() {
-
- @Override
- public int content() {
- return BODY_CONTENT;
- }
-
- };
-
- private static final FetchGroup HEADERS_GROUP = new POP3FetchGroup() {
-
- @Override
- public int content() {
- return HEADERS;
- }
- };
-
- private static final FetchGroup METADATA_GROUP = new POP3FetchGroup() {
-
- @Override
- public int content() {
- return MINIMAL;
- }
- };
+ private static final FetchGroup FULL_GROUP = FetchGroupImpl.FULL_CONTENT;
+ private static final FetchGroup BODY_GROUP = FetchGroupImpl.BODY_CONTENT;
+ private static final FetchGroup HEADERS_GROUP = FetchGroupImpl.HEADERS;
+ private static final FetchGroup METADATA_GROUP = FetchGroupImpl.MINIMAL;
private final MessageManager manager;
private final MailboxSession session;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 02/23: JAMES-2989 FetchGroupImpl constructors
should be private
Posted by bt...@apache.org.
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 a311e9e5caebece4157052c80e2368b3f9f5c7fb
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:07:18 2019 +0700
JAMES-2989 FetchGroupImpl constructors should be private
Encourage using base constants instead.
---
.../org/apache/james/mailbox/model/FetchGroupImpl.java | 18 +++++++-----------
.../james/imap/processor/fetch/FetchProcessor.java | 2 +-
.../mailets/delivery/MailboxAppenderTest.java | 9 ++++-----
3 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
index c5d0430..d3b8d62 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
@@ -29,27 +29,23 @@ import org.apache.james.mailbox.model.MessageResult.MimePath;
*/
public class FetchGroupImpl implements MessageResult.FetchGroup {
- public static final MessageResult.FetchGroup MINIMAL = new FetchGroupImpl(MessageResult.FetchGroup.MINIMAL);
+ public static final FetchGroupImpl MINIMAL = new FetchGroupImpl(MessageResult.FetchGroup.MINIMAL);
- public static final MessageResult.FetchGroup HEADERS = new FetchGroupImpl(MessageResult.FetchGroup.HEADERS);
+ public static final FetchGroupImpl HEADERS = new FetchGroupImpl(MessageResult.FetchGroup.HEADERS);
- public static final MessageResult.FetchGroup FULL_CONTENT = new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT);
+ public static final FetchGroupImpl FULL_CONTENT = new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT);
- public static final MessageResult.FetchGroup BODY_CONTENT = new FetchGroupImpl(MessageResult.FetchGroup.BODY_CONTENT);
+ public static final FetchGroupImpl BODY_CONTENT = new FetchGroupImpl(MessageResult.FetchGroup.BODY_CONTENT);
- private int content = MessageResult.FetchGroup.MINIMAL;
+ private int content;
private Set<PartContentDescriptor> partContentDescriptors;
- public FetchGroupImpl() {
- this(0, new HashSet<>());
- }
-
- public FetchGroupImpl(int content) {
+ private FetchGroupImpl(int content) {
this(content, new HashSet<>());
}
- public FetchGroupImpl(int content, Set<PartContentDescriptor> partContentDescriptors) {
+ private FetchGroupImpl(int content, Set<PartContentDescriptor> partContentDescriptors) {
this.content = content;
this.partContentDescriptors = partContentDescriptors;
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
index d35b7bd..a75fd30 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
@@ -186,7 +186,7 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
}
protected FetchGroup getFetchGroup(FetchData fetch) {
- FetchGroupImpl result = new FetchGroupImpl();
+ FetchGroupImpl result = FetchGroupImpl.MINIMAL;
if (fetch.isEnvelope()) {
result.or(FetchGroup.HEADERS);
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
index 5c1f626..58102dd 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxPath;
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.util.concurrency.ConcurrentTestRunner;
import org.junit.jupiter.api.BeforeEach;
@@ -72,7 +71,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, FOLDER);
MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER), session)
- .getMessages(MessageRange.all(), new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT), session);
+ .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
@@ -86,7 +85,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, FOLDER);
MessageResultIterator messages = mailboxManager.getMailbox(mailboxPath, session)
- .getMessages(MessageRange.all(), new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT), session);
+ .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
@@ -103,7 +102,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, "." + FOLDER);
MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER), session)
- .getMessages(MessageRange.all(), new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT), session);
+ .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
@@ -114,7 +113,7 @@ public class MailboxAppenderTest {
testee.append(mimeMessage, USER, FOLDER + "/any");
MessageResultIterator messages = mailboxManager.getMailbox(MailboxPath.forUser(USER, FOLDER + ".any"), session)
- .getMessages(MessageRange.all(), new FetchGroupImpl(MessageResult.FetchGroup.FULL_CONTENT), session);
+ .getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, session);
assertThat(messages).toIterable()
.hasSize(1);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 22/23: JAMES-2988 Restrict MessageView to the
minimal one in GetResponse
Posted by bt...@apache.org.
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 b9af21bced5e8f1478a0e2bd4186dc48e320b7bf
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Nov 26 16:54:55 2019 +0700
JAMES-2988 Restrict MessageView to the minimal one in GetResponse
---
.../jmap/draft/methods/GetMessagesMethod.java | 19 +--
.../message/view/MessageHeaderViewFactory.java | 4 +-
.../message/view/MessageMetadataViewFactory.java | 5 +-
...iewFactory.java => MetaMessageViewFactory.java} | 47 ++++----
.../jmap/draft/methods/GetMessagesMethodTest.java | 129 +++++++++++++++++++--
5 files changed, 160 insertions(+), 44 deletions(-)
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
index 966ec40..01c2c25 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
@@ -33,8 +33,9 @@ import org.apache.james.jmap.draft.model.GetMessagesResponse;
import org.apache.james.jmap.draft.model.MessageProperties;
import org.apache.james.jmap.draft.model.MessageProperties.HeaderProperty;
import org.apache.james.jmap.draft.model.MethodCallId;
-import org.apache.james.jmap.draft.model.message.view.MessageFullView;
-import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory;
+import org.apache.james.jmap.draft.model.message.view.MessageView;
+import org.apache.james.jmap.draft.model.message.view.MessageViewFactory;
+import org.apache.james.jmap.draft.model.message.view.MetaMessageViewFactory;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.exception.MailboxException;
@@ -59,16 +60,16 @@ public class GetMessagesMethod implements Method {
private static final Logger LOGGER = LoggerFactory.getLogger(GetMessagesMethod.class);
private static final Method.Request.Name METHOD_NAME = Method.Request.name("getMessages");
private static final Method.Response.Name RESPONSE_NAME = Method.Response.name("messages");
- private final MessageFullViewFactory messageFullViewFactory;
+ private final MetaMessageViewFactory messageViewFactory;
private final MessageIdManager messageIdManager;
private final MetricFactory metricFactory;
@Inject
@VisibleForTesting GetMessagesMethod(
- MessageFullViewFactory messageFullViewFactory,
+ MetaMessageViewFactory messageViewFactory,
MessageIdManager messageIdManager,
MetricFactory metricFactory) {
- this.messageFullViewFactory = messageFullViewFactory;
+ this.messageViewFactory = messageViewFactory;
this.messageIdManager = messageIdManager;
this.metricFactory = metricFactory;
}
@@ -123,6 +124,8 @@ public class GetMessagesMethod implements Method {
try {
MessageProperties.ReadProfile readProfile = getMessagesRequest.getProperties().computeReadLevel();
+ MessageViewFactory factory = messageViewFactory.getFactory(readProfile);
+
return GetMessagesResponse.builder()
.messages(
messageIdManager.getMessages(getMessagesRequest.getIds(), FetchGroup.FULL_CONTENT, mailboxSession)
@@ -132,7 +135,7 @@ public class GetMessagesMethod implements Method {
.values()
.stream()
.filter(collection -> !collection.isEmpty())
- .flatMap(toMessageViews())
+ .flatMap(toMessageViews(factory))
.collect(Guavate.toImmutableList()))
.expectedMessageIds(getMessagesRequest.getIds())
.build();
@@ -141,10 +144,10 @@ public class GetMessagesMethod implements Method {
}
}
- private Function<Collection<MessageResult>, Stream<MessageFullView>> toMessageViews() {
+ private Function<Collection<MessageResult>, Stream<MessageView>> toMessageViews(MessageViewFactory factory) {
return messageResults -> {
try {
- return Stream.of(messageFullViewFactory.fromMessageResults(messageResults));
+ return Stream.of(factory.fromMessageResults(messageResults));
} catch (Exception e) {
LOGGER.error("Can not convert MessageResults to Message for {}", messageResults.iterator().next().getMessageId().serialize(), e);
return Stream.of();
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java
index 6995b44..27392f7 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java
@@ -36,13 +36,15 @@ import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mime4j.dom.Message;
import org.apache.james.mime4j.stream.MimeConfig;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings;
public class MessageHeaderViewFactory implements MessageViewFactory<MessageHeaderView> {
private final BlobManager blobManager;
@Inject
- MessageHeaderViewFactory(BlobManager blobManager) {
+ @VisibleForTesting
+ public MessageHeaderViewFactory(BlobManager blobManager) {
this.blobManager = blobManager;
}
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java
index 95a382f..e98f609 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java
@@ -30,11 +30,14 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageResult;
+import com.google.common.annotations.VisibleForTesting;
+
public class MessageMetadataViewFactory implements MessageViewFactory<MessageMetadataView> {
private final BlobManager blobManager;
@Inject
- MessageMetadataViewFactory(BlobManager blobManager) {
+ @VisibleForTesting
+ public MessageMetadataViewFactory(BlobManager blobManager) {
this.blobManager = blobManager;
}
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java
similarity index 50%
copy from server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java
copy to server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java
index 95a382f..f513613 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java
@@ -19,39 +19,32 @@
package org.apache.james.jmap.draft.model.message.view;
-import java.util.Collection;
-import java.util.List;
-
import javax.inject.Inject;
-import org.apache.james.jmap.draft.model.BlobId;
-import org.apache.james.mailbox.BlobManager;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.jmap.draft.model.MessageProperties;
-public class MessageMetadataViewFactory implements MessageViewFactory<MessageMetadataView> {
- private final BlobManager blobManager;
+public class MetaMessageViewFactory {
+ private final MessageFullViewFactory messageFullViewFactory;
+ private final MessageHeaderViewFactory messageHeaderViewFactory;
+ private final MessageMetadataViewFactory messageMetadataViewFactory;
@Inject
- MessageMetadataViewFactory(BlobManager blobManager) {
- this.blobManager = blobManager;
+ public MetaMessageViewFactory(MessageFullViewFactory messageFullViewFactory, MessageHeaderViewFactory messageHeaderViewFactory, MessageMetadataViewFactory messageMetadataViewFactory) {
+ this.messageFullViewFactory = messageFullViewFactory;
+ this.messageHeaderViewFactory = messageHeaderViewFactory;
+ this.messageMetadataViewFactory = messageMetadataViewFactory;
}
- @Override
- public MessageMetadataView fromMessageResults(Collection<MessageResult> messageResults) throws MailboxException {
- assertOneMessageId(messageResults);
-
- MessageResult firstMessageResult = messageResults.iterator().next();
- List<MailboxId> mailboxIds = getMailboxIds(messageResults);
-
- return MessageMetadataView.messageMetadataBuilder()
- .id(firstMessageResult.getMessageId())
- .mailboxIds(mailboxIds)
- .blobId(BlobId.of(blobManager.toBlobId(firstMessageResult.getMessageId())))
- .threadId(firstMessageResult.getMessageId().serialize())
- .keywords(getKeywords(messageResults))
- .size(firstMessageResult.getSize())
- .build();
+ public MessageViewFactory getFactory(MessageProperties.ReadProfile readProfile) {
+ switch (readProfile) {
+ case Full:
+ return messageFullViewFactory;
+ case Header:
+ return messageHeaderViewFactory;
+ case Metadata:
+ return messageMetadataViewFactory;
+ default:
+ throw new IllegalArgumentException(readProfile + " is not a James JMAP draft supported view");
+ }
}
}
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
index 6fa5adb..420761e 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java
@@ -45,6 +45,11 @@ import org.apache.james.jmap.draft.model.MessageProperties.MessageProperty;
import org.apache.james.jmap.draft.model.MethodCallId;
import org.apache.james.jmap.draft.model.message.view.MessageFullView;
import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory;
+import org.apache.james.jmap.draft.model.message.view.MessageHeaderView;
+import org.apache.james.jmap.draft.model.message.view.MessageHeaderViewFactory;
+import org.apache.james.jmap.draft.model.message.view.MessageMetadataView;
+import org.apache.james.jmap.draft.model.message.view.MessageMetadataViewFactory;
+import org.apache.james.jmap.draft.model.message.view.MetaMessageViewFactory;
import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
import org.apache.james.mailbox.BlobManager;
@@ -96,7 +101,7 @@ public class GetMessagesMethodTest {
private MailboxPath inboxPath;
private MailboxPath customMailboxPath;
private MethodCallId methodCallId;
- private MessageFullViewFactory messageFullViewFactory;
+ private MessageMetadataViewFactory messageMetadataViewFactory;
@Before
public void setup() throws Exception {
@@ -106,7 +111,12 @@ public class GetMessagesMethodTest {
MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
BlobManager blobManager = mock(BlobManager.class);
when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
- messageFullViewFactory = spy(new MessageFullViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor));
+ messageMetadataViewFactory = spy(new MessageMetadataViewFactory(blobManager));
+ MetaMessageViewFactory metaMessageViewFactory = new MetaMessageViewFactory(
+ new MessageFullViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor),
+ new MessageHeaderViewFactory(blobManager),
+ messageMetadataViewFactory);
+
InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
mailboxManager = resources.getMailboxManager();
@@ -116,7 +126,7 @@ public class GetMessagesMethodTest {
mailboxManager.createMailbox(inboxPath, session);
mailboxManager.createMailbox(customMailboxPath, session);
messageIdManager = resources.getMessageIdManager();
- testee = new GetMessagesMethod(messageFullViewFactory, messageIdManager, new DefaultMetricFactory());
+ testee = new GetMessagesMethod(metaMessageViewFactory, messageIdManager, new DefaultMetricFactory());
messageContent1 = org.apache.james.mime4j.dom.Message.Builder.of()
.setSubject("message 1 subject")
@@ -470,13 +480,118 @@ public class GetMessagesMethodTest {
assertThat(response).isInstanceOf(GetMessagesResponse.class);
GetMessagesResponse getMessagesResponse = (GetMessagesResponse) response;
assertThat(getMessagesResponse.list()).hasSize(1)
- .hasOnlyElementsOfType(MessageFullView.class)
- .extracting(MessageFullView.class::cast)
- .flatExtracting(MessageFullView::getMailboxIds)
+ .hasOnlyElementsOfType(MessageMetadataView.class)
+ .extracting(MessageMetadataView.class::cast)
+ .flatExtracting(MessageMetadataView::getMailboxIds)
.containsOnly(customMailboxId, message1.getMailboxId());
}
@Test
+ public void processShouldReturnMetadataWhenOnlyMailboxIds() throws Exception {
+ MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
+
+ ComposedMessageId message1 = inbox.appendMessage(
+ AppendCommand.from(
+ org.apache.james.mime4j.dom.Message.Builder.of()
+ .setFrom("user@domain.tld")
+ .setField(new RawField("header1", "Header1Content"))
+ .setField(new RawField("HEADer2", "Header2Content"))
+ .setSubject("message 1 subject")
+ .setBody("my message", StandardCharsets.UTF_8)),
+ session);
+
+ MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId();
+ messageIdManager.setInMailboxes(message1.getMessageId(),
+ ImmutableList.of(message1.getMailboxId(), customMailboxId),
+ session);
+
+ GetMessagesRequest request = GetMessagesRequest.builder()
+ .ids(ImmutableList.of(message1.getMessageId()))
+ .properties(ImmutableList.of("mailboxIds"))
+ .build();
+
+ List<JmapResponse> result = testee.process(request, methodCallId, session).collect(Collectors.toList());
+
+ assertThat(result).hasSize(1);
+ Method.Response response = result.get(0).getResponse();
+ assertThat(response).isInstanceOf(GetMessagesResponse.class);
+ GetMessagesResponse getMessagesResponse = (GetMessagesResponse) response;
+ assertThat(getMessagesResponse.list())
+ .hasSize(1)
+ .hasOnlyElementsOfType(MessageMetadataView.class);
+ }
+
+ @Test
+ public void processShouldReturnFullViewWhenRequestedTextBody() throws Exception {
+ MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
+
+ ComposedMessageId message1 = inbox.appendMessage(
+ AppendCommand.from(
+ org.apache.james.mime4j.dom.Message.Builder.of()
+ .setFrom("user@domain.tld")
+ .setField(new RawField("header1", "Header1Content"))
+ .setField(new RawField("HEADer2", "Header2Content"))
+ .setSubject("message 1 subject")
+ .setBody("my message", StandardCharsets.UTF_8)),
+ session);
+
+ MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId();
+ messageIdManager.setInMailboxes(message1.getMessageId(),
+ ImmutableList.of(message1.getMailboxId(), customMailboxId),
+ session);
+
+ GetMessagesRequest request = GetMessagesRequest.builder()
+ .ids(ImmutableList.of(message1.getMessageId()))
+ .properties(ImmutableList.of("mailboxIds", "textBody"))
+ .build();
+
+ List<JmapResponse> result = testee.process(request, methodCallId, session).collect(Collectors.toList());
+
+ assertThat(result).hasSize(1);
+ Method.Response response = result.get(0).getResponse();
+ assertThat(response).isInstanceOf(GetMessagesResponse.class);
+ GetMessagesResponse getMessagesResponse = (GetMessagesResponse) response;
+ assertThat(getMessagesResponse.list())
+ .hasSize(1)
+ .hasOnlyElementsOfType(MessageFullView.class);
+ }
+
+ @Test
+ public void processShouldReturnHeaderViewWhenRequestedTo() throws Exception {
+ MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
+
+ ComposedMessageId message1 = inbox.appendMessage(
+ AppendCommand.from(
+ org.apache.james.mime4j.dom.Message.Builder.of()
+ .setFrom("user@domain.tld")
+ .setField(new RawField("header1", "Header1Content"))
+ .setField(new RawField("HEADer2", "Header2Content"))
+ .setSubject("message 1 subject")
+ .setBody("my message", StandardCharsets.UTF_8)),
+ session);
+
+ MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId();
+ messageIdManager.setInMailboxes(message1.getMessageId(),
+ ImmutableList.of(message1.getMailboxId(), customMailboxId),
+ session);
+
+ GetMessagesRequest request = GetMessagesRequest.builder()
+ .ids(ImmutableList.of(message1.getMessageId()))
+ .properties(ImmutableList.of("mailboxIds", "to"))
+ .build();
+
+ List<JmapResponse> result = testee.process(request, methodCallId, session).collect(Collectors.toList());
+
+ assertThat(result).hasSize(1);
+ Method.Response response = result.get(0).getResponse();
+ assertThat(response).isInstanceOf(GetMessagesResponse.class);
+ GetMessagesResponse getMessagesResponse = (GetMessagesResponse) response;
+ assertThat(getMessagesResponse.list())
+ .hasSize(1)
+ .hasOnlyElementsOfType(MessageHeaderView.class);
+ }
+
+ @Test
public void processShouldNotFailOnSingleMessageFailure() throws Exception {
MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
@@ -493,7 +608,7 @@ public class GetMessagesMethodTest {
doCallRealMethod()
.doThrow(new RuntimeException())
- .when(messageFullViewFactory)
+ .when(messageMetadataViewFactory)
.fromMessageResults(any());
GetMessagesRequest request = GetMessagesRequest.builder()
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 09/23: JAMES-2989 Mailbox copier should rely on
mailbox-api fetch groups
Posted by bt...@apache.org.
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 f608394a91b888157916143f1d48a1ad0012a1b3
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:39:09 2019 +0700
JAMES-2989 Mailbox copier should rely on mailbox-api fetch groups
---
.../mailbox/tools/copier/MailboxCopierImpl.java | 20 ++------------------
1 file changed, 2 insertions(+), 18 deletions(-)
diff --git a/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java b/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java
index 4f04f4b..5955469 100644
--- a/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java
+++ b/mailbox/tools/copier/src/main/java/org/apache/james/mailbox/tools/copier/MailboxCopierImpl.java
@@ -20,10 +20,8 @@ package org.apache.james.mailbox.tools.copier;
import java.io.IOException;
import java.util.Calendar;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
import javax.mail.Flags.Flag;
@@ -34,10 +32,10 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.copier.MailboxCopier;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MailboxExistsException;
+import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.store.streaming.InputStreamContent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -49,20 +47,6 @@ import org.slf4j.LoggerFactory;
public class MailboxCopierImpl implements MailboxCopier {
private static final Logger LOGGER = LoggerFactory.getLogger(MailboxCopierImpl.class.getName());
- private static final FetchGroup GROUP = new FetchGroup() {
-
- @Override
- public int content() {
- return FULL_CONTENT;
- }
-
- @Override
- public Set<PartContentDescriptor> getPartContentDescriptors() {
- return new HashSet<>();
- }
-
- };
-
@Override
public void copyMailboxes(MailboxManager srcMailboxManager, MailboxManager dstMailboxManager) throws MailboxException, IOException {
@@ -115,7 +99,7 @@ public class MailboxCopierImpl implements MailboxCopier {
MessageManager dstMessageManager = dstMailboxManager.getMailbox(mailboxPath, dstMailboxSession);
int j = 0;
- Iterator<MessageResult> messageResultIterator = srcMessageManager.getMessages(MessageRange.all(), GROUP, srcMailboxSession);
+ Iterator<MessageResult> messageResultIterator = srcMessageManager.getMessages(MessageRange.all(), FetchGroupImpl.FULL_CONTENT, srcMailboxSession);
while (messageResultIterator.hasNext()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 03/23: JAMES-2989 MimePathImpl class should be
located in mailbox-api
Posted by bt...@apache.org.
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 6ee07f309d900d2690a7e778e34b9a569cec2688
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:12:08 2019 +0700
JAMES-2989 MimePathImpl class should be located in mailbox-api
Or we don't have the tools in the api to actually be calling it...
---
.../src/main/java/org/apache/james/mailbox/model}/MimePathImpl.java | 6 ++----
.../java/org/apache/james/imap/processor/fetch/FetchProcessor.java | 1 +
.../org/apache/james/imap/processor/fetch/FetchResponseBuilder.java | 1 +
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimePathImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
similarity index 93%
rename from protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimePathImpl.java
rename to mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
index c695221..d75020d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimePathImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
@@ -20,13 +20,11 @@
/**
*
*/
-package org.apache.james.imap.processor.fetch;
+package org.apache.james.mailbox.model;
import java.util.Arrays;
-import org.apache.james.mailbox.model.MessageResult;
-
-final class MimePathImpl implements MessageResult.MimePath {
+public class MimePathImpl implements MessageResult.MimePath {
private final int[] positions;
public MimePathImpl(int[] positions) {
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
index a75fd30..ebe12e5 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
@@ -49,6 +49,7 @@ import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MessageResult.MimePath;
import org.apache.james.mailbox.model.MessageResultIterator;
+import org.apache.james.mailbox.model.MimePathImpl;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
import org.slf4j.Logger;
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
index a56e0fc..29b9535 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
@@ -46,6 +46,7 @@ import org.apache.james.mailbox.exception.MessageRangeException;
import org.apache.james.mailbox.model.Content;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.MimePathImpl;
public final class FetchResponseBuilder {
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 04/23: JAMES-2989 Rework equals & hashcode for
MimePathImpl
Posted by bt...@apache.org.
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 b4d98b1daf9059475b7a61beb625cc8becd1a242
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:14:29 2019 +0700
JAMES-2989 Rework equals & hashcode for MimePathImpl
---
.../apache/james/mailbox/model/MimePathImpl.java | 28 +++++------
.../james/mailbox/model/MimePathImplTest.java} | 56 +++-------------------
2 files changed, 18 insertions(+), 66 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
index d75020d..66c5fcf 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
@@ -37,25 +37,19 @@ public class MimePathImpl implements MessageResult.MimePath {
return positions;
}
- public int hashCode() {
- return positions.length;
- }
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof MimePathImpl) {
+ MimePathImpl mimePath = (MimePathImpl) o;
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
+ return Arrays.equals(this.positions, mimePath.positions);
}
- final MimePathImpl other = (MimePathImpl) obj;
- if (!Arrays.equals(positions, other.positions)) {
- return false;
- }
- return true;
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Arrays.hashCode(positions);
}
public String toString() {
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
similarity index 50%
copy from mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
copy to mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
index d75020d..0b1caf9 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
@@ -17,58 +17,16 @@
* under the License. *
****************************************************************/
-/**
- *
- */
package org.apache.james.mailbox.model;
-import java.util.Arrays;
+import org.junit.jupiter.api.Test;
-public class MimePathImpl implements MessageResult.MimePath {
- private final int[] positions;
+import nl.jqno.equalsverifier.EqualsVerifier;
- public MimePathImpl(int[] positions) {
- super();
- this.positions = positions;
- }
-
- @Override
- public int[] getPositions() {
- return positions;
- }
-
- public int hashCode() {
- return positions.length;
- }
-
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final MimePathImpl other = (MimePathImpl) obj;
- if (!Arrays.equals(positions, other.positions)) {
- return false;
- }
- return true;
- }
-
- public String toString() {
- final StringBuilder builder = new StringBuilder("MIMEPath:");
- boolean isFirst = false;
- for (int position : positions) {
- if (isFirst) {
- isFirst = false;
- } else {
- builder.append('.');
- }
- builder.append(position);
- }
- return builder.toString();
+class MimePathImplTest {
+ @Test
+ void shouldMatchBeanContract() {
+ EqualsVerifier.forClass(MimePathImpl.class)
+ .verify();
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 19/23: JAMES-2988 Full unit test coverage for
FetchGroup generation in IMAP
Posted by bt...@apache.org.
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 575cac3b4a2d1e5814fcf6f46512c92bc9ed5928
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Nov 27 10:08:53 2019 +0700
JAMES-2988 Full unit test coverage for FetchGroup generation in IMAP
---
protocols/imap/pom.xml | 5 ++
.../apache/james/imap/api/message/FetchData.java | 33 ++++++---
.../imap/processor/fetch/FetchDataConverter.java | 83 ++++++++++++++++++++++
.../james/imap/processor/fetch/FetchProcessor.java | 57 +--------------
.../processor/fetch/FetchDataConverterTest.java | 79 ++++++++++++++++++++
5 files changed, 190 insertions(+), 67 deletions(-)
diff --git a/protocols/imap/pom.xml b/protocols/imap/pom.xml
index 000e30b..bf957e0 100644
--- a/protocols/imap/pom.xml
+++ b/protocols/imap/pom.xml
@@ -90,6 +90,11 @@
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-params</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/message/FetchData.java b/protocols/imap/src/main/java/org/apache/james/imap/api/message/FetchData.java
index 7e836b7..bc5095d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/api/message/FetchData.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/api/message/FetchData.java
@@ -58,56 +58,63 @@ public class FetchData {
return body;
}
- public void setBody(boolean body) {
+ public FetchData setBody(boolean body) {
this.body = body;
+ return this;
}
public boolean isBodyStructure() {
return bodyStructure;
}
- public void setBodyStructure(boolean bodyStructure) {
+ public FetchData setBodyStructure(boolean bodyStructure) {
this.bodyStructure = bodyStructure;
+ return this;
}
public boolean isEnvelope() {
return envelope;
}
- public void setEnvelope(boolean envelope) {
+ public FetchData setEnvelope(boolean envelope) {
this.envelope = envelope;
+ return this;
}
public boolean isFlags() {
return flags;
}
- public void setFlags(boolean flags) {
+ public FetchData setFlags(boolean flags) {
this.flags = flags;
+ return this;
}
public boolean isInternalDate() {
return internalDate;
}
- public void setInternalDate(boolean internalDate) {
+ public FetchData setInternalDate(boolean internalDate) {
this.internalDate = internalDate;
+ return this;
}
public boolean isSize() {
return size;
}
- public void setSize(boolean size) {
+ public FetchData setSize(boolean size) {
this.size = size;
+ return this;
}
public boolean isUid() {
return uid;
}
- public void setUid(boolean uid) {
+ public FetchData setUid(boolean uid) {
this.uid = uid;
+ return this;
}
public boolean isSetSeen() {
@@ -119,13 +126,15 @@ public class FetchData {
return modSeq;
}
- public void setModSeq(boolean modSeq) {
+ public FetchData setModSeq(boolean modSeq) {
this.modSeq = modSeq;
+ return this;
}
- public void setChangedSince(long changedSince) {
+ public FetchData setChangedSince(long changedSince) {
this.changedSince = changedSince;
this.modSeq = true;
+ return this;
}
public long getChangedSince() {
@@ -137,8 +146,9 @@ public class FetchData {
*
* @param vanished
*/
- public void setVanished(boolean vanished) {
+ public FetchData setVanished(boolean vanished) {
this.vanished = vanished;
+ return this;
}
/**
@@ -150,11 +160,12 @@ public class FetchData {
return vanished;
}
- public void add(BodyFetchElement element, boolean peek) {
+ public FetchData add(BodyFetchElement element, boolean peek) {
if (!peek) {
setSeen = true;
}
bodyElements.add(element);
+ return this;
}
public int hashCode() {
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java
new file mode 100644
index 0000000..54d4b5e
--- /dev/null
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java
@@ -0,0 +1,83 @@
+/****************************************************************
+ * 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.imap.processor.fetch;
+
+import java.util.Collection;
+
+import org.apache.james.imap.api.message.BodyFetchElement;
+import org.apache.james.imap.api.message.FetchData;
+import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.MimePath;
+
+class FetchDataConverter {
+
+ static FetchGroup getFetchGroup(FetchData fetch) {
+ FetchGroup result = FetchGroup.MINIMAL;
+
+ if (fetch.isEnvelope()) {
+ result = result.or(FetchGroup.HEADERS_MASK);
+ }
+ if (fetch.isBody() || fetch.isBodyStructure()) {
+ result = result.or(FetchGroup.MIME_DESCRIPTOR_MASK);
+ }
+
+ Collection<BodyFetchElement> bodyElements = fetch.getBodyElements();
+ if (bodyElements != null) {
+ for (BodyFetchElement element : bodyElements) {
+ final int sectionType = element.getSectionType();
+ final int[] path = element.getPath();
+ final boolean isBase = (path == null || path.length == 0);
+ switch (sectionType) {
+ case BodyFetchElement.CONTENT:
+ if (isBase) {
+ result = addContent(result, path, isBase, FetchGroup.FULL_CONTENT_MASK);
+ } else {
+ result = addContent(result, path, isBase, FetchGroup.MIME_CONTENT_MASK);
+ }
+ break;
+ case BodyFetchElement.HEADER:
+ case BodyFetchElement.HEADER_NOT_FIELDS:
+ case BodyFetchElement.HEADER_FIELDS:
+ result = addContent(result, path, isBase, FetchGroup.HEADERS_MASK);
+ break;
+ case BodyFetchElement.MIME:
+ result = addContent(result, path, isBase, FetchGroup.MIME_HEADERS_MASK);
+ break;
+ case BodyFetchElement.TEXT:
+ result = addContent(result, path, isBase, FetchGroup.BODY_CONTENT_MASK);
+ break;
+ default:
+ break;
+ }
+
+ }
+ }
+ return result;
+ }
+
+ private static FetchGroup addContent(FetchGroup result, int[] path, boolean isBase, int content) {
+ if (isBase) {
+ return result.or(content);
+ } else {
+ MimePath mimePath = new MimePath(path);
+ return result.addPartContent(mimePath, content);
+ }
+ }
+}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
index ab86624..1ee1a24 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
@@ -21,13 +21,11 @@ package org.apache.james.imap.processor.fetch;
import java.io.Closeable;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.api.ImapSessionUtils;
import org.apache.james.imap.api.display.HumanReadableText;
-import org.apache.james.imap.api.message.BodyFetchElement;
import org.apache.james.imap.api.message.FetchData;
import org.apache.james.imap.api.message.IdRange;
import org.apache.james.imap.api.message.response.StatusResponseFactory;
@@ -47,7 +45,6 @@ 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.mailbox.model.MessageResultIterator;
-import org.apache.james.mailbox.model.MimePath;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
import org.slf4j.Logger;
@@ -148,7 +145,7 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
*/
protected void processMessageRanges(ImapSession session, MessageManager mailbox, List<MessageRange> ranges, FetchData fetch, boolean useUids, MailboxSession mailboxSession, Responder responder) throws MailboxException {
final FetchResponseBuilder builder = new FetchResponseBuilder(new EnvelopeBuilder());
- FetchGroup resultToFetch = getFetchGroup(fetch);
+ FetchGroup resultToFetch = FetchDataConverter.getFetchGroup(fetch);
for (MessageRange range : ranges) {
MessageResultIterator messages = mailbox.getMessages(range, resultToFetch, mailboxSession);
@@ -184,58 +181,6 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
}
- protected FetchGroup getFetchGroup(FetchData fetch) {
- FetchGroup result = FetchGroup.MINIMAL;
-
- if (fetch.isEnvelope()) {
- result = result.or(FetchGroup.HEADERS_MASK);
- }
- if (fetch.isBody() || fetch.isBodyStructure()) {
- result = result.or(FetchGroup.MIME_DESCRIPTOR_MASK);
- }
-
- Collection<BodyFetchElement> bodyElements = fetch.getBodyElements();
- if (bodyElements != null) {
- for (BodyFetchElement element : bodyElements) {
- final int sectionType = element.getSectionType();
- final int[] path = element.getPath();
- final boolean isBase = (path == null || path.length == 0);
- switch (sectionType) {
- case BodyFetchElement.CONTENT:
- if (isBase) {
- result = addContent(result, path, isBase, FetchGroup.FULL_CONTENT_MASK);
- } else {
- result = addContent(result, path, isBase, FetchGroup.MIME_CONTENT_MASK);
- }
- break;
- case BodyFetchElement.HEADER:
- case BodyFetchElement.HEADER_NOT_FIELDS:
- case BodyFetchElement.HEADER_FIELDS:
- result = addContent(result, path, isBase, FetchGroup.HEADERS_MASK);
- break;
- case BodyFetchElement.MIME:
- result = addContent(result, path, isBase, FetchGroup.MIME_HEADERS_MASK);
- break;
- case BodyFetchElement.TEXT:
- result = addContent(result, path, isBase, FetchGroup.BODY_CONTENT_MASK);
- break;
- default:
- break;
- }
-
- }
- }
- return result;
- }
-
- private FetchGroup addContent(FetchGroup result, int[] path, boolean isBase, int content) {
- if (isBase) {
- return result.or(content);
- } else {
- MimePath mimePath = new MimePath(path);
- return result.addPartContent(mimePath, content);
- }
- }
@Override
protected Closeable addContextToMDC(FetchRequest request) {
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java
new file mode 100644
index 0000000..2c304ec
--- /dev/null
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java
@@ -0,0 +1,79 @@
+/****************************************************************
+ * 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.imap.processor.fetch;
+
+import static org.apache.james.imap.api.message.BodyFetchElement.CONTENT;
+import static org.apache.james.imap.api.message.BodyFetchElement.HEADER;
+import static org.apache.james.imap.api.message.BodyFetchElement.MIME;
+import static org.apache.james.imap.api.message.BodyFetchElement.TEXT;
+import static org.apache.james.mailbox.model.FetchGroup.MIME_DESCRIPTOR_MASK;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.stream.Stream;
+
+import org.apache.james.imap.api.ImapConstants;
+import org.apache.james.imap.api.message.BodyFetchElement;
+import org.apache.james.imap.api.message.FetchData;
+import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.MimePath;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+class FetchDataConverterTest {
+ private static final boolean PEEK = true;
+ private static final int[] PATH = new int[]{0, 1, 2};
+
+ static Stream<Arguments> getFetchGroupShouldReturnCorrectValue() {
+ return Stream.of(
+ Arguments.arguments(new FetchData(), FetchGroup.MINIMAL),
+ Arguments.arguments(new FetchData().setBody(true), FetchGroup.MINIMAL.or(MIME_DESCRIPTOR_MASK)),
+ Arguments.arguments(new FetchData().setBodyStructure(true), FetchGroup.MINIMAL.or(MIME_DESCRIPTOR_MASK)),
+ Arguments.arguments(new FetchData().setChangedSince(0L), FetchGroup.MINIMAL),
+ Arguments.arguments(new FetchData().setEnvelope(true), FetchGroup.HEADERS),
+ Arguments.arguments(new FetchData().setFlags(true), FetchGroup.MINIMAL),
+ Arguments.arguments(new FetchData().setInternalDate(true), FetchGroup.MINIMAL),
+ Arguments.arguments(new FetchData().setModSeq(true), FetchGroup.MINIMAL),
+ Arguments.arguments(new FetchData().setUid(true), FetchGroup.MINIMAL),
+ Arguments.arguments(new FetchData().setVanished(true), FetchGroup.MINIMAL),
+ Arguments.arguments(new FetchData().add(BodyFetchElement.createRFC822(), PEEK), FetchGroup.FULL_CONTENT),
+ Arguments.arguments(new FetchData().add(BodyFetchElement.createRFC822Header(), PEEK), FetchGroup.HEADERS),
+ Arguments.arguments(new FetchData().add(BodyFetchElement.createRFC822Text(), PEEK), FetchGroup.BODY_CONTENT),
+ Arguments.arguments(new FetchData().add(new BodyFetchElement(ImapConstants.FETCH_RFC822_HEADER, HEADER, PATH, null, null, null), PEEK),
+ FetchGroup.MINIMAL.addPartContent(new MimePath(PATH), FetchGroup.HEADERS_MASK)),
+ Arguments.arguments(new FetchData().add(new BodyFetchElement(ImapConstants.FETCH_RFC822_TEXT, HEADER, PATH, null, null, null), PEEK),
+ FetchGroup.MINIMAL.addPartContent(new MimePath(PATH), FetchGroup.BODY_CONTENT_MASK)),
+ Arguments.arguments(new FetchData().add(new BodyFetchElement(ImapConstants.FETCH_RFC822_TEXT, CONTENT, PATH, null, null, null), PEEK),
+ FetchGroup.MINIMAL.addPartContent(new MimePath(PATH), FetchGroup.BODY_CONTENT_MASK)),
+ Arguments.arguments(new FetchData().add(new BodyFetchElement(ImapConstants.FETCH_RFC822_TEXT, CONTENT, PATH, null, null, null), PEEK),
+ FetchGroup.MINIMAL.addPartContent(new MimePath(PATH), FetchGroup.MIME_CONTENT_MASK)),
+ Arguments.arguments(new FetchData().add(new BodyFetchElement(ImapConstants.FETCH_RFC822_TEXT, MIME, PATH, null, null, null), PEEK),
+ FetchGroup.MINIMAL.addPartContent(new MimePath(PATH), FetchGroup.MIME_HEADERS_MASK)),
+ Arguments.arguments(new FetchData().add(new BodyFetchElement(ImapConstants.FETCH_RFC822_TEXT, TEXT, PATH, null, null, null), PEEK),
+ FetchGroup.MINIMAL.addPartContent(new MimePath(PATH), FetchGroup.BODY_CONTENT_MASK)));
+ }
+
+ @ParameterizedTest
+ @MethodSource
+ void getFetchGroupShouldReturnCorrectValue(FetchData initial, FetchGroup expected) {
+ assertThat(FetchDataConverter.getFetchGroup(initial))
+ .isEqualTo(expected);
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 15/23: JAMES-2989 Little refactor for
FetchGroupConverter
Posted by bt...@apache.org.
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 c80a8521b662d9450e42c7d1955fd8848472cb45
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 13:01:06 2019 +0700
JAMES-2989 Little refactor for FetchGroupConverter
---
.../mailbox/store/mail/FetchGroupConverter.java | 51 +++++++++-------------
1 file changed, 20 insertions(+), 31 deletions(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
index 5bceef9..62b30e6 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
@@ -27,44 +27,29 @@ public class FetchGroupConverter {
* {@link MessageMapper.FetchType} for it
*/
public static MessageMapper.FetchType getFetchType(FetchGroup group) {
- int content = group.content();
- boolean headers = false;
- boolean body = false;
- boolean full = false;
-
- if ((content & FetchGroup.HEADERS_MASK) > 0) {
- headers = true;
- content -= FetchGroup.HEADERS_MASK;
- }
- if (group.getPartContentDescriptors().size() > 0) {
- full = true;
- }
- if ((content & FetchGroup.BODY_CONTENT_MASK) > 0) {
- body = true;
- content -= FetchGroup.BODY_CONTENT_MASK;
- }
-
- if ((content & FetchGroup.FULL_CONTENT_MASK) > 0) {
- full = true;
- content -= FetchGroup.FULL_CONTENT_MASK;
+ if (hasMask(group, FetchGroup.FULL_CONTENT_MASK)) {
+ return MessageMapper.FetchType.Full;
}
-
- if ((content & FetchGroup.MIME_DESCRIPTOR_MASK) > 0) {
+ if (hasMask(group, FetchGroup.MIME_DESCRIPTOR_MASK)) {
// If we need the mimedescriptor we MAY need the full content later
// too.
// This gives us no other choice then request it
- full = true;
- content -= FetchGroup.MIME_DESCRIPTOR_MASK;
+ return MessageMapper.FetchType.Full;
}
- if ((content & FetchGroup.MIME_CONTENT_MASK) > 0) {
- full = true;
- content -= FetchGroup.MIME_CONTENT_MASK;
+ if (hasMask(group, FetchGroup.MIME_CONTENT_MASK)) {
+ return MessageMapper.FetchType.Full;
+ }
+ if (hasMask(group, FetchGroup.MIME_HEADERS_MASK)) {
+ return MessageMapper.FetchType.Full;
}
- if ((content & FetchGroup.MIME_HEADERS_MASK) > 0) {
- full = true;
- content -= FetchGroup.MIME_HEADERS_MASK;
+ if (!group.getPartContentDescriptors().isEmpty()) {
+ return MessageMapper.FetchType.Full;
}
- if (full || (body && headers)) {
+
+ boolean headers = hasMask(group, FetchGroup.HEADERS_MASK);
+ boolean body = hasMask(group, FetchGroup.BODY_CONTENT_MASK);
+
+ if (body && headers) {
return MessageMapper.FetchType.Full;
} else if (body) {
return MessageMapper.FetchType.Body;
@@ -74,4 +59,8 @@ public class FetchGroupConverter {
return MessageMapper.FetchType.Metadata;
}
}
+
+ private static boolean hasMask(FetchGroup group, int mask) {
+ return (group.content() & mask) > 0;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 18/23: JAMES-2989 Rework toString for MimePathImpl
Posted by bt...@apache.org.
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 be28f6eb6be6783986d970515dfed63cf08770ed
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Nov 26 13:46:55 2019 +0700
JAMES-2989 Rework toString for MimePathImpl
---
.../api/src/main/java/org/apache/james/mailbox/model/MimePath.java | 7 ++++++-
.../src/test/java/org/apache/james/mailbox/model/MimePathTest.java | 6 +++---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
index f77a5ea..b41301e 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePath.java
@@ -66,7 +66,12 @@ public final class MimePath {
@Override
public final String toString() {
+ List<Integer> parts = Arrays.stream(positions)
+ .boxed()
+ .collect(Guavate.toImmutableList());
+
return "MIMEPath:"
- + Arrays.toString(positions);
+ + Joiner.on('.')
+ .join(parts);
}
}
\ No newline at end of file
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
index 3715a40..91e2651 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathTest.java
@@ -36,20 +36,20 @@ class MimePathTest {
void toStringWhenEmpty() {
int[] empty = {};
assertThat(new MimePath(empty).toString())
- .isEqualTo("MIMEPath:[]");
+ .isEqualTo("MIMEPath:");
}
@Test
void toStringWhenSingle() {
int[] single = {1};
assertThat(new MimePath(single).toString())
- .isEqualTo("MIMEPath:[1]");
+ .isEqualTo("MIMEPath:1");
}
@Test
void toStringWhenMany() {
int[] many = {1, 2, 3};
assertThat(new MimePath(many).toString())
- .isEqualTo("MIMEPath:[1, 2, 3]");
+ .isEqualTo("MIMEPath:1.2.3");
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 10/23: JAMES-2989 POJOify PartContentDescriptor
Posted by bt...@apache.org.
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 a19703b64d7c0917c4777355abe6574acb442131
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:42:28 2019 +0700
JAMES-2989 POJOify PartContentDescriptor
---
.../apache/james/mailbox/model/FetchGroupImpl.java | 4 +--
.../apache/james/mailbox/model/MessageResult.java | 28 ------------------
...criptorImpl.java => PartContentDescriptor.java} | 34 +++++++++++++++++-----
.../apache/james/mailbox/store/ResultUtils.java | 7 +++--
4 files changed, 32 insertions(+), 41 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
index 7cafe91..c9dd1c7 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroupImpl.java
@@ -78,11 +78,11 @@ public class FetchGroupImpl implements MessageResult.FetchGroup {
if (partContentDescriptors == null) {
partContentDescriptors = new HashSet<>();
}
- PartContentDescriptorImpl currentDescriptor = (PartContentDescriptorImpl) partContentDescriptors.stream()
+ PartContentDescriptor currentDescriptor = partContentDescriptors.stream()
.filter(descriptor -> path.equals(descriptor.path()))
.findFirst()
.orElseGet(() -> {
- PartContentDescriptorImpl result = new PartContentDescriptorImpl(path);
+ PartContentDescriptor result = new PartContentDescriptor(path);
partContentDescriptors.add(result);
return result;
});
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
index 7ed64f5..12a4ae8 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
@@ -123,34 +123,6 @@ public interface MessageResult extends Comparable<MessageResult> {
* there is no part content to be fetched
*/
Set<PartContentDescriptor> getPartContentDescriptors();
-
- /**
- * Describes the contents to be fetched for a mail part. All
- * implementations MUST implement equals. Two implementations are equal
- * if and only if their paths are equal.
- */
- interface PartContentDescriptor {
- /**
- * Contents to be fetched. Composed bitwise.
- *
- * @return bitwise descripion
- * @see #MINIMAL
- * @see #MIME_DESCRIPTOR
- * @see #HEADERS
- * @see #FULL_CONTENT
- * @see #BODY_CONTENT
- * @see #MIME_HEADERS
- * @see #MIME_CONTENT
- */
- int content();
-
- /**
- * Path describing the part to be fetched.
- *
- * @return path describing the part, not null
- */
- MimePath path();
- }
}
MimeDescriptor getMimeDescriptor() throws MailboxException;
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
similarity index 64%
rename from mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
rename to mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
index f7a8ccd..38a949c 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
@@ -21,15 +21,18 @@ package org.apache.james.mailbox.model;
import java.util.Objects;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup.PartContentDescriptor;
-
-public class PartContentDescriptorImpl implements PartContentDescriptor {
+/**
+ * Describes the contents to be fetched for a mail part. All
+ * implementations MUST implement equals. Two implementations are equal
+ * if and only if their paths are equal.
+ */
+public class PartContentDescriptor {
private int content = 0;
private final MimePath path;
- public PartContentDescriptorImpl(MimePath path) {
+ public PartContentDescriptor(MimePath path) {
this.path = path;
}
@@ -37,12 +40,27 @@ public class PartContentDescriptorImpl implements PartContentDescriptor {
this.content = this.content | content;
}
- @Override
+ /**
+ * Contents to be fetched. Composed bitwise.
+ *
+ * @return bitwise descripion
+ * @see MessageResult.FetchGroup#MINIMAL
+ * @see MessageResult.FetchGroup#MIME_DESCRIPTOR
+ * @see MessageResult.FetchGroup#HEADERS
+ * @see MessageResult.FetchGroup#FULL_CONTENT
+ * @see MessageResult.FetchGroup#BODY_CONTENT
+ * @see MessageResult.FetchGroup#MIME_HEADERS
+ * @see MessageResult.FetchGroup#MIME_CONTENT
+ */
public int content() {
return content;
}
- @Override
+ /**
+ * Path describing the part to be fetched.
+ *
+ * @return path describing the part, not null
+ */
public MimePath path() {
return path;
}
@@ -52,8 +70,8 @@ public class PartContentDescriptorImpl implements PartContentDescriptor {
}
public boolean equals(Object obj) {
- if (obj instanceof PartContentDescriptorImpl) {
- PartContentDescriptorImpl that = (PartContentDescriptorImpl) obj;
+ if (obj instanceof PartContentDescriptor) {
+ PartContentDescriptor that = (PartContentDescriptor) obj;
return Objects.equals(this.path, that.path);
}
return false;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index e83d74d..b1acbe6 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.model.Content;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.MimePath;
+import org.apache.james.mailbox.model.PartContentDescriptor;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mailbox.store.streaming.PartContentBuilder;
import org.apache.james.mime4j.MimeException;
@@ -127,15 +128,15 @@ public class ResultUtils {
private static void addPartContent(FetchGroup fetchGroup, MailboxMessage message, MessageResultImpl messageResult)
throws MailboxException, IOException, MimeException {
- Collection<FetchGroup.PartContentDescriptor> partContent = fetchGroup.getPartContentDescriptors();
+ Collection<PartContentDescriptor> partContent = fetchGroup.getPartContentDescriptors();
if (partContent != null) {
- for (FetchGroup.PartContentDescriptor descriptor: partContent) {
+ for (PartContentDescriptor descriptor: partContent) {
addPartContent(descriptor, message, messageResult);
}
}
}
- private static void addPartContent(FetchGroup.PartContentDescriptor descriptor, MailboxMessage message, MessageResultImpl messageResult)
+ private static void addPartContent(PartContentDescriptor descriptor, MailboxMessage message, MessageResultImpl messageResult)
throws MailboxException, IOException, MimeException {
MimePath mimePath = descriptor.path();
int content = descriptor.content();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 17/23: JAMES-2988 Move bitewise logic with
FetchGroup models
Posted by bt...@apache.org.
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 b0dc0b3a70fa37d4c9f8ce89f7151e5263d8f115
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 18:11:31 2019 +0700
JAMES-2988 Move bitewise logic with FetchGroup models
---
.../org/apache/james/mailbox/model/FetchGroup.java | 13 +++++
.../james/mailbox/model/PartContentDescriptor.java | 12 ++++-
.../apache/james/mailbox/model/FetchGroupTest.java | 56 ++++++++++++++++++++++
.../mailbox/model/PartContentDescriptorTest.java | 55 +++++++++++++++++++++
.../apache/james/mailbox/store/ResultUtils.java | 40 +++++-----------
.../mailbox/store/mail/FetchGroupConverter.java | 16 +++----
6 files changed, 153 insertions(+), 39 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
index 10f9657..56c01ee 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.model;
+import java.util.Arrays;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Stream;
@@ -35,6 +36,7 @@ public class FetchGroup {
* For example: could have best performance when doing store and then
* forget. UIDs are always returned
*/
+ public static final int NO_MASK = 0;
public static final int MINIMAL_MASK = 0x00;
public static final int MIME_DESCRIPTOR_MASK = 0x01;
public static final int HEADERS_MASK = 0x100;
@@ -120,6 +122,17 @@ public class FetchGroup {
.or(content);
}
+ public boolean hasMask(int mask) {
+ return (content & mask) > NO_MASK;
+ }
+
+ public boolean hasOnlyMasks(int... masks) {
+ int allowedMask = Arrays.stream(masks)
+ .reduce((a, b) -> a | b)
+ .orElse(0);
+ return (content & (~ allowedMask)) == 0;
+ }
+
@Override
public String toString() {
return "Fetch " + content;
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
index 158a348..089d1fd 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
@@ -19,6 +19,8 @@
package org.apache.james.mailbox.model;
+import static org.apache.james.mailbox.model.FetchGroup.NO_MASK;
+
import java.util.Objects;
/**
@@ -68,11 +70,17 @@ public class PartContentDescriptor {
return path;
}
- public int hashCode() {
+ public boolean hasMask(int mask) {
+ return (content & mask) > NO_MASK;
+ }
+
+ @Override
+ public final int hashCode() {
return Objects.hash(path);
}
- public boolean equals(Object obj) {
+ @Override
+ public final boolean equals(Object obj) {
if (obj instanceof PartContentDescriptor) {
PartContentDescriptor that = (PartContentDescriptor) obj;
return Objects.equals(this.path, that.path);
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
index b3a4712..5ded8c0 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
@@ -72,4 +72,60 @@ class FetchGroupTest {
.addPartContent(new MimePath(path), FetchGroup.HEADERS_MASK))
.isEqualTo(new FetchGroup(FetchGroup.MINIMAL_MASK, ImmutableSet.of(new PartContentDescriptor(FetchGroup.MINIMAL_MASK, new MimePath(path)).or(FetchGroup.HEADERS_MASK))));
}
+
+ @Test
+ void hasMaskShouldReturnFalseWhenNotContained() {
+ assertThat(FetchGroup.MINIMAL
+ .or(FetchGroup.MIME_HEADERS_MASK)
+ .or(FetchGroup.MIME_DESCRIPTOR_MASK)
+ .hasMask(FetchGroup.HEADERS_MASK))
+ .isFalse();
+ }
+
+ @Test
+ void hasMaskShouldReturnTrueWhenContained() {
+ assertThat(FetchGroup.MINIMAL
+ .or(FetchGroup.MIME_HEADERS_MASK)
+ .or(FetchGroup.MIME_DESCRIPTOR_MASK)
+ .hasMask(FetchGroup.MIME_HEADERS_MASK))
+ .isTrue();
+ }
+
+ @Test
+ void hasOnlyMasksShouldReturnTrueWhenSuppliedEmpty() {
+ assertThat(FetchGroup.MINIMAL
+ .hasOnlyMasks())
+ .isTrue();
+ }
+
+ @Test
+ void hasOnlyMasksShouldReturnTrueWhenExactlyContainASingleValue() {
+ assertThat(FetchGroup.HEADERS
+ .hasOnlyMasks(FetchGroup.HEADERS_MASK))
+ .isTrue();
+ }
+
+ @Test
+ void hasOnlyMasksShouldReturnTrueWhenExactlyContainMultipleValues() {
+ assertThat(FetchGroup.HEADERS
+ .or(FetchGroup.BODY_CONTENT_MASK)
+ .hasOnlyMasks(FetchGroup.HEADERS_MASK, FetchGroup.BODY_CONTENT_MASK))
+ .isTrue();
+ }
+
+ @Test
+ void hasOnlyMasksShouldReturnFalseWhenNotContained() {
+ assertThat(FetchGroup.HEADERS
+ .or(FetchGroup.BODY_CONTENT_MASK)
+ .hasOnlyMasks(FetchGroup.FULL_CONTENT_MASK))
+ .isFalse();
+ }
+
+ @Test
+ void minimalShouldAlwaysBeValid() {
+ assertThat(FetchGroup.MINIMAL
+ .hasOnlyMasks(FetchGroup.FULL_CONTENT_MASK, FetchGroup.HEADERS_MASK, FetchGroup.BODY_CONTENT_MASK,
+ FetchGroup.MIME_DESCRIPTOR_MASK))
+ .isTrue();
+ }
}
\ No newline at end of file
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/PartContentDescriptorTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/PartContentDescriptorTest.java
new file mode 100644
index 0000000..5b0eb8c
--- /dev/null
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/PartContentDescriptorTest.java
@@ -0,0 +1,55 @@
+/****************************************************************
+ * 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.mailbox.model;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+
+class PartContentDescriptorTest {
+ private static final int[] POSITION = {12};
+
+ @Test
+ void shouldMatchBeanContract() {
+ EqualsVerifier.forClass(PartContentDescriptor.class)
+ .withIgnoredFields("content")
+ .verify();
+ }
+
+ @Test
+ void hasMaskShouldReturnFalseWhenNotContained() {
+ assertThat(new PartContentDescriptor(new MimePath(POSITION))
+ .or(FetchGroup.MIME_HEADERS_MASK)
+ .or(FetchGroup.MIME_DESCRIPTOR_MASK)
+ .hasMask(FetchGroup.HEADERS_MASK))
+ .isFalse();
+ }
+
+ @Test
+ void hasMaskShouldReturnTrueWhenContained() {
+ assertThat(new PartContentDescriptor(new MimePath(POSITION))
+ .or(FetchGroup.MIME_HEADERS_MASK)
+ .or(FetchGroup.MIME_DESCRIPTOR_MASK)
+ .hasMask(FetchGroup.MIME_HEADERS_MASK))
+ .isTrue();
+ }
+}
\ No newline at end of file
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index 1f59126..09e2c77 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -91,40 +91,27 @@ public class ResultUtils {
/**
* Return the {@link MessageResult} for the given {@link MailboxMessage} and {@link FetchGroup}
- *
- * @return result
*/
public static MessageResult loadMessageResult(MailboxMessage message, FetchGroup fetchGroup) throws MailboxException {
try {
-
MessageResultImpl messageResult = new MessageResultImpl(message);
if (fetchGroup != null) {
- int content = fetchGroup.content();
-
- if ((content & FetchGroup.HEADERS_MASK) > 0) {
- content -= FetchGroup.HEADERS_MASK;
- }
- if ((content & FetchGroup.BODY_CONTENT_MASK) > 0) {
- content -= FetchGroup.BODY_CONTENT_MASK;
- }
- if ((content & FetchGroup.FULL_CONTENT_MASK) > 0) {
- content -= FetchGroup.FULL_CONTENT_MASK;
- }
- if ((content & FetchGroup.MIME_DESCRIPTOR_MASK) > 0) {
- content -= FetchGroup.MIME_DESCRIPTOR_MASK;
+ if (!haveValidContent(fetchGroup)) {
+ throw new UnsupportedOperationException("Unsupported result: " + fetchGroup.content());
}
- if (content != 0) {
- throw new UnsupportedOperationException("Unsupported result: " + content);
- }
-
addPartContent(fetchGroup, message, messageResult);
}
return messageResult;
-
} catch (IOException | MimeException e) {
throw new MailboxException("Unable to parse message", e);
}
+ }
+ private static boolean haveValidContent(FetchGroup fetchGroup) {
+ return fetchGroup.hasOnlyMasks(FetchGroup.HEADERS_MASK,
+ FetchGroup.BODY_CONTENT_MASK,
+ FetchGroup.FULL_CONTENT_MASK,
+ FetchGroup.MIME_DESCRIPTOR_MASK);
}
private static void addPartContent(FetchGroup fetchGroup, MailboxMessage message, MessageResultImpl messageResult)
@@ -140,20 +127,19 @@ public class ResultUtils {
private static void addPartContent(PartContentDescriptor descriptor, MailboxMessage message, MessageResultImpl messageResult)
throws MailboxException, IOException, MimeException {
MimePath mimePath = descriptor.path();
- int content = descriptor.content();
- if ((content & FetchGroup.FULL_CONTENT_MASK) > 0) {
+ if (descriptor.hasMask(FetchGroup.FULL_CONTENT_MASK)) {
addFullContent(message, messageResult, mimePath);
}
- if ((content & FetchGroup.BODY_CONTENT_MASK) > 0) {
+ if (descriptor.hasMask(FetchGroup.BODY_CONTENT_MASK)) {
addBodyContent(message, messageResult, mimePath);
}
- if ((content & FetchGroup.MIME_CONTENT_MASK) > 0) {
+ if (descriptor.hasMask(FetchGroup.MIME_CONTENT_MASK)) {
addMimeBodyContent(message, messageResult, mimePath);
}
- if ((content & FetchGroup.HEADERS_MASK) > 0) {
+ if (descriptor.hasMask(FetchGroup.HEADERS_MASK)) {
addHeaders(message, messageResult, mimePath);
}
- if ((content & FetchGroup.MIME_HEADERS_MASK) > 0) {
+ if (descriptor.hasMask(FetchGroup.MIME_HEADERS_MASK)) {
addMimeHeaders(message, messageResult, mimePath);
}
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
index 62b30e6..61bd4e1 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
@@ -27,27 +27,27 @@ public class FetchGroupConverter {
* {@link MessageMapper.FetchType} for it
*/
public static MessageMapper.FetchType getFetchType(FetchGroup group) {
- if (hasMask(group, FetchGroup.FULL_CONTENT_MASK)) {
+ if (group.hasMask(FetchGroup.FULL_CONTENT_MASK)) {
return MessageMapper.FetchType.Full;
}
- if (hasMask(group, FetchGroup.MIME_DESCRIPTOR_MASK)) {
+ if (group.hasMask(FetchGroup.MIME_DESCRIPTOR_MASK)) {
// If we need the mimedescriptor we MAY need the full content later
// too.
// This gives us no other choice then request it
return MessageMapper.FetchType.Full;
}
- if (hasMask(group, FetchGroup.MIME_CONTENT_MASK)) {
+ if (group.hasMask(FetchGroup.MIME_CONTENT_MASK)) {
return MessageMapper.FetchType.Full;
}
- if (hasMask(group, FetchGroup.MIME_HEADERS_MASK)) {
+ if (group.hasMask(FetchGroup.MIME_HEADERS_MASK)) {
return MessageMapper.FetchType.Full;
}
if (!group.getPartContentDescriptors().isEmpty()) {
return MessageMapper.FetchType.Full;
}
- boolean headers = hasMask(group, FetchGroup.HEADERS_MASK);
- boolean body = hasMask(group, FetchGroup.BODY_CONTENT_MASK);
+ boolean headers = group.hasMask(FetchGroup.HEADERS_MASK);
+ boolean body = group.hasMask(FetchGroup.BODY_CONTENT_MASK);
if (body && headers) {
return MessageMapper.FetchType.Full;
@@ -59,8 +59,4 @@ public class FetchGroupConverter {
return MessageMapper.FetchType.Metadata;
}
}
-
- private static boolean hasMask(FetchGroup group, int mask) {
- return (group.content() & mask) > 0;
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 07/23: JAMES-2989 Remove unused
PartContentDescriptorImpl constructor
Posted by bt...@apache.org.
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 9401010c52d161751f66d6d5d243b493ebdea545
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:31:19 2019 +0700
JAMES-2989 Remove unused PartContentDescriptorImpl constructor
---
.../org/apache/james/mailbox/model/PartContentDescriptorImpl.java | 7 -------
1 file changed, 7 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
index e0761f4..f7a8ccd 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptorImpl.java
@@ -30,13 +30,6 @@ public class PartContentDescriptorImpl implements PartContentDescriptor {
private final MimePath path;
public PartContentDescriptorImpl(MimePath path) {
- super();
- this.path = path;
- }
-
- public PartContentDescriptorImpl(int content, MimePath path) {
- super();
- this.content = content;
this.path = path;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 23/23: JAMES-2988 Use the smallest fetch group
possible upon GetMessages
Posted by bt...@apache.org.
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 e8c2f63ac4ce7414db349cee066a2ea00511d23c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Nov 27 03:16:04 2019 +0100
JAMES-2988 Use the smallest fetch group possible upon GetMessages
---
.../james/jmap/draft/methods/GetMessagesMethod.java | 3 +--
.../apache/james/jmap/draft/model/MessageProperties.java | 16 ++++++++++++----
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
index 01c2c25..f4a8315 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
@@ -39,7 +39,6 @@ import org.apache.james.jmap.draft.model.message.view.MetaMessageViewFactory;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.FetchGroup;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.util.MDCBuilder;
@@ -128,7 +127,7 @@ public class GetMessagesMethod implements Method {
return GetMessagesResponse.builder()
.messages(
- messageIdManager.getMessages(getMessagesRequest.getIds(), FetchGroup.FULL_CONTENT, mailboxSession)
+ messageIdManager.getMessages(getMessagesRequest.getIds(), readProfile.getFetchGroup(), mailboxSession)
.stream()
.collect(Guavate.toImmutableListMultimap(MessageResult::getMessageId))
.asMap()
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java
index b2cadee..12fa16a 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java
@@ -24,6 +24,8 @@ import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
+import org.apache.james.mailbox.model.FetchGroup;
+
import com.github.steveash.guavate.Guavate;
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
@@ -213,9 +215,9 @@ public class MessageProperties {
}
public enum ReadProfile {
- Metadata(0),
- Header(1),
- Full(2);
+ Metadata(0, FetchGroup.MINIMAL),
+ Header(1, FetchGroup.HEADERS),
+ Full(2, FetchGroup.FULL_CONTENT);
static ReadProfile combine(ReadProfile readProfile1, ReadProfile readProfile2) {
if (readProfile1.priority > readProfile2.priority) {
@@ -225,9 +227,15 @@ public class MessageProperties {
}
private final int priority;
+ private final FetchGroup fetchGroup;
- ReadProfile(int priority) {
+ ReadProfile(int priority, FetchGroup fetchGroup) {
this.priority = priority;
+ this.fetchGroup = fetchGroup;
+ }
+
+ public FetchGroup getFetchGroup() {
+ return fetchGroup;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 13/23: JAMES-2989 FetchGroup &
PartContentDescriptor should be immutable
Posted by bt...@apache.org.
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 19940b33a80d5e2d32d7de4712bf7f07261ffa63
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 12:49:05 2019 +0700
JAMES-2989 FetchGroup & PartContentDescriptor should be immutable
---
.../org/apache/james/mailbox/model/FetchGroup.java | 78 ++++++++++++++--------
.../james/mailbox/model/PartContentDescriptor.java | 13 ++--
.../apache/james/mailbox/model/FetchGroupTest.java | 75 +++++++++++++++++++++
.../james/imap/processor/fetch/FetchProcessor.java | 20 +++---
4 files changed, 145 insertions(+), 41 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
index 40b5fae..10f9657 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
@@ -19,8 +19,13 @@
package org.apache.james.mailbox.model;
-import java.util.HashSet;
+import java.util.Objects;
import java.util.Set;
+import java.util.stream.Stream;
+
+import com.github.steveash.guavate.Guavate;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableSet;
/**
* Indicates the results fetched.
@@ -43,15 +48,16 @@ public class FetchGroup {
public static final FetchGroup FULL_CONTENT = new FetchGroup(FULL_CONTENT_MASK);
public static final FetchGroup BODY_CONTENT = new FetchGroup(BODY_CONTENT_MASK);
- private int content;
-
- private Set<PartContentDescriptor> partContentDescriptors;
+ private final int content;
+ private final ImmutableSet<PartContentDescriptor> partContentDescriptors;
- private FetchGroup(int content) {
- this(content, new HashSet<>());
+ @VisibleForTesting
+ FetchGroup(int content) {
+ this(content, ImmutableSet.of());
}
- private FetchGroup(int content, Set<PartContentDescriptor> partContentDescriptors) {
+ @VisibleForTesting
+ FetchGroup(int content, ImmutableSet<PartContentDescriptor> partContentDescriptors) {
this.content = content;
this.partContentDescriptors = partContentDescriptors;
}
@@ -72,12 +78,8 @@ public class FetchGroup {
return content;
}
- public void or(int content) {
- this.content = this.content | content;
- }
-
- public String toString() {
- return "Fetch " + content;
+ public FetchGroup or(int content) {
+ return new FetchGroup(this.content | content, partContentDescriptors);
}
/**
@@ -99,19 +101,43 @@ public class FetchGroup {
* @param content
* bitwise content constant
*/
- public void addPartContent(MimePath path, int content) {
- if (partContentDescriptors == null) {
- partContentDescriptors = new HashSet<>();
+ public FetchGroup addPartContent(MimePath path, int content) {
+ PartContentDescriptor newContent = retrieveUpdatedPartContentDescriptor(path, content);
+
+ return new FetchGroup(this.content,
+ Stream.concat(
+ partContentDescriptors.stream()
+ .filter(descriptor -> !descriptor.path().equals(path)),
+ Stream.of(newContent))
+ .collect(Guavate.toImmutableSet()));
+ }
+
+ private PartContentDescriptor retrieveUpdatedPartContentDescriptor(MimePath path, int content) {
+ return partContentDescriptors.stream()
+ .filter(descriptor -> path.equals(descriptor.path()))
+ .findFirst()
+ .orElse(new PartContentDescriptor(path))
+ .or(content);
+ }
+
+ @Override
+ public String toString() {
+ return "Fetch " + content;
+ }
+
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof FetchGroup) {
+ FetchGroup that = (FetchGroup) o;
+
+ return Objects.equals(this.content, that.content)
+ && Objects.equals(this.partContentDescriptors, that.partContentDescriptors);
}
- PartContentDescriptor currentDescriptor = partContentDescriptors.stream()
- .filter(descriptor -> path.equals(descriptor.path()))
- .findFirst()
- .orElseGet(() -> {
- PartContentDescriptor result = new PartContentDescriptor(path);
- partContentDescriptors.add(result);
- return result;
- });
-
- currentDescriptor.or(content);
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(content, partContentDescriptors);
}
}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
index 2a1b815..158a348 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/PartContentDescriptor.java
@@ -27,17 +27,20 @@ import java.util.Objects;
* if and only if their paths are equal.
*/
public class PartContentDescriptor {
-
- private int content = 0;
-
+ private final int content;
private final MimePath path;
public PartContentDescriptor(MimePath path) {
+ this(0, path);
+ }
+
+ public PartContentDescriptor(int content, MimePath path) {
+ this.content = content;
this.path = path;
}
- public void or(int content) {
- this.content = this.content | content;
+ public PartContentDescriptor or(int content) {
+ return new PartContentDescriptor(this.content | content, path);
}
/**
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
new file mode 100644
index 0000000..b3a4712
--- /dev/null
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
@@ -0,0 +1,75 @@
+/****************************************************************
+ * 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.mailbox.model;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+import com.google.common.collect.ImmutableSet;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+
+class FetchGroupTest {
+ @Test
+ void shouldMatchBeanContract() {
+ EqualsVerifier.forClass(FetchGroup.class)
+ .verify();
+ }
+
+ @Test
+ void orShouldReturnAFetchGroupWithUpdatedContent() {
+ int expected = FetchGroup.HEADERS_MASK | FetchGroup.FULL_CONTENT_MASK;
+ assertThat(FetchGroup.HEADERS.or(FetchGroup.FULL_CONTENT_MASK))
+ .isEqualTo(new FetchGroup(expected));
+ }
+
+ @Test
+ void addPartContentShouldAddPartContentWhenNotYetSpecified() {
+ int[] path = {12};
+ assertThat(
+ FetchGroup.MINIMAL
+ .addPartContent(new MimePath(path), FetchGroup.MINIMAL_MASK))
+ .isEqualTo(new FetchGroup(FetchGroup.MINIMAL_MASK, ImmutableSet.of(new PartContentDescriptor(FetchGroup.MINIMAL_MASK, new MimePath(path)))));
+ }
+
+ @Test
+ void addPartContentShouldUnionDifferentPartContents() {
+ int[] path = {12};
+ int[] path2 = {13};
+ assertThat(
+ FetchGroup.MINIMAL
+ .addPartContent(new MimePath(path), FetchGroup.MINIMAL_MASK)
+ .addPartContent(new MimePath(path2), FetchGroup.MINIMAL_MASK))
+ .isEqualTo(new FetchGroup(FetchGroup.MINIMAL_MASK,
+ ImmutableSet.of(new PartContentDescriptor(FetchGroup.MINIMAL_MASK, new MimePath(path)),
+ new PartContentDescriptor(FetchGroup.MINIMAL_MASK, new MimePath(path2)))));
+ }
+
+ @Test
+ void addPartContentShouldModifyPartContentWhenAlreadySpecified() {
+ int[] path = {12};
+ assertThat(
+ FetchGroup.MINIMAL
+ .addPartContent(new MimePath(path), FetchGroup.MINIMAL_MASK)
+ .addPartContent(new MimePath(path), FetchGroup.HEADERS_MASK))
+ .isEqualTo(new FetchGroup(FetchGroup.MINIMAL_MASK, ImmutableSet.of(new PartContentDescriptor(FetchGroup.MINIMAL_MASK, new MimePath(path)).or(FetchGroup.HEADERS_MASK))));
+ }
+}
\ No newline at end of file
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
index 4326df9..ab86624 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchProcessor.java
@@ -188,10 +188,10 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
FetchGroup result = FetchGroup.MINIMAL;
if (fetch.isEnvelope()) {
- result.or(FetchGroup.HEADERS_MASK);
+ result = result.or(FetchGroup.HEADERS_MASK);
}
if (fetch.isBody() || fetch.isBodyStructure()) {
- result.or(FetchGroup.MIME_DESCRIPTOR_MASK);
+ result = result.or(FetchGroup.MIME_DESCRIPTOR_MASK);
}
Collection<BodyFetchElement> bodyElements = fetch.getBodyElements();
@@ -203,21 +203,21 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
switch (sectionType) {
case BodyFetchElement.CONTENT:
if (isBase) {
- addContent(result, path, isBase, FetchGroup.FULL_CONTENT_MASK);
+ result = addContent(result, path, isBase, FetchGroup.FULL_CONTENT_MASK);
} else {
- addContent(result, path, isBase, FetchGroup.MIME_CONTENT_MASK);
+ result = addContent(result, path, isBase, FetchGroup.MIME_CONTENT_MASK);
}
break;
case BodyFetchElement.HEADER:
case BodyFetchElement.HEADER_NOT_FIELDS:
case BodyFetchElement.HEADER_FIELDS:
- addContent(result, path, isBase, FetchGroup.HEADERS_MASK);
+ result = addContent(result, path, isBase, FetchGroup.HEADERS_MASK);
break;
case BodyFetchElement.MIME:
- addContent(result, path, isBase, FetchGroup.MIME_HEADERS_MASK);
+ result = addContent(result, path, isBase, FetchGroup.MIME_HEADERS_MASK);
break;
case BodyFetchElement.TEXT:
- addContent(result, path, isBase, FetchGroup.BODY_CONTENT_MASK);
+ result = addContent(result, path, isBase, FetchGroup.BODY_CONTENT_MASK);
break;
default:
break;
@@ -228,12 +228,12 @@ public class FetchProcessor extends AbstractMailboxProcessor<FetchRequest> {
return result;
}
- private void addContent(FetchGroup result, int[] path, boolean isBase, int content) {
+ private FetchGroup addContent(FetchGroup result, int[] path, boolean isBase, int content) {
if (isBase) {
- result.or(content);
+ return result.or(content);
} else {
MimePath mimePath = new MimePath(path);
- result.addPartContent(mimePath, content);
+ return result.addPartContent(mimePath, content);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 16/23: JAMES-2989 POJOify mailbox-api headers
Posted by bt...@apache.org.
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 6c9350f78b69201264a1b70c2d4e0313756e76d8
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 13:17:50 2019 +0700
JAMES-2989 POJOify mailbox-api headers
---
.../org/apache/james/mailbox/model/Header.java} | 23 ++++++---
.../org/apache/james/mailbox/model/Headers.java | 1 -
.../apache/james/mailbox/model/MessageResult.java | 20 --------
.../james/mailbox/store/LazyMimeDescriptor.java | 2 +-
.../james/mailbox/store/MessageResultImpl.java | 1 +
.../james/mailbox/store/MimeDescriptorImpl.java | 22 ++++-----
.../apache/james/mailbox/store/ResultUtils.java | 13 +++---
.../mailbox/store/StoreMessageResultIterator.java | 1 +
.../mailbox/store/search/MessageSearches.java | 2 +-
.../comparator/AbstractHeaderComparator.java | 2 +-
.../mailbox/store/streaming/FullByteContent.java | 5 +-
.../store/streaming/PartContentBuilder.java | 16 +++----
.../PartContentBuilderComplexMultipartTest.java | 4 +-
...PartContentBuilderMultipartAlternativeTest.java | 4 +-
.../imap/processor/fetch/EnvelopeBuilder.java | 6 +--
.../imap/processor/fetch/FetchResponseBuilder.java | 25 +++++-----
.../imap/processor/fetch/HeaderBodyElement.java | 6 +--
.../imap/processor/fetch/MessageResultUtils.java | 46 +++++++++---------
.../imap/processor/fetch/MimeBodyElement.java | 12 ++---
.../fetch/MailboxMessageResultUtilsTest.java | 54 ++++------------------
.../james/jmap/draft/methods/ReferenceUpdater.java | 2 +-
21 files changed, 109 insertions(+), 158 deletions(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Header.java
similarity index 84%
rename from mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
rename to mailbox/api/src/main/java/org/apache/james/mailbox/model/Header.java
index f1424f2..71b2e4c 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultHeader.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Header.java
@@ -20,32 +20,41 @@
/**
*
*/
-package org.apache.james.mailbox.store;
+package org.apache.james.mailbox.model;
import static java.nio.charset.StandardCharsets.US_ASCII;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
-import org.apache.james.mailbox.model.MessageResult;
-
-public final class ResultHeader implements MessageResult.Header {
+/**
+ * A header.
+ */
+public final class Header implements Content {
private final String name;
private final String value;
private final long size;
- public ResultHeader(String name, String value) {
+ public Header(String name, String value) {
this.name = name;
this.value = value;
this.size = name.length() + value.length() + 2;
}
- @Override
+ /**
+ * Gets the name of this header.
+ *
+ * @return name of this header
+ */
public String getName() {
return name;
}
- @Override
+ /**
+ * Gets the (unparsed) value of this header.
+ *
+ * @return value of this header
+ */
public String getValue() {
return value;
}
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
index 52b959b..16e715d 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Headers.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.model;
import java.util.Iterator;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult.Header;
public interface Headers extends Content {
/**
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
index c85df56..82894d6 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageResult.java
@@ -101,26 +101,6 @@ public interface MessageResult extends Comparable<MessageResult> {
Iterator<Header> iterateMimeHeaders(MimePath path) throws MailboxException;
/**
- * A header.
- */
- interface Header extends Content {
-
- /**
- * Gets the name of this header.
- *
- * @return name of this header
- */
- String getName();
-
- /**
- * Gets the (unparsed) value of this header.
- *
- * @return value of this header
- */
- String getValue();
- }
-
- /**
* Gets the full message including headers and body. The message data should
* have normalised line endings (CRLF).
*
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java
index 25d6a37..aad4f90 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/LazyMimeDescriptor.java
@@ -27,8 +27,8 @@ import java.util.List;
import java.util.Map;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
import org.apache.james.mailbox.model.MimeDescriptor;
import org.apache.james.mailbox.store.mail.model.Message;
import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
index e3f5e05..569c55e 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
@@ -34,6 +34,7 @@ import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Content;
import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.Headers;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageAttachment;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
index 7f4baae..32475b9 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MimeDescriptorImpl.java
@@ -32,7 +32,7 @@ import java.util.Map;
import java.util.TreeMap;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.MimeDescriptor;
import org.apache.james.mailbox.store.streaming.CountingInputStream;
import org.apache.james.mime4j.MimeException;
@@ -60,12 +60,12 @@ public class MimeDescriptorImpl implements MimeDescriptor {
private static MimeDescriptorImpl createDescriptor(MimeTokenStream parser) throws IOException, MimeException {
EntityState next = parser.next();
- final Collection<MessageResult.Header> headers = new ArrayList<>();
+ final Collection<Header> headers = new ArrayList<>();
while (next != EntityState.T_BODY
&& next != EntityState.T_END_OF_STREAM
&& next != EntityState.T_START_MULTIPART) {
if (next == EntityState.T_FIELD) {
- headers.add(new ResultHeader(parser.getField().getName(), parser
+ headers.add(new Header(parser.getField().getName(), parser
.getField().getBody().trim()));
}
next = parser.next();
@@ -87,7 +87,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
return mimeDescriptorImpl;
}
- private static MimeDescriptorImpl compositePartDescriptor(MimeTokenStream parser, Collection<MessageResult.Header> headers)
+ private static MimeDescriptorImpl compositePartDescriptor(MimeTokenStream parser, Collection<Header> headers)
throws IOException, MimeException {
MaximalBodyDescriptor descriptor = (MaximalBodyDescriptor) parser
.getBodyDescriptor();
@@ -104,7 +104,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
return mimeDescriptor;
}
- private static MimeDescriptorImpl simplePartDescriptor(MimeTokenStream parser, Collection<MessageResult.Header> headers)
+ private static MimeDescriptorImpl simplePartDescriptor(MimeTokenStream parser, Collection<Header> headers)
throws IOException, MimeException {
MaximalBodyDescriptor descriptor = (MaximalBodyDescriptor) parser
.getBodyDescriptor();
@@ -137,7 +137,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
}
private static MimeDescriptorImpl createDescriptor(long bodyOctets, long lines, MaximalBodyDescriptor descriptor,
- MimeDescriptor embeddedMessage, Collection<MessageResult.Header> headers) {
+ MimeDescriptor embeddedMessage, Collection<Header> headers) {
final String contentDescription = descriptor.getContentDescription();
final String contentId = descriptor.getContentId();
@@ -180,7 +180,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
private final String type;
private final String transferEncoding;
private final List<String> languages;
- private final Collection<MessageResult.Header> headers;
+ private final Collection<Header> headers;
private final Map<String, String> contentTypeParameters;
private final String disposition;
private final Map<String, String> dispositionParams;
@@ -192,7 +192,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
private MimeDescriptorImpl(long bodyOctets,
String contentDescription, String contentId,
long lines, String subType, String type,
- String transferEncoding, Collection<MessageResult.Header> headers,
+ String transferEncoding, Collection<Header> headers,
Map<String, String> contentTypeParameters, List<String> languages,
String disposition, Map<String, String> dispositionParams,
MimeDescriptor embeddedMessage, Collection<MimeDescriptor> parts,
@@ -262,7 +262,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
}
@Override
- public Iterator<MessageResult.Header> headers() {
+ public Iterator<Header> headers() {
return headers.iterator();
}
@@ -303,7 +303,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
@Override
public InputStream getInputStream() {
StringBuilder sb = new StringBuilder();
- for (MessageResult.Header header : headers) {
+ for (Header header : headers) {
sb.append(header.getName()).append(": ").append(header.getValue()).append("\r\n");
}
sb.append("\r\n");
@@ -313,7 +313,7 @@ public class MimeDescriptorImpl implements MimeDescriptor {
@Override
public long size() throws MailboxException {
long result = 0;
- for (MessageResult.Header header : headers) {
+ for (Header header : headers) {
if (header != null) {
result += header.size();
result += 2;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index d3803ae..1f59126 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -28,6 +28,7 @@ import java.util.List;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Content;
import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MimePath;
import org.apache.james.mailbox.model.PartContentDescriptor;
@@ -44,8 +45,8 @@ import org.apache.james.mime4j.util.ContentUtil;
public class ResultUtils {
- public static List<MessageResult.Header> createHeaders(MailboxMessage document) throws IOException {
- List<MessageResult.Header> results = new ArrayList<>();
+ public static List<Header> createHeaders(MailboxMessage document) throws IOException {
+ List<Header> results = new ArrayList<>();
MimeStreamParser parser = new MimeStreamParser(MimeConfig.PERMISSIVE);
parser.setContentHandler(new AbstractContentHandler() {
@Override
@@ -76,8 +77,8 @@ public class ResultUtils {
fieldValue = fieldValue.substring(1);
}
- ResultHeader resultHeader = new ResultHeader(field.getName(), fieldValue);
- results.add(resultHeader);
+ Header header = new Header(field.getName(), fieldValue);
+ results.add(header);
}
});
try {
@@ -187,7 +188,7 @@ public class ResultUtils {
int[] path = path(mimePath);
if (path != null) {
PartContentBuilder builder = build(path, message);
- List<MessageResult.Header> headers = builder.getMessageHeaders();
+ List<Header> headers = builder.getMessageHeaders();
messageResult.setHeaders(mimePath, headers.iterator());
}
}
@@ -197,7 +198,7 @@ public class ResultUtils {
int[] path = path(mimePath);
if (path != null) {
PartContentBuilder builder = build(path, message);
- List<MessageResult.Header> headers = builder.getMimeHeaders();
+ List<Header> headers = builder.getMimeHeaders();
messageResult.setMimeHeaders(mimePath, headers.iterator());
}
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
index dfdf2ce..a392954 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Content;
import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.Headers;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxId;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
index ebbccbd..a255e61 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java
@@ -45,8 +45,8 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.UnsupportedSearchException;
import org.apache.james.mailbox.extractor.TextExtractor;
import org.apache.james.mailbox.model.Attachment;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.MessageAttachment;
-import org.apache.james.mailbox.model.MessageResult.Header;
import org.apache.james.mailbox.model.SearchQuery;
import org.apache.james.mailbox.model.SearchQuery.AddressType;
import org.apache.james.mailbox.model.SearchQuery.DateResolution;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
index d6137fe..bd5e338 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/AbstractHeaderComparator.java
@@ -23,7 +23,7 @@ import java.util.Comparator;
import java.util.List;
import java.util.Locale;
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.store.ResultUtils;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.slf4j.Logger;
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
index 8864182..534a357 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/FullByteContent.java
@@ -28,8 +28,7 @@ import java.util.List;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Content;
-import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
/**
* Abstract base class for {@link Content} implementations which hold the headers and
@@ -42,7 +41,7 @@ public class FullByteContent implements Content {
private final byte[] body;
private final long size;
- public FullByteContent(byte[] body, List<MessageResult.Header> headers) throws MailboxException {
+ public FullByteContent(byte[] body, List<Header> headers) throws MailboxException {
this.headers = headers;
this.body = body;
this.size = caculateSize();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
index d548d46..6d2b46d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/streaming/PartContentBuilder.java
@@ -28,9 +28,7 @@ import java.util.List;
import org.apache.commons.io.IOUtils;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.Content;
-import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
-import org.apache.james.mailbox.store.ResultHeader;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.stream.EntityState;
import org.apache.james.mime4j.stream.MimeConfig;
@@ -223,8 +221,8 @@ public class PartContentBuilder {
return content;
}
- public List<MessageResult.Header> getMimeHeaders() throws IOException, UnexpectedEOFException, MimeException {
- final List<MessageResult.Header> results;
+ public List<Header> getMimeHeaders() throws IOException, UnexpectedEOFException, MimeException {
+ final List<Header> results;
if (empty) {
results = Collections.emptyList();
} else {
@@ -238,7 +236,7 @@ public class PartContentBuilder {
case T_FIELD:
final String fieldValue = parser.getField().getBody().trim();
final String fieldName = parser.getField().getName();
- ResultHeader header = new ResultHeader(fieldName, fieldValue);
+ Header header = new Header(fieldName, fieldValue);
results.add(header);
break;
case T_BODY:
@@ -260,8 +258,8 @@ public class PartContentBuilder {
return results;
}
- public List<MessageResult.Header> getMessageHeaders() throws IOException, MimeException {
- final List<MessageResult.Header> results;
+ public List<Header> getMessageHeaders() throws IOException, MimeException {
+ final List<Header> results;
if (empty) {
results = Collections.emptyList();
} else {
@@ -278,7 +276,7 @@ public class PartContentBuilder {
case T_FIELD:
final String fieldValue = parser.getField().getBody().trim();
final String fieldName = parser.getField().getName();
- ResultHeader header = new ResultHeader(fieldName, fieldValue);
+ Header header = new Header(fieldName, fieldValue);
results.add(header);
break;
case T_BODY:
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java
index 8dd9e95..034093a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderComplexMultipartTest.java
@@ -29,7 +29,7 @@ import java.nio.charset.StandardCharsets;
import java.util.List;
import org.apache.commons.io.IOUtils;
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.store.streaming.PartContentBuilder;
import org.apache.james.mailbox.store.streaming.PartContentBuilder.PartNotFoundException;
import org.junit.Before;
@@ -204,7 +204,7 @@ public class PartContentBuilderComplexMultipartTest {
throws Exception {
List<Header> headers = headers(position);
assertThat(headers.size()).isEqualTo(1);
- ResultHeader header = (ResultHeader) headers.get(0);
+ Header header = (Header) headers.get(0);
assertThat(header.getName()).isEqualTo(CONTENT_TYPE);
assertThat(header.getValue()).isEqualTo(contentType);
}
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java
index da1b920..5c937b6 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/PartContentBuilderMultipartAlternativeTest.java
@@ -28,7 +28,7 @@ import java.nio.charset.StandardCharsets;
import java.util.List;
import org.apache.commons.io.IOUtils;
-import org.apache.james.mailbox.model.MessageResult.Header;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.store.streaming.PartContentBuilder;
import org.junit.Before;
import org.junit.Test;
@@ -120,7 +120,7 @@ public class PartContentBuilderMultipartAlternativeTest {
throws Exception {
List<Header> headers = headers(mail, position);
assertThat(headers.size()).isEqualTo(1);
- ResultHeader header = (ResultHeader) headers.get(0);
+ Header header = (Header) headers.get(0);
assertThat(header.getName()).isEqualTo(CONTENT_TYPE);
assertThat(header.getValue()).isEqualTo(contentType);
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
index 866a2e3..ab5862d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/EnvelopeBuilder.java
@@ -31,8 +31,8 @@ import javax.mail.internet.MimeUtility;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.message.response.FetchResponse;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.Headers;
-import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mime4j.codec.EncoderUtil;
import org.apache.james.mime4j.dom.address.Address;
import org.apache.james.mime4j.dom.address.AddressList;
@@ -62,7 +62,7 @@ public final class EnvelopeBuilder {
}
private String headerValue(Headers message, String headerName) throws MailboxException {
- final MessageResult.Header header = MessageResultUtils.getMatching(headerName, message.headers());
+ final Header header = MessageResultUtils.getMatching(headerName, message.headers());
final String result;
if (header == null) {
result = null;
@@ -108,7 +108,7 @@ public final class EnvelopeBuilder {
* @throws MailboxException
*/
private FetchResponse.Envelope.Address[] buildAddresses(Headers message, String headerName) throws MailboxException {
- final MessageResult.Header header = MessageResultUtils.getMatching(headerName, message.headers());
+ final Header header = MessageResultUtils.getMatching(headerName, message.headers());
FetchResponse.Envelope.Address[] results;
if (header == null) {
results = null;
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
index 36329fd..4e9906c 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchResponseBuilder.java
@@ -44,6 +44,7 @@ import org.apache.james.mailbox.ModSeq;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.exception.MessageRangeException;
import org.apache.james.mailbox.model.Content;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.MessageRange;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mailbox.model.MimePath;
@@ -302,13 +303,13 @@ public final class FetchResponseBuilder {
private FetchResponse.BodyElement mimeHeaders(MessageResult messageResult, String name, int[] path, boolean isBase) throws MailboxException {
final FetchResponse.BodyElement result;
- final Iterator<MessageResult.Header> headers = getMimeHeaders(messageResult, path, isBase);
- List<MessageResult.Header> lines = MessageResultUtils.getAll(headers);
+ final Iterator<Header> headers = getMimeHeaders(messageResult, path, isBase);
+ List<Header> lines = MessageResultUtils.getAll(headers);
result = new MimeBodyElement(name, lines);
return result;
}
- private HeaderBodyElement headerBodyElement(MessageResult messageResult, String name, List<MessageResult.Header> lines, int[] path, boolean isBase) throws MailboxException {
+ private HeaderBodyElement headerBodyElement(MessageResult messageResult, String name, List<Header> lines, int[] path, boolean isBase) throws MailboxException {
final HeaderBodyElement result = new HeaderBodyElement(name, lines);
// if the size is 2 we had found not header and just want to write the empty line with CLRF terminated
// so check if there is a content for it. If not we MUST NOT write the empty line in any case
@@ -354,27 +355,27 @@ public final class FetchResponseBuilder {
}
return element;
} else {
- final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase);
- List<MessageResult.Header> lines = MessageResultUtils.getAll(headers);
+ final Iterator<Header> headers = getHeaders(messageResult, path, isBase);
+ List<Header> lines = MessageResultUtils.getAll(headers);
return headerBodyElement(messageResult, name, lines, path, isBase);
}
}
private FetchResponse.BodyElement fieldsNot(MessageResult messageResult, String name, int[] path, Collection<String> names, boolean isBase) throws MailboxException {
- final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase);
- List<MessageResult.Header> lines = MessageResultUtils.getNotMatching(names, headers);
+ final Iterator<Header> headers = getHeaders(messageResult, path, isBase);
+ List<Header> lines = MessageResultUtils.getNotMatching(names, headers);
return headerBodyElement(messageResult, name, lines, path, isBase);
}
private FetchResponse.BodyElement fields(MessageResult messageResult, String name, int[] path, Collection<String> names, boolean isBase) throws MailboxException {
- final Iterator<MessageResult.Header> headers = getHeaders(messageResult, path, isBase);
- List<MessageResult.Header> lines = MessageResultUtils.getMatching(names, headers);
+ final Iterator<Header> headers = getHeaders(messageResult, path, isBase);
+ List<Header> lines = MessageResultUtils.getMatching(names, headers);
return headerBodyElement(messageResult, name, lines, path, isBase);
}
- private Iterator<MessageResult.Header> getHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
- final Iterator<MessageResult.Header> headers;
+ private Iterator<Header> getHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
+ final Iterator<Header> headers;
if (isBase) {
headers = messageResult.getHeaders().headers();
} else {
@@ -384,7 +385,7 @@ public final class FetchResponseBuilder {
return headers;
}
- private Iterator<MessageResult.Header> getMimeHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
+ private Iterator<Header> getMimeHeaders(MessageResult messageResult, int[] path, boolean isBase) throws MailboxException {
MimePath mimePath = new MimePath(path);
return messageResult.iterateMimeHeaders(mimePath);
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java
index 699728d..e2b3abd 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/HeaderBodyElement.java
@@ -27,14 +27,14 @@ import java.util.List;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.message.response.FetchResponse.BodyElement;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
/**
* {@link BodyElement} which represent a HEADER element specified by for example (BODY[1.HEADER])
*/
public class HeaderBodyElement extends MimeBodyElement {
- public HeaderBodyElement(String name, List<MessageResult.Header> headers) throws MailboxException {
+ public HeaderBodyElement(String name, List<Header> headers) throws MailboxException {
super(name, headers);
}
@@ -50,7 +50,7 @@ public class HeaderBodyElement extends MimeBodyElement {
}
@Override
- protected long calculateSize(List<MessageResult.Header> headers) throws MailboxException {
+ protected long calculateSize(List<Header> headers) throws MailboxException {
if (headers.isEmpty()) {
// even if the headers are empty we need to include the headers body
// seperator
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java
index 4929415..3416670 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MessageResultUtils.java
@@ -28,7 +28,7 @@ import java.util.List;
import javax.mail.MessagingException;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
public class MessageResultUtils {
@@ -36,14 +36,14 @@ public class MessageResultUtils {
* Gets all header lines.
*
* @param iterator
- * {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+ * {@link Header} <code>Iterator</code>
* @return <code>List</code> of <code>MessageResult.Header<code>'s,
* in their natural order
*
* @throws MessagingException
*/
- public static List<MessageResult.Header> getAll(Iterator<MessageResult.Header> iterator) {
- final List<MessageResult.Header> results = new ArrayList<>();
+ public static List<Header> getAll(Iterator<Header> iterator) {
+ final List<Header> results = new ArrayList<>();
if (iterator != null) {
while (iterator.hasNext()) {
results.add(iterator.next());
@@ -59,16 +59,16 @@ public class MessageResultUtils {
* @param names
* header names to be matched, not null
* @param iterator
- * {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+ * {@link Header} <code>Iterator</code>
* @return <code>List</code> of <code>MessageResult.Header</code>'s, in
* their natural order
* @throws MessagingException
*/
- public static List<MessageResult.Header> getMatching(String[] names, Iterator<MessageResult.Header> iterator) throws MailboxException {
- final List<MessageResult.Header> results = new ArrayList<>(20);
+ public static List<Header> getMatching(String[] names, Iterator<Header> iterator) throws MailboxException {
+ final List<Header> results = new ArrayList<>(20);
if (iterator != null) {
while (iterator.hasNext()) {
- MessageResult.Header header = iterator.next();
+ Header header = iterator.next();
final String headerName = header.getName();
if (headerName != null) {
if (Arrays.stream(names)
@@ -88,20 +88,20 @@ public class MessageResultUtils {
* @param names
* header names to be matched, not null
* @param iterator
- * {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+ * {@link Header} <code>Iterator</code>
* @return <code>List</code> of <code>MessageResult.Header</code>'s, in
* their natural order
* @throws MessagingException
*/
- public static List<MessageResult.Header> getMatching(Collection<String> names, Iterator<MessageResult.Header> iterator) throws MailboxException {
+ public static List<Header> getMatching(Collection<String> names, Iterator<Header> iterator) throws MailboxException {
return matching(names, iterator, false);
}
- private static List<MessageResult.Header> matching(Collection<String> names, Iterator<MessageResult.Header> iterator, boolean not) throws MailboxException {
- final List<MessageResult.Header> results = new ArrayList<>(names.size());
+ private static List<Header> matching(Collection<String> names, Iterator<Header> iterator, boolean not) throws MailboxException {
+ final List<Header> results = new ArrayList<>(names.size());
if (iterator != null) {
while (iterator.hasNext()) {
- final MessageResult.Header header = iterator.next();
+ final Header header = iterator.next();
final boolean match = contains(names, header);
final boolean add = (not && !match) || (!not && match);
if (add) {
@@ -112,7 +112,7 @@ public class MessageResultUtils {
return results;
}
- private static boolean contains(Collection<String> names, MessageResult.Header header) throws MailboxException {
+ private static boolean contains(Collection<String> names, Header header) throws MailboxException {
final String headerName = header.getName();
if (headerName != null) {
return names.stream().anyMatch(name -> name.equalsIgnoreCase(headerName));
@@ -127,12 +127,12 @@ public class MessageResultUtils {
* @param names
* header names to be matched, not null
* @param iterator
- * {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+ * {@link Header} <code>Iterator</code>
* @return <code>List</code> of <code>MessageResult.Header</code>'s, in
* their natural order
* @throws MessagingException
*/
- public static List<MessageResult.Header> getNotMatching(Collection<String> names, Iterator<MessageResult.Header> iterator) throws MailboxException {
+ public static List<Header> getNotMatching(Collection<String> names, Iterator<Header> iterator) throws MailboxException {
return matching(names, iterator, true);
}
@@ -148,11 +148,11 @@ public class MessageResultUtils {
* exist
* @throws MessagingException
*/
- public static MessageResult.Header getMatching(String name, Iterator<MessageResult.Header> iterator) throws MailboxException {
- MessageResult.Header result = null;
+ public static Header getMatching(String name, Iterator<Header> iterator) throws MailboxException {
+ Header result = null;
if (name != null) {
while (iterator.hasNext()) {
- MessageResult.Header header = iterator.next();
+ Header header = iterator.next();
final String headerName = header.getName();
if (name.equalsIgnoreCase(headerName)) {
result = header;
@@ -170,16 +170,16 @@ public class MessageResultUtils {
* @param names
* header names, not null
* @param iterator
- * {@link org.apache.james.mailbox.MessageResult.Header} <code>Iterator</code>
+ * {@link Header} <code>Iterator</code>
* @return <code>List</code> of <code>@MessageResult.Header</code>'s, in
* their natural order
* @throws MessagingException
*/
- public static List<MessageResult.Header> getNotMatching(String[] names, Iterator<MessageResult.Header> iterator) throws MailboxException {
- final List<MessageResult.Header> results = new ArrayList<>(20);
+ public static List<Header> getNotMatching(String[] names, Iterator<Header> iterator) throws MailboxException {
+ final List<Header> results = new ArrayList<>(20);
if (iterator != null) {
while (iterator.hasNext()) {
- MessageResult.Header header = iterator.next();
+ Header header = iterator.next();
final String headerName = header.getName();
if (headerName != null) {
boolean match = Arrays.stream(names)
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java
index 9d8466a..9991dcf 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/MimeBodyElement.java
@@ -28,7 +28,7 @@ import java.util.List;
import org.apache.james.imap.api.ImapConstants;
import org.apache.james.imap.message.response.FetchResponse.BodyElement;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
/**
@@ -38,13 +38,13 @@ import org.apache.james.mailbox.model.MessageResult;
public class MimeBodyElement implements BodyElement {
private final String name;
- protected final List<MessageResult.Header> headers;
+ protected final List<Header> headers;
protected long size;
private static final Charset US_ASCII = Charset.forName("US-ASCII");
- public MimeBodyElement(String name, List<MessageResult.Header> headers) throws MailboxException {
+ public MimeBodyElement(String name, List<Header> headers) throws MailboxException {
super();
this.name = name;
this.headers = headers;
@@ -58,13 +58,13 @@ public class MimeBodyElement implements BodyElement {
}
- protected long calculateSize(List<MessageResult.Header> headers) throws MailboxException {
+ protected long calculateSize(List<Header> headers) throws MailboxException {
final int result;
if (headers.isEmpty()) {
result = 0;
} else {
int count = 0;
- for (MessageResult.Header header : headers) {
+ for (Header header : headers) {
count += header.size() + ImapConstants.LINE_END.length();
}
result = count + ImapConstants.LINE_END.length();
@@ -82,7 +82,7 @@ public class MimeBodyElement implements BodyElement {
public InputStream getInputStream() throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
- for (MessageResult.Header header : headers) {
+ for (Header header : headers) {
out.write((header.getName() + ": " + header.getValue() + ImapConstants.LINE_END).getBytes(US_ASCII));
}
// no empty line with CRLF for MIME headers. See IMAP-297
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java
index 751389c..c77374e 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/MailboxMessageResultUtilsTest.java
@@ -22,11 +22,10 @@ package org.apache.james.imap.processor.fetch;
import static org.apache.james.imap.processor.fetch.MessageResultUtils.getMatching;
import static org.assertj.core.api.Assertions.assertThat;
-import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
-import org.apache.james.mailbox.model.MessageResult;
+import org.apache.james.mailbox.model.Header;
import org.junit.Before;
import org.junit.Test;
@@ -40,48 +39,13 @@ public class MailboxMessageResultUtilsTest {
Header headerThree;
- List<MessageResult.Header> headers;
-
- private static class Header implements MessageResult.Header {
-
- public String name;
-
- public String value;
-
- public Header(String name) {
- this.name = name;
- value = "Value";
- }
-
- @Override
- public long size() {
- return 0;
- }
-
- @Override
- public String getName() {
- return name;
- }
-
- @Override
- public String getValue() {
- return value;
- }
-
-
- @Override
- public InputStream getInputStream() {
- return null;
- }
-
-
- }
+ List<Header> headers;
@Before
public void setUp() throws Exception {
- headerOne = new Header("One");
- headerTwo = new Header("Two");
- headerThree = new Header("Three");
+ headerOne = new Header("One", "Value");
+ headerTwo = new Header("Two", "Value");
+ headerThree = new Header("Three", "Value");
headers = new ArrayList<>();
headers.add(headerOne);
headers.add(headerTwo);
@@ -90,7 +54,7 @@ public class MailboxMessageResultUtilsTest {
@Test
public void testGetAllContent() {
- List<MessageResult.Header> results = MessageResultUtils.getAll(headers.iterator());
+ List<Header> results = MessageResultUtils.getAll(headers.iterator());
assertThat(results.size()).isEqualTo(3);
assertThat(results.get(0)).isEqualTo(headerOne);
assertThat(results.get(1)).isEqualTo(headerTwo);
@@ -99,8 +63,7 @@ public class MailboxMessageResultUtilsTest {
@Test
public void testGetMatching() throws Exception {
-
- List<MessageResult.Header> results = MessageResultUtils
+ List<Header> results = MessageResultUtils
.getMatching(NAMES, headers.iterator());
assertThat(results.size()).isEqualTo(2);
assertThat(results.get(0)).isEqualTo(headerOne);
@@ -109,8 +72,7 @@ public class MailboxMessageResultUtilsTest {
@Test
public void testGetNotMatching() throws Exception {
-
- List<MessageResult.Header> results = MessageResultUtils.getNotMatching(NAMES, headers
+ List<Header> results = MessageResultUtils.getNotMatching(NAMES, headers
.iterator());
assertThat(results.size()).isEqualTo(1);
assertThat(results.get(0)).isEqualTo(headerTwo);
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
index 410c17d..bfc1c30 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ReferenceUpdater.java
@@ -33,11 +33,11 @@ import org.apache.james.mailbox.MessageIdManager;
import org.apache.james.mailbox.MessageManager.FlagsUpdateMode;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.Header;
import org.apache.james.mailbox.model.Headers;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageResult;
-import org.apache.james.mailbox.model.MessageResult.Header;
import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
import org.apache.james.mailbox.model.SearchQuery;
import org.apache.james.util.streams.Iterators;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 20/23: s/JAMES-2988 FetchGroup::or/FetchGroup::with
Posted by bt...@apache.org.
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 362bc7222b547390195c342dedd4db9057a83a5c
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Nov 27 10:22:56 2019 +0700
s/JAMES-2988 FetchGroup::or/FetchGroup::with
---
.../java/org/apache/james/mailbox/model/FetchGroup.java | 2 +-
.../org/apache/james/mailbox/model/FetchGroupTest.java | 14 +++++++-------
.../james/mailbox/store/mail/FetchGroupConverterTest.java | 8 ++++----
.../james/imap/processor/fetch/FetchDataConverter.java | 6 +++---
.../james/imap/processor/fetch/FetchDataConverterTest.java | 4 ++--
5 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
index 56c01ee..7ff2d70 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
@@ -80,7 +80,7 @@ public class FetchGroup {
return content;
}
- public FetchGroup or(int content) {
+ public FetchGroup with(int content) {
return new FetchGroup(this.content | content, partContentDescriptors);
}
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
index 5ded8c0..1ad5baa 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/FetchGroupTest.java
@@ -37,7 +37,7 @@ class FetchGroupTest {
@Test
void orShouldReturnAFetchGroupWithUpdatedContent() {
int expected = FetchGroup.HEADERS_MASK | FetchGroup.FULL_CONTENT_MASK;
- assertThat(FetchGroup.HEADERS.or(FetchGroup.FULL_CONTENT_MASK))
+ assertThat(FetchGroup.HEADERS.with(FetchGroup.FULL_CONTENT_MASK))
.isEqualTo(new FetchGroup(expected));
}
@@ -76,8 +76,8 @@ class FetchGroupTest {
@Test
void hasMaskShouldReturnFalseWhenNotContained() {
assertThat(FetchGroup.MINIMAL
- .or(FetchGroup.MIME_HEADERS_MASK)
- .or(FetchGroup.MIME_DESCRIPTOR_MASK)
+ .with(FetchGroup.MIME_HEADERS_MASK)
+ .with(FetchGroup.MIME_DESCRIPTOR_MASK)
.hasMask(FetchGroup.HEADERS_MASK))
.isFalse();
}
@@ -85,8 +85,8 @@ class FetchGroupTest {
@Test
void hasMaskShouldReturnTrueWhenContained() {
assertThat(FetchGroup.MINIMAL
- .or(FetchGroup.MIME_HEADERS_MASK)
- .or(FetchGroup.MIME_DESCRIPTOR_MASK)
+ .with(FetchGroup.MIME_HEADERS_MASK)
+ .with(FetchGroup.MIME_DESCRIPTOR_MASK)
.hasMask(FetchGroup.MIME_HEADERS_MASK))
.isTrue();
}
@@ -108,7 +108,7 @@ class FetchGroupTest {
@Test
void hasOnlyMasksShouldReturnTrueWhenExactlyContainMultipleValues() {
assertThat(FetchGroup.HEADERS
- .or(FetchGroup.BODY_CONTENT_MASK)
+ .with(FetchGroup.BODY_CONTENT_MASK)
.hasOnlyMasks(FetchGroup.HEADERS_MASK, FetchGroup.BODY_CONTENT_MASK))
.isTrue();
}
@@ -116,7 +116,7 @@ class FetchGroupTest {
@Test
void hasOnlyMasksShouldReturnFalseWhenNotContained() {
assertThat(FetchGroup.HEADERS
- .or(FetchGroup.BODY_CONTENT_MASK)
+ .with(FetchGroup.BODY_CONTENT_MASK)
.hasOnlyMasks(FetchGroup.FULL_CONTENT_MASK))
.isFalse();
}
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java
index 2c3f66f..07c92e9 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java
@@ -47,7 +47,7 @@ class FetchGroupConverterTest {
@Test
void getFetchTypeShouldReturnFullWhenBodyAndHeaders() {
FetchGroup fetchGroup = FetchGroup.BODY_CONTENT
- .or(FetchGroup.HEADERS_MASK);
+ .with(FetchGroup.HEADERS_MASK);
assertThat(FetchGroupConverter.getFetchType(fetchGroup))
.isEqualTo(MessageMapper.FetchType.Full);
@@ -62,7 +62,7 @@ class FetchGroupConverterTest {
@Test
void getFetchTypeShouldReturnFullWhenMimeContent() {
FetchGroup fetchGroup = FetchGroup.MINIMAL
- .or(FetchGroup.MIME_CONTENT_MASK);
+ .with(FetchGroup.MIME_CONTENT_MASK);
assertThat(FetchGroupConverter.getFetchType(fetchGroup))
.isEqualTo(MessageMapper.FetchType.Full);
}
@@ -70,7 +70,7 @@ class FetchGroupConverterTest {
@Test
void getFetchTypeShouldReturnFullWhenMimeDescriptor() {
FetchGroup fetchGroup = FetchGroup.MINIMAL
- .or(FetchGroup.MIME_DESCRIPTOR_MASK);
+ .with(FetchGroup.MIME_DESCRIPTOR_MASK);
assertThat(FetchGroupConverter.getFetchType(fetchGroup))
.isEqualTo(MessageMapper.FetchType.Full);
}
@@ -78,7 +78,7 @@ class FetchGroupConverterTest {
@Test
void getFetchTypeShouldReturnFullWhenMimeHeaders() {
FetchGroup fetchGroup = FetchGroup.MINIMAL
- .or(FetchGroup.MIME_HEADERS_MASK);
+ .with(FetchGroup.MIME_HEADERS_MASK);
assertThat(FetchGroupConverter.getFetchType(fetchGroup))
.isEqualTo(MessageMapper.FetchType.Full);
}
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java
index 54d4b5e..a75080a 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/fetch/FetchDataConverter.java
@@ -32,10 +32,10 @@ class FetchDataConverter {
FetchGroup result = FetchGroup.MINIMAL;
if (fetch.isEnvelope()) {
- result = result.or(FetchGroup.HEADERS_MASK);
+ result = result.with(FetchGroup.HEADERS_MASK);
}
if (fetch.isBody() || fetch.isBodyStructure()) {
- result = result.or(FetchGroup.MIME_DESCRIPTOR_MASK);
+ result = result.with(FetchGroup.MIME_DESCRIPTOR_MASK);
}
Collection<BodyFetchElement> bodyElements = fetch.getBodyElements();
@@ -74,7 +74,7 @@ class FetchDataConverter {
private static FetchGroup addContent(FetchGroup result, int[] path, boolean isBase, int content) {
if (isBase) {
- return result.or(content);
+ return result.with(content);
} else {
MimePath mimePath = new MimePath(path);
return result.addPartContent(mimePath, content);
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java
index 2c304ec..192cc26 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/fetch/FetchDataConverterTest.java
@@ -44,8 +44,8 @@ class FetchDataConverterTest {
static Stream<Arguments> getFetchGroupShouldReturnCorrectValue() {
return Stream.of(
Arguments.arguments(new FetchData(), FetchGroup.MINIMAL),
- Arguments.arguments(new FetchData().setBody(true), FetchGroup.MINIMAL.or(MIME_DESCRIPTOR_MASK)),
- Arguments.arguments(new FetchData().setBodyStructure(true), FetchGroup.MINIMAL.or(MIME_DESCRIPTOR_MASK)),
+ Arguments.arguments(new FetchData().setBody(true), FetchGroup.MINIMAL.with(MIME_DESCRIPTOR_MASK)),
+ Arguments.arguments(new FetchData().setBodyStructure(true), FetchGroup.MINIMAL.with(MIME_DESCRIPTOR_MASK)),
Arguments.arguments(new FetchData().setChangedSince(0L), FetchGroup.MINIMAL),
Arguments.arguments(new FetchData().setEnvelope(true), FetchGroup.HEADERS),
Arguments.arguments(new FetchData().setFlags(true), FetchGroup.MINIMAL),
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 14/23: JAMES-2989 Tests for FetchGroupConverter
Posted by bt...@apache.org.
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 9e5ddfba2a3f56a5e8014dea95b006322dc93b81
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 12:50:57 2019 +0700
JAMES-2989 Tests for FetchGroupConverter
---
.../mailbox/store/mail/FetchGroupConverter.java | 8 ++
.../store/mail/FetchGroupConverterTest.java | 121 +++++++++++++++++++++
2 files changed, 129 insertions(+)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
index cfd91fb..5bceef9 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/FetchGroupConverter.java
@@ -56,6 +56,14 @@ public class FetchGroupConverter {
full = true;
content -= FetchGroup.MIME_DESCRIPTOR_MASK;
}
+ if ((content & FetchGroup.MIME_CONTENT_MASK) > 0) {
+ full = true;
+ content -= FetchGroup.MIME_CONTENT_MASK;
+ }
+ if ((content & FetchGroup.MIME_HEADERS_MASK) > 0) {
+ full = true;
+ content -= FetchGroup.MIME_HEADERS_MASK;
+ }
if (full || (body && headers)) {
return MessageMapper.FetchType.Full;
} else if (body) {
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java
new file mode 100644
index 0000000..2c3f66f
--- /dev/null
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/FetchGroupConverterTest.java
@@ -0,0 +1,121 @@
+/****************************************************************
+ * 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: ww.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.mailbox.store.mail;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.james.mailbox.model.FetchGroup;
+import org.apache.james.mailbox.model.MimePath;
+import org.junit.jupiter.api.Test;
+
+class FetchGroupConverterTest {
+ @Test
+ void getFetchTypeShouldReturnMetadataWhenMinimal() {
+ assertThat(FetchGroupConverter.getFetchType(FetchGroup.MINIMAL))
+ .isEqualTo(MessageMapper.FetchType.Metadata);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnHeadersWhenHeaders() {
+ assertThat(FetchGroupConverter.getFetchType(FetchGroup.HEADERS))
+ .isEqualTo(MessageMapper.FetchType.Headers);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnBodyContentWhenBody() {
+ assertThat(FetchGroupConverter.getFetchType(FetchGroup.BODY_CONTENT))
+ .isEqualTo(MessageMapper.FetchType.Body);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenBodyAndHeaders() {
+ FetchGroup fetchGroup = FetchGroup.BODY_CONTENT
+ .or(FetchGroup.HEADERS_MASK);
+
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenFull() {
+ assertThat(FetchGroupConverter.getFetchType(FetchGroup.FULL_CONTENT))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenMimeContent() {
+ FetchGroup fetchGroup = FetchGroup.MINIMAL
+ .or(FetchGroup.MIME_CONTENT_MASK);
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenMimeDescriptor() {
+ FetchGroup fetchGroup = FetchGroup.MINIMAL
+ .or(FetchGroup.MIME_DESCRIPTOR_MASK);
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenMimeHeaders() {
+ FetchGroup fetchGroup = FetchGroup.MINIMAL
+ .or(FetchGroup.MIME_HEADERS_MASK);
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenMimePartIsReadMinimally() {
+ int[] parts = {12};
+ FetchGroup fetchGroup = FetchGroup.MINIMAL
+ .addPartContent(new MimePath(parts), FetchGroup.MINIMAL_MASK);
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenMimePartHeadersIsRead() {
+ int[] parts = {12};
+ FetchGroup fetchGroup = FetchGroup.MINIMAL
+ .addPartContent(new MimePath(parts), FetchGroup.HEADERS_MASK);
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenMimePartBodyIsRead() {
+ int[] parts = {12};
+ FetchGroup fetchGroup = FetchGroup.MINIMAL
+ .addPartContent(new MimePath(parts), FetchGroup.BODY_CONTENT_MASK);
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+
+ @Test
+ void getFetchTypeShouldReturnFullWhenMimePartIsFullyRead() {
+ int[] parts = {12};
+ FetchGroup fetchGroup = FetchGroup.MINIMAL
+ .addPartContent(new MimePath(parts), FetchGroup.FULL_CONTENT_MASK);
+ assertThat(FetchGroupConverter.getFetchType(fetchGroup))
+ .isEqualTo(MessageMapper.FetchType.Full);
+ }
+}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 05/23: JAMES-2989 Rework toString for MimePathImpl
Posted by bt...@apache.org.
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 95cb9dcf463e78782a6fd07d118bfb60d1ed8fc7
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:22:57 2019 +0700
JAMES-2989 Rework toString for MimePathImpl
---
.../apache/james/mailbox/model/MimePathImpl.java | 17 ++++------------
.../james/mailbox/model/MimePathImplTest.java | 23 ++++++++++++++++++++++
2 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
index 66c5fcf..0548429 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MimePathImpl.java
@@ -28,7 +28,6 @@ public class MimePathImpl implements MessageResult.MimePath {
private final int[] positions;
public MimePathImpl(int[] positions) {
- super();
this.positions = positions;
}
@@ -52,17 +51,9 @@ public class MimePathImpl implements MessageResult.MimePath {
return Arrays.hashCode(positions);
}
- public String toString() {
- final StringBuilder builder = new StringBuilder("MIMEPath:");
- boolean isFirst = false;
- for (int position : positions) {
- if (isFirst) {
- isFirst = false;
- } else {
- builder.append('.');
- }
- builder.append(position);
- }
- return builder.toString();
+ @Override
+ public final String toString() {
+ return "MIMEPath:"
+ + Arrays.toString(positions);
}
}
\ No newline at end of file
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
index 0b1caf9..ff649d2 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MimePathImplTest.java
@@ -19,6 +19,8 @@
package org.apache.james.mailbox.model;
+import static org.assertj.core.api.Java6Assertions.assertThat;
+
import org.junit.jupiter.api.Test;
import nl.jqno.equalsverifier.EqualsVerifier;
@@ -29,4 +31,25 @@ class MimePathImplTest {
EqualsVerifier.forClass(MimePathImpl.class)
.verify();
}
+
+ @Test
+ void toStringWhenEmpty() {
+ int[] empty = {};
+ assertThat(new MimePathImpl(empty).toString())
+ .isEqualTo("MIMEPath:[]");
+ }
+
+ @Test
+ void toStringWhenSingle() {
+ int[] single = {1};
+ assertThat(new MimePathImpl(single).toString())
+ .isEqualTo("MIMEPath:[1]");
+ }
+
+ @Test
+ void toStringWhenMany() {
+ int[] many = {1, 2, 3};
+ assertThat(new MimePathImpl(many).toString())
+ .isEqualTo("MIMEPath:[1, 2, 3]");
+ }
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 11/23: JAMES-2989
StoreMailboxMessageResultIteratorTest should use FetchGroupImpl
Posted by bt...@apache.org.
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 ca808dc494153233d2f1e083770d0c719d133988
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Nov 25 11:44:02 2019 +0700
JAMES-2989 StoreMailboxMessageResultIteratorTest should use FetchGroupImpl
---
.../StoreMailboxMessageResultIteratorTest.java | 24 +++++-----------------
1 file changed, 5 insertions(+), 19 deletions(-)
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
index 1e4a787..a41d703 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
@@ -23,13 +23,11 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Optional;
-import java.util.Set;
import javax.mail.Flags;
import javax.mail.util.SharedByteArrayInputStream;
@@ -37,11 +35,11 @@ import javax.mail.util.SharedByteArrayInputStream;
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.FetchGroupImpl;
import org.apache.james.mailbox.model.Mailbox;
import org.apache.james.mailbox.model.MailboxCounters;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageRange;
-import org.apache.james.mailbox.model.MessageResult.FetchGroup;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.model.UpdatedFlags;
import org.apache.james.mailbox.store.mail.MessageMapper;
@@ -55,18 +53,6 @@ import com.google.common.collect.Iterables;
public class StoreMailboxMessageResultIteratorTest {
- private final class TestFetchGroup implements FetchGroup {
- @Override
- public Set<PartContentDescriptor> getPartContentDescriptors() {
- return new HashSet<>();
- }
-
- @Override
- public int content() {
- return FetchGroup.MINIMAL;
- }
- }
-
private final class TestMessageMapper implements MessageMapper {
private final MessageRange messageRange;
@@ -203,7 +189,7 @@ public class StoreMailboxMessageResultIteratorTest {
public void testBatching() {
MessageRange range = MessageRange.range(MessageUid.of(1), MessageUid.of(10));
BatchSizes batchSize = BatchSizes.uniqueBatchSize(3);
- StoreMessageResultIterator it = new StoreMessageResultIterator(new TestMessageMapper(MessageRange.all()), null, range, batchSize, new TestFetchGroup());
+ StoreMessageResultIterator it = new StoreMessageResultIterator(new TestMessageMapper(MessageRange.all()), null, range, batchSize, FetchGroupImpl.MINIMAL);
assertThat(it).toIterable()
.extracting(input -> input.getUid().asLong())
@@ -214,7 +200,7 @@ public class StoreMailboxMessageResultIteratorTest {
public void nextShouldReturnFirstElement() {
MessageRange range = MessageUid.of(1).toRange();
BatchSizes batchSize = BatchSizes.uniqueBatchSize(42);
- StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(range), null, range, batchSize, new TestFetchGroup());
+ StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(range), null, range, batchSize, FetchGroupImpl.MINIMAL);
assertThat(iterator.next()).isNotNull();
}
@@ -223,7 +209,7 @@ public class StoreMailboxMessageResultIteratorTest {
MessageRange messages = MessageUid.of(1).toRange();
MessageRange findRange = MessageUid.of(2).toRange();
BatchSizes batchSize = BatchSizes.uniqueBatchSize(42);
- StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, new TestFetchGroup());
+ StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, FetchGroupImpl.MINIMAL);
iterator.next();
}
@@ -232,7 +218,7 @@ public class StoreMailboxMessageResultIteratorTest {
MessageRange messages = MessageUid.of(1).toRange();
MessageRange findRange = MessageUid.of(2).toRange();
BatchSizes batchSize = BatchSizes.uniqueBatchSize(42);
- StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, new TestFetchGroup());
+ StoreMessageResultIterator iterator = new StoreMessageResultIterator(new TestMessageMapper(messages), null, findRange, batchSize, FetchGroupImpl.MINIMAL);
assertThat(iterator.hasNext()).isFalse();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[james-project] 21/23: JAMES-2988 Fix FetchGroup javadoc
Posted by bt...@apache.org.
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 77d5ad0bef96704c47bc4d4880c9f156f9f8f724
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Nov 27 10:25:05 2019 +0700
JAMES-2988 Fix FetchGroup javadoc
---
.../api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
index 7ff2d70..7923774 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/FetchGroup.java
@@ -67,7 +67,7 @@ public class FetchGroup {
/**
* Contents to be fetched. Composed bitwise.
*
- * @return bitwise description
+ * @return masks to be used for bitewise operations.
* @see #MINIMAL_MASK
* @see #MIME_DESCRIPTOR_MASK
* @see #HEADERS_MASK
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org