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 ma...@apache.org on 2017/09/27 08:00:11 UTC
[2/6] james-project git commit: JAMES-2161 Don't throw when failing
to parse a flag
JAMES-2161 Don't throw when failing to parse a flag
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/036096bb
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/036096bb
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/036096bb
Branch: refs/heads/master
Commit: 036096bb92ffb4896faf8ad4fd8873d71591495d
Parents: 9c5b001
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Sep 26 12:33:30 2017 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Sep 27 08:52:04 2017 +0200
----------------------------------------------------------------------
.../org/apache/james/jmap/model/Keywords.java | 16 +++++++-
.../apache/james/jmap/model/MessageTest.java | 43 ++++++++++++++++++++
2 files changed, 58 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/036096bb/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Keywords.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Keywords.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Keywords.java
index 91aff31..ed07982 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Keywords.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Keywords.java
@@ -25,9 +25,12 @@ import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Stream;
+
import javax.mail.Flags;
import org.apache.james.mailbox.FlagsBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.github.steveash.guavate.Guavate;
import com.google.common.annotations.VisibleForTesting;
@@ -38,7 +41,9 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
public class Keywords {
+
public static final Keywords DEFAULT_VALUE = factory().fromSet(ImmutableSet.of());
+ private static final Logger LOGGER = LoggerFactory.getLogger(Keywords.class);
public interface KeywordsValidator {
void validate(Set<Keyword> keywords);
@@ -121,12 +126,21 @@ public class Keywords {
public Keywords fromFlags(Flags flags) {
return fromSet(Stream.concat(
Stream.of(flags.getUserFlags())
- .map(Keyword::new),
+ .flatMap(this::asKeyword),
Stream.of(flags.getSystemFlags())
.map(Keyword::fromFlag))
.collect(Guavate.toImmutableSet()));
}
+ private Stream<Keyword> asKeyword(String flagName) {
+ try {
+ return Stream.of(new Keyword(flagName));
+ } catch (IllegalArgumentException e) {
+ LOGGER.warn("Fail to parse {} flag", flagName);
+ return Stream.of();
+ }
+ }
+
public Optional<Keywords> fromMapOrOldKeyword(Optional<Map<String, Boolean>> mapKeyword, Optional<OldKeyword> oldKeyword) {
Preconditions.checkArgument(!(mapKeyword.isPresent() && oldKeyword.isPresent()), "Does not support keyword and is* at the same time");
http://git-wip-us.apache.org/repos/asf/james-project/blob/036096bb/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
index d1c0914..2e690ba 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageTest.java
@@ -32,6 +32,7 @@ import org.junit.Test;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
public class MessageTest {
@@ -262,6 +263,48 @@ public class MessageTest {
}
@Test
+ public void buildShouldNotThrowWhenNonValidFlags() throws Exception {
+ Message.builder()
+ .id(TestMessageId.of(1))
+ .blobId(BlobId.of("blobId"))
+ .threadId("threadId")
+ .mailboxId(InMemoryId.of(456))
+ .headers(ImmutableMap.of("key", "value"))
+ .subject("subject")
+ .size(1)
+ .date(Instant.now())
+ .preview("preview")
+ .attachments(ImmutableList.of())
+ .flags(FlagsBuilder.builder()
+ .add("@ert", "t^a", "op§")
+ .build())
+ .build();
+ }
+
+ @Test
+ public void buildShouldIgnoreNonValidFlag() throws Exception {
+ Message message = Message.builder()
+ .id(TestMessageId.of(1))
+ .blobId(BlobId.of("blobId"))
+ .threadId("threadId")
+ .mailboxId(InMemoryId.of(456))
+ .headers(ImmutableMap.of("key", "value"))
+ .subject("subject")
+ .size(1)
+ .date(Instant.now())
+ .preview("preview")
+ .attachments(ImmutableList.of())
+ .flags(FlagsBuilder.builder()
+ .add("$Draft", "@ert", "t^a", "op§", "$user_flag")
+ .build())
+ .build();
+
+ assertThat(message.getKeywords()).containsOnly(
+ Maps.immutableEntry("$Draft", true),
+ Maps.immutableEntry("$user_flag", true));
+ }
+
+ @Test
public void hasAttachmentShouldReturnFalseWhenNoAttachment() throws Exception {
Message message = Message.builder()
.id(TestMessageId.of(1))
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org