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