JAMES-2530 Add an intermediate AppendInMailboxes action to better describe input
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d7b1caf3 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d7b1caf3 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d7b1caf3 Branch: refs/heads/master Commit: d7b1caf3976a9d82cc822c44aad70dbe2160ff12 Parents: 4d8e807 Author: Benoit Tellier <btell...@linagora.com> Authored: Mon Aug 27 17:16:58 2018 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Tue Aug 28 12:48:15 2018 +0700 ---------------------------------------------------------------------- .../james/jmap/cassandra/filtering/RuleDTO.java | 4 +- .../apache/james/jmap/api/filtering/Rule.java | 77 +++++++++++++++----- .../james/jmap/api/filtering/RuleFixture.java | 10 +-- .../james/jmap/api/filtering/RuleTest.java | 16 ++-- 4 files changed, 75 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/d7b1caf3/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/RuleDTO.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/RuleDTO.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/RuleDTO.java index c72eb39..02c3fae 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/RuleDTO.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/filtering/RuleDTO.java @@ -52,7 +52,7 @@ public class RuleDTO { rule.getCondition().getField().asString(), rule.getCondition().getComparator().asString(), rule.getCondition().getValue(), - rule.getAction().getMailboxIds()); + rule.getAction().getAppendInMailboxes().getMailboxIds()); } private final String id; @@ -112,7 +112,7 @@ public class RuleDTO { Rule.Condition.Comparator.of(comparator), value)) .name(name) - .action(Rule.Action.ofMailboxIds(mailboxIds)) + .action(Rule.Action.of(Rule.Action.AppendInMailboxes.withMailboxIds(mailboxIds))) .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/d7b1caf3/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/filtering/Rule.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/filtering/Rule.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/filtering/Rule.java index 0da600d..8b4ae67 100644 --- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/filtering/Rule.java +++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/filtering/Rule.java @@ -35,8 +35,8 @@ public class Rule { public static class Id { public static Id of(String id) { - Preconditions.checkNotNull(id, "id should no be null"); - Preconditions.checkArgument(StringUtils.isNotBlank(id), "id should no be empty"); + Preconditions.checkNotNull(id, "id should not be null"); + Preconditions.checkArgument(StringUtils.isNotBlank(id), "id should not be empty"); return new Id(id); } @@ -130,10 +130,10 @@ public class Rule { } public static Condition of(Field field, Comparator comparator, String value) { - Preconditions.checkNotNull(field, "field should no be null"); - Preconditions.checkNotNull(comparator, "comparator should no be null"); - Preconditions.checkNotNull(value, "value should no be null"); - Preconditions.checkArgument(StringUtils.isNotBlank(value), "value should no be empty"); + Preconditions.checkNotNull(field, "field should not be null"); + Preconditions.checkNotNull(comparator, "comparator should not be null"); + Preconditions.checkNotNull(value, "value should not be null"); + Preconditions.checkArgument(StringUtils.isNotBlank(value), "value should not be empty"); return new Condition(field, comparator, value); } @@ -185,46 +185,83 @@ public class Rule { } } - public static class Action { - public static Action ofMailboxIds(List<String> mailboxIds) { - Preconditions.checkNotNull(mailboxIds, "mailboxIds should no be null"); - return new Action(mailboxIds); + public static class AppendInMailboxes { + + public static AppendInMailboxes withMailboxIds(List<String> mailboxIds) { + Preconditions.checkNotNull(mailboxIds, "mailboxIds should not be null"); + return new AppendInMailboxes(mailboxIds); + } + + public static AppendInMailboxes withMailboxIds(String... mailboxIds) { + return withMailboxIds(Arrays.asList(mailboxIds)); + } + + private final ImmutableList<String> mailboxIds; + + private AppendInMailboxes(List<String> mailboxIds) { + this.mailboxIds = ImmutableList.copyOf(mailboxIds); + } + + public ImmutableList<String> getMailboxIds() { + return mailboxIds; + } + + @Override + public final boolean equals(Object o) { + if (o instanceof AppendInMailboxes) { + AppendInMailboxes appendInMailboxes = (AppendInMailboxes) o; + return Objects.equals(mailboxIds, appendInMailboxes.mailboxIds); + } + return false; + } + + @Override + public final int hashCode() { + return Objects.hash(mailboxIds); + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("mailboxIds", mailboxIds) + .toString(); + } } - public static Action ofMailboxIds(String... mailboxIds) { - return ofMailboxIds(Arrays.asList(mailboxIds)); + public static Action of(AppendInMailboxes appendInMailboxes) { + return new Action(appendInMailboxes); } - private final ImmutableList<String> mailboxIds; + private final AppendInMailboxes appendInMailboxes; - private Action(List<String> mailboxIds) { - this.mailboxIds = ImmutableList.copyOf(mailboxIds); + private Action(AppendInMailboxes appendInMailboxes) { + this.appendInMailboxes = appendInMailboxes; } - public ImmutableList<String> getMailboxIds() { - return mailboxIds; + public AppendInMailboxes getAppendInMailboxes() { + return appendInMailboxes; } @Override public final boolean equals(Object o) { if (o instanceof Action) { Action action = (Action) o; - return Objects.equals(mailboxIds, action.mailboxIds); + return Objects.equals(appendInMailboxes, action.appendInMailboxes); } return false; } @Override public final int hashCode() { - return Objects.hash(mailboxIds); + return Objects.hash(appendInMailboxes); } @Override public String toString() { return MoreObjects.toStringHelper(this) - .add("mailboxIds", mailboxIds) + .add("appendInMailboxes", appendInMailboxes) .toString(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/d7b1caf3/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleFixture.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleFixture.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleFixture.java index 5d17d03..96d31ea 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleFixture.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleFixture.java @@ -22,7 +22,7 @@ package org.apache.james.jmap.api.filtering; public interface RuleFixture { String NAME = "a name"; Rule.Condition CONDITION = Rule.Condition.of(Rule.Condition.Field.CC, Rule.Condition.Comparator.CONTAINS, "something"); - Rule.Action ACTION = Rule.Action.ofMailboxIds("id-01"); + Rule.Action ACTION = Rule.Action.of(Rule.Action.AppendInMailboxes.withMailboxIds("id-01")); Rule.Builder RULE_BUILER = Rule.builder().name(NAME).condition(CONDITION).action(ACTION); Rule RULE_1 = RULE_BUILER.id(Rule.Id.of("1")).build(); Rule RULE_2 = RULE_BUILER.id(Rule.Id.of("2")).build(); @@ -31,7 +31,7 @@ public interface RuleFixture { Rule RULE_TO = Rule.builder() .id(Rule.Id.of("id-to")) .name(NAME) - .action(Rule.Action.ofMailboxIds("mbx1")) + .action(Rule.Action.of(Rule.Action.AppendInMailboxes.withMailboxIds("mbx1"))) .condition(Rule.Condition.of( Rule.Condition.Field.TO, Rule.Condition.Comparator.EXACTLY_EQUALS, @@ -41,7 +41,7 @@ public interface RuleFixture { Rule RULE_SUBJECT = Rule.builder() .id(Rule.Id.of("id-subject")) .name(NAME) - .action(Rule.Action.ofMailboxIds("mbx1")) + .action(Rule.Action.of(Rule.Action.AppendInMailboxes.withMailboxIds("mbx1"))) .condition(Rule.Condition.of( Rule.Condition.Field.SUBJECT, Rule.Condition.Comparator.NOT_CONTAINS, @@ -51,7 +51,7 @@ public interface RuleFixture { Rule RULE_RECIPIENT = Rule.builder() .id(Rule.Id.of("id-rcpt")) .name(NAME) - .action(Rule.Action.ofMailboxIds("mbx1")) + .action(Rule.Action.of(Rule.Action.AppendInMailboxes.withMailboxIds("mbx1"))) .condition(Rule.Condition.of( Rule.Condition.Field.RECIPIENT, Rule.Condition.Comparator.NOT_EXACTLY_EQUALS, @@ -61,7 +61,7 @@ public interface RuleFixture { Rule RULE_FROM = Rule.builder() .id(Rule.Id.of("id-from")) .name(NAME) - .action(Rule.Action.ofMailboxIds("mbx1")) + .action(Rule.Action.of(Rule.Action.AppendInMailboxes.withMailboxIds("mbx1"))) .condition(Rule.Condition.of( Rule.Condition.Field.FROM, Rule.Condition.Comparator.CONTAINS, http://git-wip-us.apache.org/repos/asf/james-project/blob/d7b1caf3/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleTest.java ---------------------------------------------------------------------- diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleTest.java index 2e3e760..c341f48 100644 --- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleTest.java +++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/filtering/RuleTest.java @@ -29,15 +29,15 @@ import org.junit.jupiter.api.Test; import nl.jqno.equalsverifier.EqualsVerifier; -public class RuleTest { +class RuleTest { private static final List<String> ACTION_MAILBOXIDS = Arrays.asList("id-01"); private static final String CONDITION_COMPARATOR = "contains"; private static final String CONDITION_FIELD = "cc"; private static final String NAME = "a name"; - public static final Rule.Condition CONDITION = Rule.Condition.of(Rule.Condition.Field.of(CONDITION_FIELD), Rule.Condition.Comparator.of(CONDITION_COMPARATOR), "something"); - public static final Rule.Action ACTION = Rule.Action.ofMailboxIds(ACTION_MAILBOXIDS); - public static final Rule.Id UNIQUE_ID = Rule.Id.of("uniqueId"); + private static final Rule.Condition CONDITION = Rule.Condition.of(Rule.Condition.Field.of(CONDITION_FIELD), Rule.Condition.Comparator.of(CONDITION_COMPARATOR), "something"); + private static final Rule.Action ACTION = Rule.Action.of(Rule.Action.AppendInMailboxes.withMailboxIds(ACTION_MAILBOXIDS)); + private static final Rule.Id UNIQUE_ID = Rule.Id.of("uniqueId"); @Test void shouldMatchBeanContract() { @@ -64,6 +64,12 @@ public class RuleTest { } @Test + void innerClassAppendInMailboxesShouldMatchBeanContract() { + EqualsVerifier.forClass(Rule.Action.AppendInMailboxes.class) + .verify(); + } + + @Test void idShouldThrowOnNull() { assertThatThrownBy(() -> Rule.Id.of(null)).isInstanceOf(NullPointerException.class); } @@ -158,7 +164,7 @@ public class RuleTest { @Test void buildActionShouldConserveMailboxIdsList() { - assertThat(ACTION.getMailboxIds()).isEqualTo(ACTION_MAILBOXIDS); + assertThat(ACTION.getAppendInMailboxes().getMailboxIds()).isEqualTo(ACTION_MAILBOXIDS); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org