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 ma...@apache.org on 2016/07/26 07:46:42 UTC

[03/17] james-project git commit: JAMES-1804 Add Text capability to MessageSearchIndex

JAMES-1804 Add Text capability to MessageSearchIndex


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

Branch: refs/heads/master
Commit: 9470ccf8331717fee2b9d92fd8fc5cd39d7a25c9
Parents: 62f6ad9
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Jul 20 12:06:54 2016 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Jul 26 08:57:04 2016 +0200

----------------------------------------------------------------------
 .../apache/james/mailbox/MailboxManager.java    |  8 +++++-
 ...lasticSearchListeningMessageSearchIndex.java |  4 +--
 .../lucene/search/LuceneMessageSearchIndex.java |  1 +
 .../store/search/MessageSearchIndex.java        |  2 +-
 .../store/search/SimpleMessageSearchIndex.java  |  2 +-
 .../james/JamesCapabilitiesServerTest.java      | 27 ++++++++++++++++++--
 .../java/org/apache/james/jmap/JMAPModule.java  |  8 +++++-
 7 files changed, 44 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9470ccf8/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 8cc0ea6..926074b 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
@@ -90,7 +90,13 @@ public interface MailboxManager extends RequestAware, MailboxListenerSupport {
     EnumSet<MessageCapabilities> getSupportedMessageCapabilities();
 
     enum SearchCapabilities {
-        MultimailboxSearch
+        MultimailboxSearch,
+        /**
+         *  The implementation supporting this capability should
+         *  provide an index on the fields: 
+         *  From, To, Cc, Bcc, Subjects, textBody & htmlBody
+         */
+        Text
     }
     
     EnumSet<SearchCapabilities> getSupportedSearchCapabilities();

http://git-wip-us.apache.org/repos/asf/james-project/blob/9470ccf8/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
index 957826d..47823db 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
@@ -55,7 +55,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
 
     private final static Logger LOGGER = LoggerFactory.getLogger(ElasticSearchListeningMessageSearchIndex.class);
     private final static String ID_SEPARATOR = ":";
-    
+
     private final ElasticSearchIndexer indexer;
     private final ElasticSearchSearcher searcher;
     private final MessageToElasticSearchJson messageToElasticSearchJson;
@@ -76,7 +76,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
 
     @Override
     public EnumSet<SearchCapabilities> getSupportedCapabilities() {
-        return EnumSet.of(SearchCapabilities.MultimailboxSearch);
+        return EnumSet.of(SearchCapabilities.MultimailboxSearch, SearchCapabilities.Text);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/9470ccf8/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
index b998dfa..bc48605 100644
--- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
+++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
@@ -1383,6 +1383,7 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
             throw new MailboxException("Unable to delete message from index", e);
         }
     }
+
     
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9470ccf8/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
index 3dcfcca..b81607d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
@@ -40,7 +40,7 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
  * 
  */
 public interface MessageSearchIndex {
-    
+
     /**
      * Return all uids of the previous indexed {@link Mailbox}'s which match the {@link SearchQuery}
      */

http://git-wip-us.apache.org/repos/asf/james-project/blob/9470ccf8/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
index 7dccf41..db16fd7 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java
@@ -76,7 +76,7 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex {
     
     @Override
     public EnumSet<SearchCapabilities> getSupportedCapabilities() {
-        return EnumSet.of(SearchCapabilities.MultimailboxSearch);
+        return EnumSet.of(SearchCapabilities.MultimailboxSearch, SearchCapabilities.Text);
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/9470ccf8/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
index 3eeeff8..e866369 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
@@ -90,6 +90,9 @@ public class JamesCapabilitiesServerTest {
             .thenReturn(EnumSet.complementOf(EnumSet.of(MailboxManager.MailboxCapabilities.Move)));
         when(mailboxManager.getSupportedMessageCapabilities())
             .thenReturn(EnumSet.of(MailboxManager.MessageCapabilities.Attachment));
+        when(mailboxManager.getSupportedSearchCapabilities())
+            .thenReturn(EnumSet.of(MailboxManager.SearchCapabilities.MultimailboxSearch, MailboxManager.SearchCapabilities.Text));
+
         server = createCassandraJamesServer(mailboxManager);
         
         assertThatThrownBy(() -> server.start()).isInstanceOf(IllegalArgumentException.class);
@@ -102,6 +105,24 @@ public class JamesCapabilitiesServerTest {
             .thenReturn(EnumSet.allOf(MailboxManager.MailboxCapabilities.class));
         when(mailboxManager.getSupportedMessageCapabilities())
             .thenReturn(EnumSet.noneOf(MailboxManager.MessageCapabilities.class));
+        when(mailboxManager.getSupportedSearchCapabilities())
+            .thenReturn(EnumSet.of(MailboxManager.SearchCapabilities.MultimailboxSearch, MailboxManager.SearchCapabilities.Text));
+
+        server = createCassandraJamesServer(mailboxManager);
+
+        assertThatThrownBy(() -> server.start()).isInstanceOf(IllegalArgumentException.class);
+    }
+    
+    @Test
+    public void startShouldFailWhenNoTextCapability() throws Exception {
+        MailboxManager mailboxManager = mock(MailboxManager.class);
+        when(mailboxManager.getSupportedMailboxCapabilities())
+            .thenReturn(EnumSet.allOf(MailboxManager.MailboxCapabilities.class));
+        when(mailboxManager.getSupportedMessageCapabilities())
+            .thenReturn(EnumSet.allOf(MailboxManager.MessageCapabilities.class));
+        when(mailboxManager.getSupportedSearchCapabilities())
+            .thenReturn(EnumSet.of(MailboxManager.SearchCapabilities.MultimailboxSearch));
+
         server = createCassandraJamesServer(mailboxManager);
 
         assertThatThrownBy(() -> server.start()).isInstanceOf(IllegalArgumentException.class);
@@ -115,7 +136,8 @@ public class JamesCapabilitiesServerTest {
         when(mailboxManager.getSupportedMessageCapabilities())
             .thenReturn(EnumSet.allOf(MailboxManager.MessageCapabilities.class));
         when(mailboxManager.getSupportedSearchCapabilities())
-            .thenReturn(EnumSet.noneOf(MailboxManager.SearchCapabilities.class));
+            .thenReturn(EnumSet.of(MailboxManager.SearchCapabilities.Text));
+
         server = createCassandraJamesServer(mailboxManager);
 
         assertThatThrownBy(() -> server.start()).isInstanceOf(IllegalArgumentException.class);
@@ -128,7 +150,8 @@ public class JamesCapabilitiesServerTest {
         when(mailboxManager.getSupportedMessageCapabilities())
             .thenReturn(EnumSet.of(MailboxManager.MessageCapabilities.Attachment));
         when(mailboxManager.getSupportedSearchCapabilities())
-            .thenReturn(EnumSet.of(MailboxManager.SearchCapabilities.MultimailboxSearch));
+            .thenReturn(EnumSet.of(MailboxManager.SearchCapabilities.MultimailboxSearch, MailboxManager.SearchCapabilities.Text));
+
         server = createCassandraJamesServer(mailboxManager);
 
         server.start();

http://git-wip-us.apache.org/repos/asf/james-project/blob/9470ccf8/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
index 93bb11c..286cead 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/jmap/JMAPModule.java
@@ -19,6 +19,7 @@
 package org.apache.james.jmap;
 
 import java.io.IOException;
+import java.util.EnumSet;
 import java.util.List;
 import java.util.Optional;
 
@@ -34,6 +35,7 @@ import org.apache.james.jmap.utils.SystemMailboxesProvider;
 import org.apache.james.jmap.utils.SystemMailboxesProviderImpl;
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManager.SearchCapabilities;
 import org.apache.james.mailetcontainer.impl.MatcherMailetPair;
 import org.apache.james.modules.server.CamelMailetContainerModule;
 import org.apache.james.transport.mailets.RemoveMimeHeader;
@@ -106,8 +108,12 @@ public class JMAPModule extends AbstractModule {
                     "MOVE support in MailboxManager is required by JMAP Module");
             Preconditions.checkArgument(mailboxManager.getSupportedMessageCapabilities().contains(MailboxManager.MessageCapabilities.Attachment),
                     "Attachment support in MailboxManager is required by JMAP Module");
-            Preconditions.checkArgument(mailboxManager.getSupportedSearchCapabilities().contains(MailboxManager.SearchCapabilities.MultimailboxSearch),
+
+            EnumSet<SearchCapabilities> searchCapabilities = mailboxManager.getSupportedSearchCapabilities();
+            Preconditions.checkArgument(searchCapabilities.contains(MailboxManager.SearchCapabilities.MultimailboxSearch),
                     "Multimailbox search in MailboxManager is required by JMAP Module");
+            Preconditions.checkArgument(searchCapabilities.contains(MailboxManager.SearchCapabilities.Text),
+                    "Text support in MailboxManager is required by JMAP Module");
         }
 
         @Override


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