JAMES-2341 Move Role at API level
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e640b76f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e640b76f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e640b76f Branch: refs/heads/master Commit: e640b76fece2fa2bfd449d840ad0d7d6cfacba90 Parents: f8c62f2 Author: Antoine Duprat <[email protected]> Authored: Tue Feb 27 11:20:46 2018 +0100 Committer: Antoine Duprat <[email protected]> Committed: Wed Feb 28 13:29:32 2018 +0100 ---------------------------------------------------------------------- .../java/org/apache/james/mailbox/Role.java | 121 ++++++++++++++ .../java/org/apache/james/mailbox/RoleTest.java | 163 +++++++++++++++++++ .../integration/SetMessagesMethodTest.java | 2 +- .../MailboxRoleNotFoundException.java | 2 +- .../james/jmap/json/ObjectMapperFactory.java | 4 + .../org/apache/james/jmap/json/RoleMixIn.java | 27 +++ .../SetMailboxesDestructionProcessor.java | 2 +- .../methods/SetMailboxesUpdateProcessor.java | 2 +- .../methods/SetMessagesCreationProcessor.java | 2 +- .../methods/SetMessagesUpdateProcessor.java | 2 +- .../apache/james/jmap/model/MailboxFactory.java | 2 +- .../james/jmap/model/mailbox/Mailbox.java | 1 + .../model/mailbox/MailboxCreateRequest.java | 1 + .../model/mailbox/MailboxUpdateRequest.java | 1 + .../apache/james/jmap/model/mailbox/Role.java | 125 -------------- .../james/jmap/model/mailbox/SortOrder.java | 2 + .../james/jmap/send/PostDequeueDecorator.java | 2 +- .../jmap/utils/SystemMailboxesProvider.java | 2 +- .../jmap/utils/SystemMailboxesProviderImpl.java | 2 +- .../jmap/methods/GetMailboxesMethodTest.java | 2 +- .../SetMessagesCreationProcessorTest.java | 2 +- .../model/mailbox/MailboxCreateRequestTest.java | 1 + .../james/jmap/model/mailbox/MailboxTest.java | 1 + .../james/jmap/model/mailbox/RoleTest.java | 162 ------------------ .../utils/SystemMailboxesProviderImplTest.java | 2 +- 25 files changed, 335 insertions(+), 300 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/mailbox/api/src/main/java/org/apache/james/mailbox/Role.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/Role.java b/mailbox/api/src/main/java/org/apache/james/mailbox/Role.java new file mode 100644 index 0000000..675b91b --- /dev/null +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/Role.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://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; + +import java.util.List; +import java.util.Optional; +import java.util.function.BiFunction; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.MoreObjects; +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableList; + +public class Role { + + public static final String USER_DEFINED_ROLE_PREFIX = "x-"; + + private static final BiFunction<String, String, Boolean> CASE_SENSITIVE_COMPARATOR = (a, b) -> a.equals(b); + private static final BiFunction<String, String, Boolean> NON_CASE_SENSITIVE_COMPARATOR = (a, b) -> a.equalsIgnoreCase(b); + + public static final Role INBOX = new Role("inbox", DefaultMailboxes.INBOX, NON_CASE_SENSITIVE_COMPARATOR); + public static final Role DRAFTS = new Role("drafts", DefaultMailboxes.DRAFTS, CASE_SENSITIVE_COMPARATOR); + public static final Role OUTBOX = new Role("outbox", DefaultMailboxes.OUTBOX, CASE_SENSITIVE_COMPARATOR); + public static final Role SENT = new Role("sent", DefaultMailboxes.SENT, CASE_SENSITIVE_COMPARATOR); + public static final Role TRASH = new Role("trash", DefaultMailboxes.TRASH, CASE_SENSITIVE_COMPARATOR); + public static final Role ARCHIVE = new Role("archive", DefaultMailboxes.ARCHIVE, CASE_SENSITIVE_COMPARATOR); + public static final Role SPAM = new Role("spam", DefaultMailboxes.SPAM, CASE_SENSITIVE_COMPARATOR); + public static final Role TEMPLATES = new Role("templates", DefaultMailboxes.TEMPLATES, CASE_SENSITIVE_COMPARATOR); + + private static final List<Role> ROLES = + ImmutableList.<Role>of(INBOX, DRAFTS, OUTBOX, SENT, TRASH, ARCHIVE, SPAM, TEMPLATES); + + private final String name; + private final String defaultMailbox; + private final BiFunction<String, String, Boolean> comparator; + + @VisibleForTesting Role(String name, String defaultMailbox, BiFunction<String, String, Boolean> comparator) { + this.name = name; + this.defaultMailbox = defaultMailbox; + this.comparator = comparator; + } + + @VisibleForTesting Role(String name) { + this.name = name; + this.defaultMailbox = null; + this.comparator = NON_CASE_SENSITIVE_COMPARATOR; + } + + public static Optional<Role> from(String name) { + Optional<Role> predefinedRole = predefinedRole(name); + if (predefinedRole.isPresent()) { + return predefinedRole; + } else { + return tryBuildCustomRole(name); + } + } + + private static Optional<Role> predefinedRole(String name) { + return ROLES.stream() + .filter(role -> role.comparator.apply(role.defaultMailbox, name)) + .findFirst(); + } + + private static Optional<Role> tryBuildCustomRole(String name) { + if (name.startsWith(USER_DEFINED_ROLE_PREFIX)) { + return Optional.of(new Role(name)); + } + return Optional.empty(); + } + + public boolean isSystemRole() { + return predefinedRole(defaultMailbox).isPresent(); + } + + public String serialize() { + return name; + } + + public String getDefaultMailbox() { + return defaultMailbox; + } + + @Override + public int hashCode() { + return Objects.hashCode(name, defaultMailbox); + } + + @Override + public boolean equals(Object object) { + if (object instanceof Role) { + Role that = (Role) object; + return Objects.equal(this.name, that.name) + && Objects.equal(this.defaultMailbox, that.defaultMailbox); + } + return false; + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("name", name) + .add("defaultMailbox", defaultMailbox) + .toString(); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/mailbox/api/src/test/java/org/apache/james/mailbox/RoleTest.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/RoleTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/RoleTest.java new file mode 100644 index 0000000..134ecf3 --- /dev/null +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/RoleTest.java @@ -0,0 +1,163 @@ +/**************************************************************** + * 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; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Locale; +import java.util.Optional; + +import org.apache.james.mailbox.Role; +import org.junit.Test; + +public class RoleTest { + + @Test + public void fromShouldReturnEmptyWhenUnknownValue() { + assertThat(Role.from("jjjj")).isEqualTo(Optional.empty()); + } + + @Test + public void fromShouldReturnSomethingWhenXPrefixedRole() { + assertThat(Role.from("x-client-specific-role")).isEqualTo(Optional.of(new Role("x-client-specific-role"))); + } + + @Test + public void isSystemRoleShouldReturnFalseWhenXPrefixedRole() { + Role role = Role.from("x-client-specific-role").get(); + assertThat(role.isSystemRole()).isFalse(); + } + + @Test + public void fromShouldReturnInboxWhenContainsUppercaseValueInTurkish() { + Locale previousLocale = Locale.getDefault(); + Locale.setDefault(Locale.forLanguageTag("tr")); + try { + assertThat(Role.from("InBox")).isEqualTo(Optional.of(Role.INBOX)); + } finally { + Locale.setDefault(previousLocale); + } + } + + @Test + public void isSystemRoleShouldBeTrueWhenInbox() { + assertThat(Role.INBOX.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeTrueWhenArchive() { + assertThat(Role.ARCHIVE.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeTrueWhenDrafts() { + assertThat(Role.DRAFTS.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeTrueWhenOutbox() { + assertThat(Role.OUTBOX.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeTrueWhenSent() { + assertThat(Role.SENT.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeTrueWhenTrash() { + assertThat(Role.TRASH.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeTrueWhenSpam() { + assertThat(Role.SPAM.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeTrueWhenTemplates() { + assertThat(Role.TEMPLATES.isSystemRole()).isTrue(); + } + + @Test + public void isSystemRoleShouldBeFalseWhenUserDefinedRole() { + Role userRole = Role.from(Role.USER_DEFINED_ROLE_PREFIX + "myRole").get(); + assertThat(userRole.isSystemRole()).isFalse(); + } + + @Test + public void theINBOXMailboxNameShouldBeASystemMailbox() { + Role role = Role.from("INBOX").get(); + assertThat(role.isSystemRole()).isTrue(); + } + + @Test + public void theInBoXMailboxNameShouldBeASystemMailbox() { + Role role = Role.from("InBoX").get(); + assertThat(role.isSystemRole()).isTrue(); + } + + @Test + public void theDraftsMailboxNameShouldBeASystemMailbox() { + Role role = Role.from("Drafts").get(); + assertThat(role.isSystemRole()).isTrue(); + } + + @Test + public void theDrAfTsMailboxNameShouldNotBeASystemMailbox() { + Optional<Role> role = Role.from("DrAfTs"); + assertThat(role).isEmpty(); + } + + @Test + public void theOutboxMailboxNameShouldBeASystemMailbox() { + Role role = Role.from("Outbox").get(); + assertThat(role.isSystemRole()).isTrue(); + } + + @Test + public void theOuTbOxMailboxNameShouldNotBeASystemMailbox() { + Optional<Role> role = Role.from("OuTbOx"); + assertThat(role).isEmpty(); + } + + @Test + public void theSentMailboxNameShouldBeASystemMailbox() { + Role role = Role.from("Sent").get(); + assertThat(role.isSystemRole()).isTrue(); + } + + @Test + public void theSeNtMailboxNameShouldNotBeASystemMailbox() { + Optional<Role> role = Role.from("SeNt"); + assertThat(role).isEmpty(); + } + + @Test + public void theTrashMailboxNameShouldBeASystemMailbox() { + Role role = Role.from("Trash").get(); + assertThat(role.isSystemRole()).isTrue(); + } + + @Test + public void theTrAsHMailboxNameShouldNotBeASystemMailbox() { + Optional<Role> role = Role.from("TrAsH"); + assertThat(role).isEmpty(); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java index c63b022..1fc4864 100644 --- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java +++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java @@ -58,10 +58,10 @@ import org.apache.http.client.utils.URIBuilder; import org.apache.james.GuiceJamesServer; import org.apache.james.jmap.HttpJmapAuthentication; import org.apache.james.jmap.api.access.AccessToken; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.mailbox.DefaultMailboxes; import org.apache.james.mailbox.FlagsBuilder; import org.apache.james.mailbox.MailboxListener; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.Attachment; import org.apache.james.mailbox.model.ComposedMessageId; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxRoleNotFoundException.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxRoleNotFoundException.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxRoleNotFoundException.java index 88692c8..89d63a1 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxRoleNotFoundException.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/exceptions/MailboxRoleNotFoundException.java @@ -19,7 +19,7 @@ package org.apache.james.jmap.exceptions; -import org.apache.james.jmap.model.mailbox.Role; +import org.apache.james.mailbox.Role; public class MailboxRoleNotFoundException extends RuntimeException { http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java index c48527e..36c76fa 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/ObjectMapperFactory.java @@ -25,6 +25,7 @@ import java.util.Set; import javax.inject.Inject; import org.apache.james.jmap.model.mailbox.Rights; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageId; @@ -70,6 +71,9 @@ public class ObjectMapperFactory { mailboxIdModule.addKeySerializer(MessageId.class, new MessageIdKeySerializer()); mailboxIdModule.addKeyDeserializer(Rights.Username.class, new UsernameKeyDeserializer()); mailboxIdModule.addDeserializer(Rights.Right.class, new RightDeserializer()); + + mailboxIdModule.setMixInAnnotation(Role.class, RoleMixIn.class); + jacksonModules = JACKSON_BASE_MODULES.add(mailboxIdModule).build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/RoleMixIn.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/RoleMixIn.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/RoleMixIn.java new file mode 100644 index 0000000..29060b4 --- /dev/null +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/json/RoleMixIn.java @@ -0,0 +1,27 @@ +/**************************************************************** + * 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.jmap.json; + +import com.fasterxml.jackson.annotation.JsonValue; + +public abstract class RoleMixIn { + + @JsonValue + abstract String serialize(); +} http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java index 2251d82..c81a2a1 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesDestructionProcessor.java @@ -35,11 +35,11 @@ import org.apache.james.jmap.model.SetMailboxesRequest; import org.apache.james.jmap.model.SetMailboxesResponse; import org.apache.james.jmap.model.SetMailboxesResponse.Builder; import org.apache.james.jmap.model.mailbox.Mailbox; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.utils.MailboxUtils; import org.apache.james.jmap.utils.SortingHierarchicalCollections; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.SubscriptionManager; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.TooLongMailboxNameException; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java index 912765f..1d2af08 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesUpdateProcessor.java @@ -37,11 +37,11 @@ import org.apache.james.jmap.model.SetMailboxesResponse.Builder; import org.apache.james.jmap.model.mailbox.Mailbox; import org.apache.james.jmap.model.mailbox.MailboxUpdateRequest; import org.apache.james.jmap.model.mailbox.Rights.Username; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.utils.MailboxUtils; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.SubscriptionManager; import org.apache.james.mailbox.exception.DifferentDomainException; import org.apache.james.mailbox.exception.MailboxException; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java index 26a50bc..c7f76ac 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java @@ -49,11 +49,11 @@ import org.apache.james.jmap.model.SetMessagesError; import org.apache.james.jmap.model.SetMessagesRequest; import org.apache.james.jmap.model.SetMessagesResponse; import org.apache.james.jmap.model.SetMessagesResponse.Builder; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.utils.SystemMailboxesProvider; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxNotFoundException; import org.apache.james.mailbox.model.MailboxId; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java index 1a003e3..e6f230c 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java @@ -44,12 +44,12 @@ import org.apache.james.jmap.model.SetError; import org.apache.james.jmap.model.SetMessagesRequest; import org.apache.james.jmap.model.SetMessagesResponse; import org.apache.james.jmap.model.UpdateMessagePatch; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.utils.SystemMailboxesProvider; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageManager.FlagsUpdateMode; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxNotFoundException; import org.apache.james.mailbox.model.FetchGroupImpl; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java index fca9da2..949a6e4 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MailboxFactory.java @@ -27,11 +27,11 @@ import org.apache.james.jmap.model.mailbox.Mailbox; import org.apache.james.jmap.model.mailbox.MailboxNamespace; import org.apache.james.jmap.model.mailbox.Rights; import org.apache.james.jmap.model.mailbox.Rights.Username; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.model.mailbox.SortOrder; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxNotFoundException; import org.apache.james.mailbox.model.MailboxCounters; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java index 9c771f4..8dc0ff2 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Mailbox.java @@ -24,6 +24,7 @@ import java.util.Optional; import org.apache.james.jmap.methods.JmapResponseWriterImpl; import org.apache.james.jmap.model.Number; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.model.MailboxId; import com.fasterxml.jackson.annotation.JsonFilter; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java index c0eb828..e473726 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequest.java @@ -24,6 +24,7 @@ import java.util.Optional; import org.apache.commons.lang.NotImplementedException; import org.apache.james.jmap.model.MailboxCreationId; +import org.apache.james.mailbox.Role; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java index 81cfc4a..b5a042a 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/MailboxUpdateRequest.java @@ -23,6 +23,7 @@ import java.util.Objects; import java.util.Optional; import org.apache.commons.lang.NotImplementedException; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxId; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Role.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Role.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Role.java deleted file mode 100644 index 8f7ee17..0000000 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/Role.java +++ /dev/null @@ -1,125 +0,0 @@ -/**************************************************************** - * 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.jmap.model.mailbox; - -import java.util.List; -import java.util.Optional; -import java.util.function.BiFunction; - -import org.apache.james.mailbox.DefaultMailboxes; - -import com.fasterxml.jackson.annotation.JsonValue; -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.MoreObjects; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; - -public class Role { - - public static final String USER_DEFINED_ROLE_PREFIX = "x-"; - - private static final BiFunction<String, String, Boolean> CASE_SENSITIVE_COMPARATOR = (a, b) -> a.equals(b); - private static final BiFunction<String, String, Boolean> NON_CASE_SENSITIVE_COMPARATOR = (a, b) -> a.equalsIgnoreCase(b); - - public static final Role INBOX = new Role("inbox", DefaultMailboxes.INBOX, NON_CASE_SENSITIVE_COMPARATOR); - public static final Role DRAFTS = new Role("drafts", DefaultMailboxes.DRAFTS, CASE_SENSITIVE_COMPARATOR); - public static final Role OUTBOX = new Role("outbox", DefaultMailboxes.OUTBOX, CASE_SENSITIVE_COMPARATOR); - public static final Role SENT = new Role("sent", DefaultMailboxes.SENT, CASE_SENSITIVE_COMPARATOR); - public static final Role TRASH = new Role("trash", DefaultMailboxes.TRASH, CASE_SENSITIVE_COMPARATOR); - public static final Role ARCHIVE = new Role("archive", DefaultMailboxes.ARCHIVE, CASE_SENSITIVE_COMPARATOR); - public static final Role SPAM = new Role("spam", DefaultMailboxes.SPAM, CASE_SENSITIVE_COMPARATOR); - public static final Role TEMPLATES = new Role("templates", DefaultMailboxes.TEMPLATES, CASE_SENSITIVE_COMPARATOR); - - private static final List<Role> ROLES = - ImmutableList.<Role>of(INBOX, DRAFTS, OUTBOX, SENT, TRASH, ARCHIVE, SPAM, TEMPLATES); - - private final String name; - private final String defaultMailbox; - private final BiFunction<String, String, Boolean> comparator; - - @VisibleForTesting Role(String name, String defaultMailbox, BiFunction<String, String, Boolean> comparator) { - this.name = name; - this.defaultMailbox = defaultMailbox; - this.comparator = comparator; - } - - @VisibleForTesting Role(String name) { - this.name = name; - this.defaultMailbox = null; - this.comparator = NON_CASE_SENSITIVE_COMPARATOR; - } - - public static Optional<Role> from(String name) { - Optional<Role> predefinedRole = predefinedRole(name); - if (predefinedRole.isPresent()) { - return predefinedRole; - } else { - return tryBuildCustomRole(name); - } - } - - private static Optional<Role> predefinedRole(String name) { - return ROLES.stream() - .filter(role -> role.comparator.apply(role.defaultMailbox, name)) - .findFirst(); - } - - private static Optional<Role> tryBuildCustomRole(String name) { - if (name.startsWith(USER_DEFINED_ROLE_PREFIX)) { - return Optional.of(new Role(name)); - } - return Optional.empty(); - } - - public boolean isSystemRole() { - return predefinedRole(defaultMailbox).isPresent(); - } - - @JsonValue - public String serialize() { - return name; - } - - public String getDefaultMailbox() { - return defaultMailbox; - } - - @Override - public int hashCode() { - return Objects.hashCode(name, defaultMailbox); - } - - @Override - public boolean equals(Object object) { - if (object instanceof Role) { - Role that = (Role) object; - return Objects.equal(this.name, that.name) - && Objects.equal(this.defaultMailbox, that.defaultMailbox); - } - return false; - } - - @Override - public String toString() { - return MoreObjects.toStringHelper(this) - .add("name", name) - .add("defaultMailbox", defaultMailbox) - .toString(); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/SortOrder.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/SortOrder.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/SortOrder.java index 6284381..27c2a65 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/SortOrder.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/mailbox/SortOrder.java @@ -20,6 +20,8 @@ package org.apache.james.jmap.model.mailbox; import java.util.Optional; +import org.apache.james.mailbox.Role; + import com.fasterxml.jackson.annotation.JsonValue; import com.google.common.base.MoreObjects; import com.google.common.base.Objects; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java index 9220aca..814ba8c 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java @@ -25,13 +25,13 @@ import javax.mail.Flags; import javax.mail.Flags.Flag; import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.send.exception.MailShouldBeInOutboxException; import org.apache.james.jmap.utils.SystemMailboxesProvider; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.FetchGroupImpl; import org.apache.james.mailbox.model.MailboxId; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProvider.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProvider.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProvider.java index 1b55c55..57e41bf 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProvider.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProvider.java @@ -22,9 +22,9 @@ package org.apache.james.jmap.utils; import java.util.stream.Stream; import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; public interface SystemMailboxesProvider { http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java index 500f9ab..50bd057 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/utils/SystemMailboxesProviderImpl.java @@ -23,10 +23,10 @@ import java.util.stream.Stream; import javax.inject.Inject; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxNotFoundException; import org.apache.james.mailbox.model.MailboxMetaData; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java index f0f6d3f..c750526 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java @@ -37,11 +37,11 @@ import org.apache.james.jmap.model.GetMailboxesResponse; import org.apache.james.jmap.model.MailboxFactory; import org.apache.james.jmap.model.Number; import org.apache.james.jmap.model.mailbox.Mailbox; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.model.mailbox.SortOrder; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.inmemory.InMemoryId; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java index 022be44..628b67e 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java @@ -44,7 +44,6 @@ import org.apache.james.jmap.model.MessageFactory; import org.apache.james.jmap.model.MessagePreviewGenerator; import org.apache.james.jmap.model.SetMessagesRequest; import org.apache.james.jmap.model.SetMessagesResponse; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.send.MailFactory; import org.apache.james.jmap.send.MailMetadata; import org.apache.james.jmap.send.MailSpool; @@ -57,6 +56,7 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageUid; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxNotFoundException; import org.apache.james.mailbox.inmemory.InMemoryId; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequestTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequestTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequestTest.java index 72e2d37..ce719d9 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequestTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxCreateRequestTest.java @@ -22,6 +22,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import org.apache.commons.lang.NotImplementedException; +import org.apache.james.mailbox.Role; import org.junit.Test; public class MailboxCreateRequestTest { http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java index 5875a5b..be674c3 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/MailboxTest.java @@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.Optional; import org.apache.james.jmap.model.Number; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.inmemory.InMemoryId; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RoleTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RoleTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RoleTest.java deleted file mode 100644 index fcdcede..0000000 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/mailbox/RoleTest.java +++ /dev/null @@ -1,162 +0,0 @@ -/**************************************************************** - * 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.jmap.model.mailbox; - -import static org.assertj.core.api.Assertions.assertThat; - -import java.util.Locale; -import java.util.Optional; - -import org.junit.Test; - -public class RoleTest { - - @Test - public void fromShouldReturnEmptyWhenUnknownValue() { - assertThat(Role.from("jjjj")).isEqualTo(Optional.empty()); - } - - @Test - public void fromShouldReturnSomethingWhenXPrefixedRole() { - assertThat(Role.from("x-client-specific-role")).isEqualTo(Optional.of(new Role("x-client-specific-role"))); - } - - @Test - public void isSystemRoleShouldReturnFalseWhenXPrefixedRole() { - Role role = Role.from("x-client-specific-role").get(); - assertThat(role.isSystemRole()).isFalse(); - } - - @Test - public void fromShouldReturnInboxWhenContainsUppercaseValueInTurkish() { - Locale previousLocale = Locale.getDefault(); - Locale.setDefault(Locale.forLanguageTag("tr")); - try { - assertThat(Role.from("InBox")).isEqualTo(Optional.of(Role.INBOX)); - } finally { - Locale.setDefault(previousLocale); - } - } - - @Test - public void isSystemRoleShouldBeTrueWhenInbox() { - assertThat(Role.INBOX.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeTrueWhenArchive() { - assertThat(Role.ARCHIVE.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeTrueWhenDrafts() { - assertThat(Role.DRAFTS.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeTrueWhenOutbox() { - assertThat(Role.OUTBOX.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeTrueWhenSent() { - assertThat(Role.SENT.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeTrueWhenTrash() { - assertThat(Role.TRASH.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeTrueWhenSpam() { - assertThat(Role.SPAM.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeTrueWhenTemplates() { - assertThat(Role.TEMPLATES.isSystemRole()).isTrue(); - } - - @Test - public void isSystemRoleShouldBeFalseWhenUserDefinedRole() { - Role userRole = Role.from(Role.USER_DEFINED_ROLE_PREFIX + "myRole").get(); - assertThat(userRole.isSystemRole()).isFalse(); - } - - @Test - public void theINBOXMailboxNameShouldBeASystemMailbox() { - Role role = Role.from("INBOX").get(); - assertThat(role.isSystemRole()).isTrue(); - } - - @Test - public void theInBoXMailboxNameShouldBeASystemMailbox() { - Role role = Role.from("InBoX").get(); - assertThat(role.isSystemRole()).isTrue(); - } - - @Test - public void theDraftsMailboxNameShouldBeASystemMailbox() { - Role role = Role.from("Drafts").get(); - assertThat(role.isSystemRole()).isTrue(); - } - - @Test - public void theDrAfTsMailboxNameShouldNotBeASystemMailbox() { - Optional<Role> role = Role.from("DrAfTs"); - assertThat(role).isEmpty(); - } - - @Test - public void theOutboxMailboxNameShouldBeASystemMailbox() { - Role role = Role.from("Outbox").get(); - assertThat(role.isSystemRole()).isTrue(); - } - - @Test - public void theOuTbOxMailboxNameShouldNotBeASystemMailbox() { - Optional<Role> role = Role.from("OuTbOx"); - assertThat(role).isEmpty(); - } - - @Test - public void theSentMailboxNameShouldBeASystemMailbox() { - Role role = Role.from("Sent").get(); - assertThat(role.isSystemRole()).isTrue(); - } - - @Test - public void theSeNtMailboxNameShouldNotBeASystemMailbox() { - Optional<Role> role = Role.from("SeNt"); - assertThat(role).isEmpty(); - } - - @Test - public void theTrashMailboxNameShouldBeASystemMailbox() { - Role role = Role.from("Trash").get(); - assertThat(role.isSystemRole()).isTrue(); - } - - @Test - public void theTrAsHMailboxNameShouldNotBeASystemMailbox() { - Optional<Role> role = Role.from("TrAsH"); - assertThat(role).isEmpty(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/e640b76f/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java index e2ebc95..7efcf9a 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/SystemMailboxesProviderImplTest.java @@ -24,10 +24,10 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.Role; import org.apache.james.mailbox.exception.MailboxNotFoundException; import org.apache.james.mailbox.fixture.MailboxFixture; import org.apache.james.mailbox.mock.MockMailboxSession; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
