This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 106bba2e9e753b7d8954695fe12e20e4f7ef07b0
Author: Benoit Tellier <[email protected]>
AuthorDate: Tue Jun 23 17:24:42 2020 +0700

    JAMES-3266 Document ElasticSearch opt-in/opt-out
---
 .../java/org/apache/james/SearchModuleChooser.java | 11 ++------
 .../AuthenticatedCassandraJamesServerTest.java     | 21 ++------------
 .../org/apache/james/CassandraJamesServerTest.java |  7 +----
 .../apache/james/CassandraJmapJamesServerTest.java |  7 +----
 .../CassandraMailRepositoryIntegrationTest.java    |  7 +----
 .../CassandraMessageIdManagerInjectionTest.java    |  7 +----
 .../org/apache/james/CassandraNodeConfTest.java    |  7 +----
 .../org/apache/james/CassandraWithTikaTest.java    |  8 +-----
 .../james/DefaultCassandraJamesServerTest.java     |  7 +----
 .../test/java/org/apache/james/ESReporterTest.java |  7 +----
 .../apache/james/JamesCapabilitiesServerTest.java  |  7 +----
 .../james/JamesServerWithRetryConnectionTest.java  |  7 +----
 ...esWithNonCompatibleElasticSearchServerTest.java |  7 +----
 .../org/apache/james/KeyspaceCreationTest.java     | 28 +++----------------
 ...a => TestingDistributedJamesServerBuilder.java} | 32 ++++++++++------------
 .../apache/james/WithCassandraBlobStoreTest.java   |  7 +----
 .../apache/james/CassandraLdapJamesServerTest.java |  7 +----
 .../james/CassandraLdapJmapJamesServerTest.java    |  7 +----
 .../jmap/cassandra/CassandraImapErrorTest.java     | 10 ++-----
 .../jmap/cassandra/CassandraSendMDNMethodTest.java | 10 ++-----
 .../CassandraSpamAssassinContractTest.java         | 10 ++-----
 src/site/xdoc/server/config-elasticsearch.xml      | 10 +++++++
 22 files changed, 55 insertions(+), 176 deletions(-)

diff --git 
a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/SearchModuleChooser.java
 
b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/SearchModuleChooser.java
index b6713f3..a35b5d9 100644
--- 
a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/SearchModuleChooser.java
+++ 
b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/SearchModuleChooser.java
@@ -66,11 +66,6 @@ public class SearchModuleChooser {
 
     // Required for CLI
     private static class FakeMessageSearchIndex extends 
ListeningMessageSearchIndex {
-        private static class FakeMessageSearchIndexGroup extends Group {
-
-        }
-
-        private static final FakeMessageSearchIndexGroup GROUP = new 
FakeMessageSearchIndexGroup();
 
         public FakeMessageSearchIndex() {
             super(null, null);
@@ -82,7 +77,7 @@ public class SearchModuleChooser {
         }
 
         @Override
-        public Mono<Void> delete(MailboxSession session, Mailbox mailbox, 
Collection<MessageUid> expungedUids) {
+        public Mono<Void> delete(MailboxSession session, MailboxId mailboxId, 
Collection<MessageUid> expungedUids) {
             throw new NotImplementedException("not implemented");
         }
 
@@ -92,7 +87,7 @@ public class SearchModuleChooser {
         }
 
         @Override
-        public Mono<Void> update(MailboxSession session, Mailbox mailbox, 
List<UpdatedFlags> updatedFlagsList) {
+        public Mono<Void> update(MailboxSession session, MailboxId mailboxId, 
List<UpdatedFlags> updatedFlagsList) {
             throw new NotImplementedException("not implemented");
         }
 
@@ -103,7 +98,7 @@ public class SearchModuleChooser {
 
         @Override
         public Group getDefaultGroup() {
-            return GROUP;
+            throw new NotImplementedException("not implemented");
         }
 
         @Override
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/AuthenticatedCassandraJamesServerTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/AuthenticatedCassandraJamesServerTest.java
index 9a5fd68..58a6b35 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/AuthenticatedCassandraJamesServerTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/AuthenticatedCassandraJamesServerTest.java
@@ -43,12 +43,7 @@ class AuthenticatedCassandraJamesServerTest {
     @Nested
     class AuthenticationTest implements JamesServerContract {
         @RegisterExtension
-        JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-            CassandraJamesServerConfiguration.builder()
-                .workingDirectory(tmpDir)
-                .configurationFromClasspath()
-                .searchConfiguration(SearchConfiguration.elasticSearch())
-                .build())
+        JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(cassandraExtension)
             .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
@@ -64,12 +59,7 @@ class AuthenticatedCassandraJamesServerTest {
     @Nested
     class SslTest {
         @RegisterExtension
-        JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-            CassandraJamesServerConfiguration.builder()
-                .workingDirectory(tmpDir)
-                .configurationFromClasspath()
-                .searchConfiguration(SearchConfiguration.elasticSearch())
-                .build())
+        JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(cassandraExtension)
             .disableAutoStart()
@@ -94,12 +84,7 @@ class AuthenticatedCassandraJamesServerTest {
     @Nested
     class AuthenticationFailureTest {
         @RegisterExtension
-        JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-            CassandraJamesServerConfiguration.builder()
-                .workingDirectory(tmpDir)
-                .configurationFromClasspath()
-                .searchConfiguration(SearchConfiguration.elasticSearch())
-                .build())
+        JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(cassandraExtension)
             .disableAutoStart()
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
index cab7b20..699ca01 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
@@ -30,12 +30,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 class CassandraJamesServerTest implements JamesServerContract {
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapJamesServerTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapJamesServerTest.java
index 69fe6a7..97efb6b 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapJamesServerTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapJamesServerTest.java
@@ -27,12 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 class CassandraJmapJamesServerTest implements JmapJamesServerContract {
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMailRepositoryIntegrationTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMailRepositoryIntegrationTest.java
index 88f0c7b..77354ac 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMailRepositoryIntegrationTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMailRepositoryIntegrationTest.java
@@ -47,12 +47,7 @@ class CassandraMailRepositoryIntegrationTest {
     private SMTPMessageSender smtpMessageSender = new 
SMTPMessageSender("other.com");
 
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
index 49378ba..3ea1bd9 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
@@ -33,12 +33,7 @@ import com.google.inject.multibindings.Multibinder;
 
 class CassandraMessageIdManagerInjectionTest {
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
index b9bd416..738e50b 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
@@ -42,12 +42,7 @@ class CassandraNodeConfTest {
     private static final int CASSANDRA_PORT = 9042;
 
     private static JamesServerBuilder extensionBuilder() {
-        return new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-            CassandraJamesServerConfiguration.builder()
-                .workingDirectory(tmpDir)
-                .configurationFromClasspath()
-                .searchConfiguration(SearchConfiguration.elasticSearch())
-                .build())
+        return 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(new CassandraExtension())
             .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
index db503ed..31615a3 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
@@ -24,13 +24,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 class CassandraWithTikaTest implements JamesServerContract {
     @RegisterExtension
-    static JamesServerExtension testExtension =
-        new JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-            CassandraJamesServerConfiguration.builder()
-                .workingDirectory(tmpDir)
-                .configurationFromClasspath()
-                .searchConfiguration(SearchConfiguration.elasticSearch())
-                .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new CassandraExtension())
             .extension(new  TikaExtension())
             .extension(new DockerElasticSearchExtension())
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
index 7bca678..86b6de5 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
@@ -33,12 +33,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 class DefaultCassandraJamesServerTest {
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
index 50a1fd4..f3a12db 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
@@ -61,12 +61,7 @@ class ESReporterTest {
     static final DockerElasticSearchExtension elasticSearchExtension = new 
DockerElasticSearchExtension();
 
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(elasticSearchExtension)
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
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 12fd2a1..0a8f58d 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
@@ -36,12 +36,7 @@ class JamesCapabilitiesServerTest {
     private static final MailboxManager mailboxManager = 
mock(MailboxManager.class);
 
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
index 387c2fc..8afe525 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
@@ -46,12 +46,7 @@ class JamesServerWithRetryConnectionTest {
     private static final CassandraExtension dockerCassandra = new 
CassandraExtension();
 
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(dockerElasticSearch)
         .extension(dockerCassandra)
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesWithNonCompatibleElasticSearchServerTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesWithNonCompatibleElasticSearchServerTest.java
index e6021a2..8dded5f 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesWithNonCompatibleElasticSearchServerTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesWithNonCompatibleElasticSearchServerTest.java
@@ -37,12 +37,7 @@ class JamesWithNonCompatibleElasticSearchServerTest {
     static DockerElasticSearch dockerES2 = new 
DockerElasticSearch.NoAuth(Images.ELASTICSEARCH_2);
 
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension(dockerES2))
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/KeyspaceCreationTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/KeyspaceCreationTest.java
index 8adcc62..14e229e 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/KeyspaceCreationTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/KeyspaceCreationTest.java
@@ -33,12 +33,7 @@ class KeyspaceCreationTest {
     @Nested
     class CreateWhenKeyspaceExists {
         @RegisterExtension
-        JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+        JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(new CassandraExtension())
             .server(CassandraJamesServerMain::createServer)
@@ -59,12 +54,7 @@ class KeyspaceCreationTest {
     @Nested
     class CreateWhenDoesNotExistAndHasRights {
         @RegisterExtension
-        JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+        JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(new CassandraExtension())
             .server(CassandraJamesServerMain::createServer)
@@ -91,12 +81,7 @@ class KeyspaceCreationTest {
     @Nested
     class CreateWhenDoesNotExistAndDoNotHaveRights {
         @RegisterExtension
-        JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+        JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(new CassandraExtension())
             .server(CassandraJamesServerMain::createServer)
@@ -123,12 +108,7 @@ class KeyspaceCreationTest {
     @Nested
     class StartWhenKeyspaceDoesNotExist {
         @RegisterExtension
-        JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+        JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
             .extension(new DockerElasticSearchExtension())
             .extension(new CassandraExtension())
             .server(CassandraJamesServerMain::createServer)
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/TestingDistributedJamesServerBuilder.java
similarity index 58%
copy from 
server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
copy to 
server/container/guice/cassandra-guice/src/test/java/org/apache/james/TestingDistributedJamesServerBuilder.java
index db503ed..211ef78 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/TestingDistributedJamesServerBuilder.java
@@ -19,23 +19,21 @@
 
 package org.apache.james;
 
-import org.apache.james.modules.TestJMAPServerModule;
-import org.junit.jupiter.api.extension.RegisterExtension;
+public class TestingDistributedJamesServerBuilder {
+    @FunctionalInterface
+    interface ConfigurationSpecification {
+        CassandraJamesServerConfiguration.Builder 
customize(CassandraJamesServerConfiguration.Builder configuration);
+    }
 
-class CassandraWithTikaTest implements JamesServerContract {
-    @RegisterExtension
-    static JamesServerExtension testExtension =
-        new JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-            CassandraJamesServerConfiguration.builder()
+    public static JamesServerBuilder<CassandraJamesServerConfiguration> 
forConfiguration(ConfigurationSpecification configurationSpecification) {
+        return new JamesServerBuilder<>(tmpDir ->
+            
configurationSpecification.customize(CassandraJamesServerConfiguration.builder()
                 .workingDirectory(tmpDir)
-                .configurationFromClasspath()
-                .searchConfiguration(SearchConfiguration.elasticSearch())
-                .build())
-            .extension(new CassandraExtension())
-            .extension(new  TikaExtension())
-            .extension(new DockerElasticSearchExtension())
-            .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
-                .overrideWith(new TestJMAPServerModule())
-                .overrideWith(DOMAIN_LIST_CONFIGURATION_MODULE))
-            .build();
+                .configurationFromClasspath())
+                .build());
+    }
+
+    public static JamesServerBuilder<CassandraJamesServerConfiguration> 
withSearchConfiguration(SearchConfiguration searchConfiguration) {
+        return forConfiguration(configuration -> 
configuration.searchConfiguration(searchConfiguration));
+    }
 }
diff --git 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
index c86d4d8..d8f99b4 100644
--- 
a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
+++ 
b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
@@ -27,12 +27,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 class WithCassandraBlobStoreTest implements JmapJamesServerContract, 
MailsShouldBeWellReceived, JamesServerContract {
 
     @RegisterExtension
-    static JamesServerExtension jamesServerExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension jamesServerExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .extension(new SpamAssassinModuleExtension())
diff --git 
a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java
 
b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java
index 8c20b54..7d5e782 100644
--- 
a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java
+++ 
b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java
@@ -53,12 +53,7 @@ class CassandraLdapJamesServerTest implements 
JamesServerContract {
     SMTPMessageSender messageSender = new 
SMTPMessageSender(Domain.LOCALHOST.asString());
 
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .extension(new LdapTestExtension())
diff --git 
a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapJamesServerTest.java
 
b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapJamesServerTest.java
index ccf7097..7c537b0 100644
--- 
a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapJamesServerTest.java
+++ 
b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapJamesServerTest.java
@@ -25,12 +25,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 class CassandraLdapJmapJamesServerTest implements JmapJamesServerContract {
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .extension(new LdapTestExtension())
diff --git 
a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
 
b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
index e4261ab..7a5119e 100644
--- 
a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraImapErrorTest.java
@@ -26,13 +26,12 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.commons.net.imap.IMAPClient;
 import org.apache.james.CassandraExtension;
-import org.apache.james.CassandraJamesServerConfiguration;
 import org.apache.james.CassandraJamesServerMain;
 import org.apache.james.DockerElasticSearchExtension;
 import org.apache.james.GuiceJamesServer;
-import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.SearchConfiguration;
+import org.apache.james.TestingDistributedJamesServerBuilder;
 import org.apache.james.jmap.draft.JmapGuiceProbe;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
@@ -49,12 +48,7 @@ class CassandraImapErrorTest {
     private final CassandraExtension cassandraExtension = new 
CassandraExtension();
 
     @RegisterExtension
-    JamesServerExtension serverExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    JamesServerExtension serverExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(cassandraExtension)
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java
 
b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java
index 1a171d3..54bd376 100644
--- 
a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSendMDNMethodTest.java
@@ -20,12 +20,11 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraExtension;
-import org.apache.james.CassandraJamesServerConfiguration;
 import org.apache.james.CassandraJamesServerMain;
 import org.apache.james.DockerElasticSearchExtension;
-import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.SearchConfiguration;
+import org.apache.james.TestingDistributedJamesServerBuilder;
 import org.apache.james.jmap.draft.methods.integration.SendMDNMethodTest;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.model.MessageId;
@@ -35,12 +34,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 public class CassandraSendMDNMethodTest extends SendMDNMethodTest {
 
     @RegisterExtension
-    JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .server(configuration -> 
CassandraJamesServerMain.createServer(configuration)
diff --git 
a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSpamAssassinContractTest.java
 
b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSpamAssassinContractTest.java
index c06f44b..5ad8098 100644
--- 
a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSpamAssassinContractTest.java
+++ 
b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSpamAssassinContractTest.java
@@ -19,12 +19,11 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraExtension;
-import org.apache.james.CassandraJamesServerConfiguration;
 import org.apache.james.CassandraJamesServerMain;
 import org.apache.james.DockerElasticSearchExtension;
-import org.apache.james.JamesServerBuilder;
 import org.apache.james.JamesServerExtension;
 import org.apache.james.SearchConfiguration;
+import org.apache.james.TestingDistributedJamesServerBuilder;
 import org.apache.james.jmap.draft.methods.integration.SpamAssassinContract;
 import 
org.apache.james.jmap.draft.methods.integration.SpamAssassinModuleExtension;
 import org.apache.james.modules.TestJMAPServerModule;
@@ -35,12 +34,7 @@ class CassandraSpamAssassinContractTest implements 
SpamAssassinContract {
     private static final SpamAssassinModuleExtension spamAssassinExtension = 
new SpamAssassinModuleExtension();
 
     @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerBuilder<CassandraJamesServerConfiguration>(tmpDir ->
-        CassandraJamesServerConfiguration.builder()
-            .workingDirectory(tmpDir)
-            .configurationFromClasspath()
-            .searchConfiguration(SearchConfiguration.elasticSearch())
-            .build())
+    static JamesServerExtension testExtension = 
TestingDistributedJamesServerBuilder.withSearchConfiguration(SearchConfiguration.elasticSearch())
         .extension(new DockerElasticSearchExtension())
         .extension(new CassandraExtension())
         .extension(spamAssassinExtension)
diff --git a/src/site/xdoc/server/config-elasticsearch.xml 
b/src/site/xdoc/server/config-elasticsearch.xml
index 3a6f54e..866f887 100644
--- a/src/site/xdoc/server/config-elasticsearch.xml
+++ b/src/site/xdoc/server/config-elasticsearch.xml
@@ -115,6 +115,16 @@
           <dd>Specify the ElasticSearch alias name used for writing quotas</dd>
       </dl>
 
+      <p>
+          ElasticSearch component can be disabled but consider it would make 
search feature to not work. In particular it will break JMAP protocol and 
SEARCH IMAP comment in an nondeterministic way.
+          This is controlled via the <code>enabled</code> property (boolean, 
defaults
+          to true). Setting this configuration parameter to <code>false</code> 
will effectively disable ElasticSearch, no
+          further indexation will be done however searches will rely on the 
scrolling search, leading to expensive and longer
+          searches. Disabling ElasticSearch requires no extra action, however
+          <a 
href="https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#reindexing-all-mails";>
+              a full re-indexing</a> needs to be carried out when enabling 
ElasticSearch.
+      </p>
+
       For configuring the metric reporting on ElasticSearch :
 
       <dl>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to