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 bt...@apache.org on 2017/01/24 05:49:03 UTC
[03/15] james-project git commit: JAMES-1785 Using
SystemMailboxesProvider to look up role and remove the redundance code
JAMES-1785 Using SystemMailboxesProvider to look up role and remove the redundance code
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1acd459a
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1acd459a
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1acd459a
Branch: refs/heads/master
Commit: 1acd459ab233aa41a40cfd2985c5753b516cb452
Parents: c996365
Author: Quynh Nguyen <qn...@linagora.com>
Authored: Thu Jan 19 17:46:58 2017 +0700
Committer: Quynh Nguyen <qn...@linagora.com>
Committed: Tue Jan 24 09:45:34 2017 +0700
----------------------------------------------------------------------
.../james/jmap/send/PostDequeueDecorator.java | 38 +++++++-------------
.../jmap/send/PostDequeueDecoratorFactory.java | 10 +++---
.../jmap/utils/SystemMailboxesProvider.java | 6 ++++
.../jmap/utils/SystemMailboxesProviderImpl.java | 3 +-
.../SetMessagesCreationProcessorTest.java | 1 +
.../jmap/send/PostDequeueDecoratorTest.java | 3 +-
6 files changed, 29 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/1acd459a/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 9179b7e..8a122db 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
@@ -24,15 +24,13 @@ import java.util.List;
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.exception.MailboxException;
import org.apache.james.mailbox.model.FetchGroupImpl;
import org.apache.james.mailbox.model.MailboxId;
-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.MessageId;
import org.apache.james.mailbox.model.MessageId.Factory;
import org.apache.james.mailbox.model.MessageResult;
@@ -51,15 +49,18 @@ public class PostDequeueDecorator extends MailQueueItemDecorator {
private final MailboxManager mailboxManager;
private final Factory messageIdFactory;
private final MessageIdManager messageIdManager;
+ private final SystemMailboxesProvider systemMailboxesProvider;
public PostDequeueDecorator(MailQueueItem mailQueueItem,
- MailboxManager mailboxManager,
- MessageId.Factory messageIdFactory,
- MessageIdManager messageIdManager) {
+ MailboxManager mailboxManager,
+ Factory messageIdFactory,
+ MessageIdManager messageIdManager,
+ SystemMailboxesProvider systemMailboxesProvider) {
super(mailQueueItem);
this.mailboxManager = mailboxManager;
this.messageIdFactory = messageIdFactory;
this.messageIdManager = messageIdManager;
+ this.systemMailboxesProvider = systemMailboxesProvider;
}
@Override
@@ -95,7 +96,7 @@ public class PostDequeueDecorator extends MailQueueItemDecorator {
try {
messageIdFactory.fromString((String) messageId);
} catch (Exception e) {
- LOG.error("Invalid messageId: " + (String) messageId);
+ LOG.error("Invalid messageId: " + messageId);
return false;
}
return true;
@@ -123,28 +124,13 @@ public class PostDequeueDecorator extends MailQueueItemDecorator {
}
private MailboxId getSentMailboxId(MailboxSession session) throws MailboxRoleNotFoundException, MailboxException {
- return getMailboxIdForRole(Role.SENT, session);
+ return systemMailboxesProvider.findMailbox(Role.SENT, session)
+ .getId();
}
private MailboxId getOutboxMailboxId(MailboxSession session) throws MailboxRoleNotFoundException, MailboxException {
- return getMailboxIdForRole(Role.OUTBOX, session);
+ return systemMailboxesProvider.findMailbox(Role.OUTBOX, session)
+ .getId();
}
- private MailboxId getMailboxIdForRole(Role role, MailboxSession session) throws MailboxRoleNotFoundException, MailboxException {
- MailboxQuery allUserMailboxesQuery = MailboxQuery.builder(session)
- .privateUserMailboxes()
- .build();
- return mailboxManager.search(allUserMailboxesQuery, session)
- .stream()
- .filter(meta -> hasRole(meta.getPath(), role))
- .map(MailboxMetaData::getId)
- .findFirst()
- .orElseThrow(() -> new MailboxRoleNotFoundException(role));
- }
-
- private boolean hasRole(MailboxPath mailBoxPath, Role role) {
- return Role.from(mailBoxPath.getName())
- .map(role::equals)
- .orElse(false);
- }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/1acd459a/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 a43de17..5114fe8 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
@@ -21,9 +21,9 @@ package org.apache.james.jmap.send;
import javax.inject.Inject;
+import org.apache.james.jmap.utils.SystemMailboxesProvider;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MessageIdManager;
-import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageId.Factory;
import org.apache.james.queue.api.MailQueue.MailQueueItem;
import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
@@ -32,18 +32,20 @@ public class PostDequeueDecoratorFactory implements MailQueueItemDecoratorFactor
private final MailboxManager mailboxManager;
private final Factory messageIdFactory;
private final MessageIdManager messageIdManager;
+ private final SystemMailboxesProvider systemMailboxesProvider;
@Inject
- public PostDequeueDecoratorFactory(MailboxManager mailboxManager, MessageId.Factory messageIdFactory,
- MessageIdManager messageIdManager) {
+ public PostDequeueDecoratorFactory(MailboxManager mailboxManager, Factory messageIdFactory,
+ MessageIdManager messageIdManager, SystemMailboxesProvider systemMailboxesProvider) {
this.mailboxManager = mailboxManager;
this.messageIdFactory = messageIdFactory;
this.messageIdManager = messageIdManager;
+ this.systemMailboxesProvider = systemMailboxesProvider;
}
@Override
public MailQueueItemDecorator decorate(MailQueueItem mailQueueItem) {
- return new PostDequeueDecorator(mailQueueItem, mailboxManager, messageIdFactory, messageIdManager);
+ return new PostDequeueDecorator(mailQueueItem, mailboxManager, messageIdFactory, messageIdManager, systemMailboxesProvider);
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/1acd459a/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 e3d605d..bc01d52 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
@@ -21,6 +21,7 @@ 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;
@@ -28,4 +29,9 @@ import org.apache.james.mailbox.exception.MailboxException;
public interface SystemMailboxesProvider {
Stream<MessageManager> listMailboxes(Role aRole, MailboxSession session) throws MailboxException;
+
+ default MessageManager findMailbox(Role role, MailboxSession session) throws MailboxException {
+ return listMailboxes(role, session).findAny()
+ .orElseThrow(() -> new MailboxRoleNotFoundException(role));
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/1acd459a/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 c5d36fe..181fafd 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
@@ -41,7 +41,8 @@ public class SystemMailboxesProviderImpl implements SystemMailboxesProvider {
private final MailboxManager mailboxManager;
@Inject
- @VisibleForTesting SystemMailboxesProviderImpl(MailboxManager mailboxManager) {
+ @VisibleForTesting
+ public SystemMailboxesProviderImpl(MailboxManager mailboxManager) {
this.mailboxManager = mailboxManager;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/1acd459a/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 10ba230..b5605bc 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
@@ -36,6 +36,7 @@ import java.util.stream.Stream;
import javax.mail.Flags;
import org.apache.james.jmap.exceptions.AttachmentsNotFoundException;
+import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException;
import org.apache.james.jmap.methods.ValueWithId.CreationMessageEntry;
import org.apache.james.jmap.model.Attachment;
import org.apache.james.jmap.model.BlobId;
http://git-wip-us.apache.org/repos/asf/james-project/blob/1acd459a/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 477e371..3c6fd2e 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
@@ -31,6 +31,7 @@ import javax.mail.Flags;
import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException;
import org.apache.james.jmap.send.exception.MailShouldBeInOutboxException;
+import org.apache.james.jmap.utils.SystemMailboxesProviderImpl;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
@@ -76,7 +77,7 @@ public class PostDequeueDecoratorTest {
mail = FakeMail.defaultFakeMail();
when(mockedMailQueueItem.getMail()).thenReturn(mail);
testee = new PostDequeueDecorator(mockedMailQueueItem, mailboxManager, new InMemoryMessageId.Factory(),
- inMemoryIntegrationResources.createMessageIdManager(mailboxManager));
+ inMemoryIntegrationResources.createMessageIdManager(mailboxManager), new SystemMailboxesProviderImpl(mailboxManager));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org