James-1920 Make move to trash like move to any other mailbox
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/52367e7d Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/52367e7d Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/52367e7d Branch: refs/heads/master Commit: 52367e7d5b58d9efc0f41f25c6b66bae7a3bd769 Parents: f2d4d61 Author: Luc DUZAN <ldu...@linagora.com> Authored: Tue Jan 24 17:27:57 2017 +0100 Committer: Luc DUZAN <ldu...@linagora.com> Committed: Thu Jan 26 11:11:02 2017 +0100 ---------------------------------------------------------------------- .../integration/SetMessagesMethodTest.java | 9 +++++---- .../methods/SetMessagesUpdateProcessor.java | 21 ++------------------ 2 files changed, 7 insertions(+), 23 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/52367e7d/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 671f299..d2c89e5 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 @@ -2048,7 +2048,7 @@ public abstract class SetMessagesMethodTest { } @Test - public void moveToTrashIsNotYetSupported() throws Exception { + public void setMessagesShouldWorkForMoveToTrash() throws Exception { String trashId = jmapServer.serverProbe().getMailbox("#private", USERNAME, "trash").getMailboxId().serialize(); ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z"); @@ -2074,10 +2074,11 @@ public abstract class SetMessagesMethodTest { .when() .post("/jmap") .then() - .log().ifValidationFails() .statusCode(200) - .body(NAME, equalTo("error")) - .body(ARGUMENTS + ".type", equalTo("Not yet implemented")); + .log().ifValidationFails() + .body(NAME, equalTo("messagesSet")) + .body(ARGUMENTS + ".updated[0]", equalTo(messageToMoveId)) + .body(ARGUMENTS + ".updated", hasSize(1)); } @Test http://git-wip-us.apache.org/repos/asf/james-project/blob/52367e7d/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 aaae397..c188d28 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 @@ -28,14 +28,11 @@ import java.util.stream.Stream; import javax.inject.Inject; import javax.mail.Flags; -import org.apache.commons.lang.NotImplementedException; -import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException; import org.apache.james.jmap.model.MessageProperties; 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.MailboxManager; import org.apache.james.mailbox.MailboxSession; @@ -80,6 +77,7 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor { this.systemMailboxesProvider = systemMailboxesProvider; } + @Override public SetMessagesResponse process(SetMessagesRequest request, MailboxSession mailboxSession) { SetMessagesResponse.Builder responseBuilder = SetMessagesResponse.builder(); request.buildUpdatePatches(updatePatchConverter).forEach( (id, patch) -> { @@ -112,7 +110,7 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor { } catch (MailboxException e) { handleMessageUpdateException(messageId, builder, e); } - + } private Stream<MailboxException> updateFlags(MessageId messageId, UpdateMessagePatch updateMessagePatch, MailboxSession mailboxSession, MessageResult messageResult) { @@ -133,25 +131,10 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor { .map(mailboxId -> mailboxIdFactory.fromString(mailboxId)) .collect(Guavate.toImmutableList()); - if (isMoveToTrash(mailboxSession, mailboxIds)) { - throw new NotImplementedException("Do not support move to trash"); - } - messageIdManager.setInMailboxes(messageId, mailboxIds, mailboxSession); } } - private boolean isMoveToTrash(MailboxSession mailboxSession, List<MailboxId> mailboxIds) throws MailboxException { - try { - return mailboxIds.size() == 1 - && mailboxIds.get(0) - .equals(systemMailboxesProvider.findMailbox(Role.TRASH, mailboxSession).getId()); - } catch (MailboxRoleNotFoundException e) { - LOGGER.debug("Unable to find Trash mailbox for user: " + mailboxSession.getUser().getUserName(), e); - return false; - } - } - private void addMessageIdNotFoundToResponse(MessageId messageId, SetMessagesResponse.Builder builder) { builder.notUpdated(ImmutableMap.of(messageId, SetError.builder() --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org