JAMES-1818 Expose multimailboxes search in MailboxManager and remove the import 
from getMessageList


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/709cd707
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/709cd707
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/709cd707

Branch: refs/heads/master
Commit: 709cd707f6456820fee4449dfd4f8927935bc8a2
Parents: f26081d
Author: Raphael Ouazana <raphael.ouaz...@linagora.com>
Authored: Mon Aug 29 16:12:10 2016 +0200
Committer: Raphael Ouazana <raphael.ouaz...@linagora.com>
Committed: Mon Aug 29 16:12:10 2016 +0200

----------------------------------------------------------------------
 .../apache/james/mailbox/MailboxManager.java    | 15 +++++++++++++
 .../mailbox/store/StoreMailboxManager.java      |  9 ++++++++
 .../base/MailboxEventAnalyserTest.java          |  6 +++++
 .../jmap/methods/GetMessageListMethod.java      |  7 ++----
 .../FirstUserConnectionFilterThreadTest.java    |  9 ++++++++
 .../routes/UserMailboxesRoutesTest.java         | 23 ++++++++++----------
 6 files changed, 53 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/709cd707/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index 926074b..2eac8c3 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -19,8 +19,10 @@
 
 package org.apache.james.mailbox;
 
+import java.util.Collection;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.james.mailbox.exception.BadCredentialsException;
@@ -30,10 +32,12 @@ import 
org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.exception.UnsupportedRightException;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxAnnotation;
+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.MessageRange;
+import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SimpleMailboxACL;
 import org.slf4j.Logger;
 
@@ -209,6 +213,17 @@ public interface MailboxManager extends RequestAware, 
MailboxListenerSupport {
     List<MailboxMetaData> search(MailboxQuery expression, MailboxSession 
session) throws MailboxException;
 
     /**
+     * Searches for messages matching the given query.
+     * 
+     * @param expression
+     *            not null
+     * @param session
+     *            the context for this call, not null
+     * @throws MailboxException
+     */
+    Map<MailboxId, Collection<Long>> search(MultimailboxesSearchQuery 
expression, MailboxSession session) throws MailboxException;
+
+    /**
      * Does the given mailbox exist?
      * 
      * @param mailboxPath

http://git-wip-us.apache.org/repos/asf/james-project/blob/709cd707/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 7f5bd28..e3ae3c1 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -20,10 +20,12 @@
 package org.apache.james.mailbox.store;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.List;
 import java.util.Locale;
+import java.util.Map;
 import java.util.Random;
 import java.util.Set;
 
@@ -48,11 +50,13 @@ import 
org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxConstants;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxMetaData.Selectability;
 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.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SimpleMailboxACL;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
@@ -597,6 +601,11 @@ public class StoreMailboxManager implements MailboxManager 
{
         return results;
     }
 
+    @Override
+    public Map<MailboxId, Collection<Long>> search(MultimailboxesSearchQuery 
expression, MailboxSession session) throws MailboxException {
+        return index.search(session, expression);
+    }
+
     public boolean belongsToNamespaceAndUser(MailboxPath base, Mailbox 
mailbox) {
         if (mailbox.getUser() == null) {
             return  base.getUser() == null

http://git-wip-us.apache.org/repos/asf/james-project/blob/709cd707/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index 1e8dfa2..7ea9e0f 100644
--- 
a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ 
b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -66,6 +66,7 @@ import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResult.FetchGroup;
 import org.apache.james.mailbox.model.MessageResultIterator;
 import org.apache.james.mailbox.model.MimeDescriptor;
+import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.junit.Test;
@@ -404,6 +405,11 @@ public class MailboxEventAnalyserTest {
                 List<MailboxAnnotation> mailboxAnnotations) throws 
MailboxException {
         }
 
+        @Override
+        public Map<MailboxId, Collection<Long>> 
search(MultimailboxesSearchQuery expression, MailboxSession session) throws 
MailboxException {
+            return null;
+        }
+
     };
     
     private final class MyMailboxSession implements MailboxSession {

http://git-wip-us.apache.org/repos/asf/james-project/blob/709cd707/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
index 5fb1dae..911aa9f 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
@@ -54,7 +54,6 @@ import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
-import org.apache.james.mailbox.store.search.MessageSearchIndex;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -77,18 +76,16 @@ public class GetMessageListMethod implements Method {
     private static final Method.Response.Name RESPONSE_NAME = 
Method.Response.name("messageList");
 
     private final MailboxManager mailboxManager;
-    private final MessageSearchIndex messageSearchIndex;
     private final int maximumLimit;
     private final GetMessagesMethod getMessagesMethod;
     private final MailboxUtils mailboxUtils;
     private final Factory mailboxIdFactory;
 
     @Inject
-    @VisibleForTesting public GetMessageListMethod(MailboxManager 
mailboxManager, MessageSearchIndex messageSearchIndex,
+    @VisibleForTesting public GetMessageListMethod(MailboxManager 
mailboxManager,
             @Named(MAXIMUM_LIMIT) int maximumLimit, GetMessagesMethod 
getMessagesMethod, MailboxUtils mailboxUtils, MailboxId.Factory 
mailboxIdFactory) {
 
         this.mailboxManager = mailboxManager;
-        this.messageSearchIndex = messageSearchIndex;
         this.maximumLimit = maximumLimit;
         this.getMessagesMethod = getMessagesMethod;
         this.mailboxUtils = mailboxUtils;
@@ -123,7 +120,7 @@ public class GetMessageListMethod implements Method {
         GetMessageListResponse.Builder builder = 
GetMessageListResponse.builder();
         try {
             MultimailboxesSearchQuery searchQuery = 
convertToSearchQuery(messageListRequest);
-            Map<MailboxId, Collection<Long>> searchResults = 
messageSearchIndex.search(mailboxSession, searchQuery);
+            Map<MailboxId, Collection<Long>> searchResults = 
mailboxManager.search(searchQuery, mailboxSession);
             
             aggregateResults(mailboxSession, searchResults).entries().stream()
                 .sorted(comparatorFor(messageListRequest))

http://git-wip-us.apache.org/repos/asf/james-project/blob/709cd707/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
index 8b4c273..641aa4f 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/FirstUserConnectionFilterThreadTest.java
@@ -18,8 +18,10 @@
  ****************************************************************/
 package org.apache.james.jmap;
 
+import java.util.Collection;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 
 import org.apache.james.mailbox.MailboxListener;
@@ -33,10 +35,12 @@ import 
org.apache.james.mailbox.model.MailboxACL.MailboxACLEntryKey;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRight;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
 import org.apache.james.mailbox.model.MailboxAnnotation;
+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.MessageRange;
+import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.store.SimpleMailboxSession;
 import org.apache.james.user.lib.mock.InMemoryUsersRepository;
 import org.junit.Test;
@@ -229,6 +233,11 @@ public class FirstUserConnectionFilterThreadTest {
         public boolean hasCapability(MailboxCapabilities capability) {
             return false;
         }
+
+        @Override
+        public Map<MailboxId, Collection<Long>> 
search(MultimailboxesSearchQuery expression, MailboxSession session) throws 
MailboxException {
+            return null;
+        }
     }
 }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/709cd707/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
 
b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index 212bc3e..78198b3 100644
--- 
a/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ 
b/server/protocols/webadmin/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -41,6 +41,7 @@ import 
org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MailboxQuery;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.SimpleMailboxMetaData;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
@@ -549,7 +550,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldGenerateInternalErrorOnUnknownExceptionOnDelete() throws Exception {
-            when(mailboxManager.search(any(), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, MAILBOX_NAME), '.')));
+            when(mailboxManager.search(any(MailboxQuery.class), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, MAILBOX_NAME), '.')));
             doThrow(new 
RuntimeException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -560,7 +561,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldGenerateInternalErrorOnUnknownExceptionOnSearch() throws Exception {
-            when(mailboxManager.search(any(), any())).thenThrow(new 
RuntimeException());
+            when(mailboxManager.search(any(MailboxQuery.class), 
any())).thenThrow(new RuntimeException());
 
             when()
                 .delete(MAILBOX_NAME)
@@ -570,7 +571,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldGenerateInternalErrorOnUnknownMailboxExceptionOnDelete() throws 
Exception {
-            when(mailboxManager.search(any(), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, MAILBOX_NAME), '.')));
+            when(mailboxManager.search(any(MailboxQuery.class), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, MAILBOX_NAME), '.')));
             doThrow(new 
MailboxException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -581,7 +582,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldGenerateInternalErrorOnUnknownMailboxExceptionOnSearch() throws 
Exception {
-            when(mailboxManager.search(any(), any())).thenThrow(new 
MailboxException());
+            when(mailboxManager.search(any(MailboxQuery.class), 
any())).thenThrow(new MailboxException());
 
             when()
                 .delete(MAILBOX_NAME)
@@ -601,7 +602,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldGenerateInternalErrorOnUnknownExceptionWhenListingMailboxes() 
throws Exception {
-            doThrow(new RuntimeException()).when(mailboxManager).search(any(), 
any());
+            doThrow(new 
RuntimeException()).when(mailboxManager).search(any(MailboxQuery.class), any());
 
             when()
                 .delete()
@@ -611,7 +612,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldGenerateInternalErrorOnMailboxExceptionWhenListingMailboxes() 
throws Exception {
-            doThrow(new MailboxException()).when(mailboxManager).search(any(), 
any());
+            doThrow(new 
MailboxException()).when(mailboxManager).search(any(MailboxQuery.class), any());
 
             when()
                 .delete()
@@ -622,7 +623,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldGenerateInternalErrorOnUnknownExceptionWhenRemovingMailboxes() 
throws Exception {
-            when(mailboxManager.search(any(), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, "any"), '.')));
+            when(mailboxManager.search(any(MailboxQuery.class), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, "any"), '.')));
             doThrow(new 
RuntimeException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -633,7 +634,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldReturnOkOnMailboxNotFoundExceptionWhenRemovingMailboxes() throws 
Exception {
-            when(mailboxManager.search(any(), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, "any"), '.')));
+            when(mailboxManager.search(any(MailboxQuery.class), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, "any"), '.')));
             doThrow(new 
MailboxNotFoundException("any")).when(mailboxManager).deleteMailbox(any(), 
any());
 
             when()
@@ -644,7 +645,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
deleteShouldReturnInternalErrorOnMailboxExceptionWhenRemovingMailboxes() throws 
Exception {
-            when(mailboxManager.search(any(), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, "any"), '.')));
+            when(mailboxManager.search(any(MailboxQuery.class), 
any())).thenReturn(ImmutableList.of(new SimpleMailboxMetaData(new 
MailboxPath("#private", USERNAME, "any"), '.')));
             doThrow(new 
MailboxException()).when(mailboxManager).deleteMailbox(any(), any());
 
             when()
@@ -675,7 +676,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
getMailboxesShouldGenerateInternalErrorOnUnknownException() throws Exception {
-            doThrow(new RuntimeException()).when(mailboxManager).search(any(), 
any());
+            doThrow(new 
RuntimeException()).when(mailboxManager).search(any(MailboxQuery.class), any());
 
             when()
                 .get()
@@ -685,7 +686,7 @@ public class UserMailboxesRoutesTest {
 
         @Test
         public void 
getMailboxesShouldGenerateInternalErrorOnUnknownMailboxException() throws 
Exception {
-            doThrow(new MailboxException()).when(mailboxManager).search(any(), 
any());
+            doThrow(new 
MailboxException()).when(mailboxManager).search(any(MailboxQuery.class), any());
 
             when()
                 .get()


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to