JAMES-1818 Remove store usage in PostDequeueDecorator
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b9c1f441 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b9c1f441 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b9c1f441 Branch: refs/heads/master Commit: b9c1f441cf2b1808db9364c042326edf39496848 Parents: f1116e2 Author: Raphael Ouazana <raphael.ouaz...@linagora.com> Authored: Thu Aug 25 17:42:04 2016 +0200 Committer: Raphael Ouazana <raphael.ouaz...@linagora.com> Committed: Mon Aug 29 15:17:17 2016 +0200 ---------------------------------------------------------------------- .../james/jmap/send/PostDequeueDecorator.java | 39 +++----------------- .../jmap/send/PostDequeueDecoratorFactory.java | 14 ++----- .../jmap/send/PostDequeueDecoratorTest.java | 13 +------ 3 files changed, 9 insertions(+), 57 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/b9c1f441/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 52c2dfd..ab2bb21 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 @@ -19,30 +19,21 @@ package org.apache.james.jmap.send; import java.io.Serializable; -import java.util.Iterator; import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException; import org.apache.james.jmap.model.MessageId; import org.apache.james.jmap.model.mailbox.Role; import org.apache.james.jmap.send.exception.MailShouldBeInOutboxException; -import org.apache.james.jmap.send.exception.MessageIdNotFoundException; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxMetaData; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MailboxQuery; -import org.apache.james.mailbox.model.MessageRange; -import org.apache.james.mailbox.store.mail.MailboxMapperFactory; -import org.apache.james.mailbox.store.mail.MessageMapper; -import org.apache.james.mailbox.store.mail.MessageMapperFactory; -import org.apache.james.mailbox.store.mail.model.Mailbox; -import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.queue.api.MailQueue.MailQueueException; import org.apache.james.queue.api.MailQueue.MailQueueItem; import org.apache.james.queue.api.MailQueueItemDecoratorFactory.MailQueueItemDecorator; import org.apache.mailet.Mail; -import org.javatuples.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -50,17 +41,11 @@ public class PostDequeueDecorator extends MailQueueItemDecorator { private static final Logger LOG = LoggerFactory.getLogger(PostDequeueDecorator.class); private final MailboxManager mailboxManager; - private final MessageMapperFactory messageMapperFactory; - private final MailboxMapperFactory mailboxMapperFactory; public PostDequeueDecorator(MailQueueItem mailQueueItem, - MailboxManager mailboxManager, - MessageMapperFactory messageMapperFactory, - MailboxMapperFactory mailboxMapperFactory) { + MailboxManager mailboxManager) { super(mailQueueItem); this.mailboxManager = mailboxManager; - this.messageMapperFactory = messageMapperFactory; - this.mailboxMapperFactory = mailboxMapperFactory; } @Override @@ -76,8 +61,7 @@ public class PostDequeueDecorator extends MailQueueItemDecorator { String username = (String) getMail().getAttribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE); try { MailboxSession mailboxSession = mailboxManager.createSystemSession(username, LOG); - Pair<MailboxMessage, MailboxPath> mailboxMessageAndMailboxPath = getMailboxMessageAndMailboxPath(messageId, mailboxSession); - moveFromOutboxToSent(mailboxMessageAndMailboxPath, mailboxSession); + moveFromOutboxToSent(messageId, mailboxSession); } catch (MailboxException e) { throw new MailQueueException(e.getMessage(), e); } @@ -108,25 +92,12 @@ public class PostDequeueDecorator extends MailQueueItemDecorator { return (username != null && username instanceof String); } - public Pair<MailboxMessage, MailboxPath> getMailboxMessageAndMailboxPath(MessageId messageId, MailboxSession mailboxSession) throws MailQueueException, MailboxException { - MailboxPath mailboxPath = messageId.getMailboxPath(); - MessageMapper messageMapper = messageMapperFactory.getMessageMapper(mailboxSession); - Mailbox mailbox = mailboxMapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(mailboxPath); - Iterator<MailboxMessage> resultIterator = messageMapper.findInMailbox(mailbox, MessageRange.one(messageId.getUid()), MessageMapper.FetchType.Full, 1); - if (resultIterator.hasNext()) { - return Pair.with(resultIterator.next(), mailboxPath); - } else { - throw new MessageIdNotFoundException(messageId); - } - } - - private void moveFromOutboxToSent(Pair<MailboxMessage, MailboxPath> mailboxMessageAndMailboxPath, MailboxSession mailboxSession) throws MailQueueException, MailboxException { - MailboxMessage mailboxMessage = mailboxMessageAndMailboxPath.getValue0(); - MailboxPath outboxMailboxPath = mailboxMessageAndMailboxPath.getValue1(); + private void moveFromOutboxToSent(MessageId messageId, MailboxSession mailboxSession) throws MailQueueException, MailboxException { + MailboxPath outboxMailboxPath = messageId.getMailboxPath(); ensureMailboxPathIsOutbox(outboxMailboxPath); MailboxPath sentMailboxPath = getSentMailboxPath(mailboxSession); - mailboxManager.moveMessages(MessageRange.one(mailboxMessage.getUid()), outboxMailboxPath, sentMailboxPath, mailboxSession); + mailboxManager.moveMessages(messageId.getUidAsRange(), outboxMailboxPath, sentMailboxPath, mailboxSession); } private void ensureMailboxPathIsOutbox(MailboxPath outboxMailboxPath) throws MailShouldBeInOutboxException { http://git-wip-us.apache.org/repos/asf/james-project/blob/b9c1f441/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecoratorFactory.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecoratorFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecoratorFactory.java index 9d0fdef..d2d7974 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecoratorFactory.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecoratorFactory.java @@ -22,28 +22,20 @@ package org.apache.james.jmap.send; import javax.inject.Inject; import org.apache.james.mailbox.MailboxManager; -import org.apache.james.mailbox.store.mail.MailboxMapperFactory; -import org.apache.james.mailbox.store.mail.MessageMapperFactory; import org.apache.james.queue.api.MailQueue.MailQueueItem; import org.apache.james.queue.api.MailQueueItemDecoratorFactory; public class PostDequeueDecoratorFactory implements MailQueueItemDecoratorFactory { private final MailboxManager mailboxManager; - private final MessageMapperFactory messageMapperFactory; - private final MailboxMapperFactory mailboxMapperFactory; @Inject - public PostDequeueDecoratorFactory(MailboxManager mailboxManager, - MessageMapperFactory messageMapperFactory, - MailboxMapperFactory mailboxMapperFactory) { - this.mailboxManager = mailboxManager; - this.messageMapperFactory = messageMapperFactory; - this.mailboxMapperFactory = mailboxMapperFactory; + public PostDequeueDecoratorFactory(MailboxManager mailboxManager) { + this.mailboxManager = mailboxManager; } @Override public MailQueueItemDecorator decorate(MailQueueItem mailQueueItem) { - return new PostDequeueDecorator(mailQueueItem, mailboxManager, messageMapperFactory, mailboxMapperFactory); + return new PostDequeueDecorator(mailQueueItem, mailboxManager); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/b9c1f441/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java index 223e426..858b685 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java @@ -32,7 +32,6 @@ import javax.mail.Flags; import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException; import org.apache.james.jmap.model.MessageId; import org.apache.james.jmap.send.exception.MailShouldBeInOutboxException; -import org.apache.james.jmap.send.exception.MessageIdNotFoundException; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.acl.GroupMembershipResolver; @@ -85,7 +84,7 @@ public class PostDequeueDecoratorTest { mockedMailQueueItem = mock(MailQueueItem.class); mail = new FakeMail(); when(mockedMailQueueItem.getMail()).thenReturn(mail); - testee = new PostDequeueDecorator(mockedMailQueueItem, mailboxManager, mailboxSessionMapperFactory, mailboxSessionMapperFactory); + testee = new PostDequeueDecorator(mockedMailQueueItem, mailboxManager); } @Test @@ -99,16 +98,6 @@ public class PostDequeueDecoratorTest { verify(mockedMailQueueItem).done(true); } - @Test(expected=MessageIdNotFoundException.class) - public void doneShouldThrowWhenMetadataHasNotAnExistingMessageId() throws Exception { - MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME, LOGGER); - mailboxManager.createMailbox(OUTBOX_MAILBOX_PATH, mailboxSession); - mail.setAttribute(MailMetadata.MAIL_METADATA_MESSAGE_ID_ATTRIBUTE, MESSAGE_ID); - mail.setAttribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, USERNAME); - - testee.done(true); - } - @Test(expected=MailShouldBeInOutboxException.class) public void doneShouldThrowWhenMessageIsNotInOutbox() throws Exception { MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME, LOGGER); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org