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 86bcf2e242605152e600f2ecf4d2c6c5bf44a51d Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Thu Nov 28 12:04:51 2019 +0700 JAMES-2988 Fully remove bitewise logic from fetchGroup --- .../org/apache/james/mailbox/model/FetchGroup.java | 39 ++++------------------ .../apache/james/mailbox/model/FetchGroupTest.java | 32 +++++------------- .../store/mail/FetchGroupConverterTest.java | 8 ++--- 3 files changed, 18 insertions(+), 61 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 05844e4..753c646 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,11 +19,9 @@ package org.apache.james.mailbox.model; -import java.util.Arrays; import java.util.EnumSet; import java.util.Objects; import java.util.Set; -import java.util.stream.Collectors; import java.util.stream.Stream; import com.github.steveash.guavate.Guavate; @@ -36,39 +34,18 @@ import com.google.common.collect.ImmutableSet; */ public class FetchGroup { public enum Profile { - MIME_DESCRIPTOR(MIME_DESCRIPTOR_MASK), - HEADERS(HEADERS_MASK), - FULL_CONTENT(FULL_CONTENT_MASK), - BODY_CONTENT(BODY_CONTENT_MASK), - MIME_HEADERS(MIME_HEADERS_MASK), - MIME_CONTENT(MIME_CONTENT_MASK); - - public static EnumSet<Profile> of(int content) { - return Arrays.stream(values()) - .filter(value -> (content & value.mask) > 0) - .collect(Collectors.toCollection(() -> EnumSet.noneOf(Profile.class))); - } - - private final int mask; - - Profile(int mask) { - this.mask = mask; - } + MIME_DESCRIPTOR, + HEADERS, + FULL_CONTENT, + BODY_CONTENT, + MIME_HEADERS, + MIME_CONTENT; } /** * 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; - 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(EnumSet.noneOf(Profile.class)); public static final FetchGroup HEADERS = new FetchGroup(EnumSet.of(Profile.HEADERS)); public static final FetchGroup FULL_CONTENT = new FetchGroup(EnumSet.of(Profile.FULL_CONTENT)); @@ -98,10 +75,6 @@ public class FetchGroup { return content; } - public FetchGroup with(int content) { - return with(Profile.of(content)); - } - public FetchGroup with(Profile... profiles) { Preconditions.checkArgument(profiles.length > 0); return with(EnumSet.copyOf(ImmutableSet.copyOf(profiles))); 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 b0b072f..c779a3a 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 @@ -22,37 +22,15 @@ package org.apache.james.mailbox.model; import static org.assertj.core.api.Assertions.assertThat; import java.util.EnumSet; -import java.util.stream.Stream; import org.apache.james.mailbox.model.FetchGroup.Profile; import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; import com.google.common.collect.ImmutableSet; import nl.jqno.equalsverifier.EqualsVerifier; class FetchGroupTest { - static Stream<Arguments> ofContentShouldReturnCorrectValue() { - return Stream.of( - Arguments.arguments(0, EnumSet.noneOf(Profile.class)), - Arguments.arguments(FetchGroup.MIME_DESCRIPTOR_MASK, EnumSet.of(Profile.MIME_DESCRIPTOR)), - Arguments.arguments(FetchGroup.BODY_CONTENT_MASK, EnumSet.of(Profile.BODY_CONTENT)), - Arguments.arguments(FetchGroup.FULL_CONTENT_MASK, EnumSet.of(Profile.FULL_CONTENT)), - Arguments.arguments(FetchGroup.HEADERS_MASK, EnumSet.of(Profile.HEADERS)), - Arguments.arguments(FetchGroup.MIME_HEADERS_MASK, EnumSet.of(Profile.MIME_HEADERS)), - Arguments.arguments(FetchGroup.MIME_CONTENT_MASK, EnumSet.of(Profile.MIME_CONTENT)), - Arguments.arguments(FetchGroup.HEADERS_MASK | FetchGroup.MIME_CONTENT_MASK, EnumSet.of(Profile.HEADERS, Profile.MIME_CONTENT))); - } - - @ParameterizedTest - @MethodSource - void ofContentShouldReturnCorrectValue(int content, EnumSet<Profile> expected) { - assertThat(Profile.of(content)).isEqualTo(expected); - } - @Test void shouldMatchBeanContract() { EqualsVerifier.forClass(FetchGroup.class) @@ -60,12 +38,18 @@ class FetchGroupTest { } @Test - void orShouldReturnAFetchGroupWithUpdatedContent() { - assertThat(FetchGroup.HEADERS.with(FetchGroup.FULL_CONTENT_MASK)) + void withShouldReturnAFetchGroupWithUpdatedContent() { + assertThat(FetchGroup.HEADERS.with(Profile.FULL_CONTENT)) .isEqualTo(new FetchGroup(EnumSet.of(Profile.HEADERS, Profile.FULL_CONTENT))); } @Test + void withShouldReturnAFetchGroupWithSameContentWhenNoop() { + assertThat(FetchGroup.HEADERS.with(Profile.HEADERS)) + .isEqualTo(new FetchGroup(EnumSet.of(Profile.HEADERS, Profile.HEADERS))); + } + + @Test void addPartContentShouldAddPartContentWhenNotYetSpecified() { int[] path = {12}; assertThat( 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 0c1b376..5cfe5bf 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 @@ -41,10 +41,10 @@ class FetchGroupConverterTest { Arguments.arguments(FetchGroup.HEADERS, FetchType.Headers), Arguments.arguments(FetchGroup.BODY_CONTENT, FetchType.Body), Arguments.arguments(FetchGroup.FULL_CONTENT, FetchType.Full), - Arguments.arguments(FetchGroup.BODY_CONTENT.with(FetchGroup.HEADERS_MASK), FetchType.Full), - Arguments.arguments(FetchGroup.MINIMAL.with(FetchGroup.MIME_CONTENT_MASK), FetchType.Full), - Arguments.arguments(FetchGroup.MINIMAL.with(FetchGroup.MIME_DESCRIPTOR_MASK), FetchType.Full), - Arguments.arguments(FetchGroup.MINIMAL.with(FetchGroup.MIME_HEADERS_MASK), FetchType.Full), + Arguments.arguments(FetchGroup.BODY_CONTENT.with(Profile.HEADERS), FetchType.Full), + Arguments.arguments(FetchGroup.MINIMAL.with(Profile.MIME_CONTENT), FetchType.Full), + Arguments.arguments(FetchGroup.MINIMAL.with(Profile.MIME_DESCRIPTOR), FetchType.Full), + Arguments.arguments(FetchGroup.MINIMAL.with(Profile.MIME_HEADERS), FetchType.Full), Arguments.arguments(FetchGroup.MINIMAL.addPartContent(new MimePath(PARTS), EnumSet.noneOf(Profile.class)), FetchType.Full), Arguments.arguments(FetchGroup.MINIMAL.addPartContent(new MimePath(PARTS), EnumSet.of(Profile.HEADERS)), FetchType.Full), Arguments.arguments(FetchGroup.MINIMAL.addPartContent(new MimePath(PARTS), EnumSet.of(Profile.BODY_CONTENT)), FetchType.Full), --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org