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 ad...@apache.org on 2018/10/31 16:57:08 UTC
[1/7] james-project git commit: JAMES-2551 Add a simple test
demonstrating RabbitMQ mail queue works
Repository: james-project
Updated Branches:
refs/heads/master 7273a4a2d -> 096c6c763
JAMES-2551 Add a simple test demonstrating RabbitMQ mail queue works
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/096c6c76
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/096c6c76
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/096c6c76
Branch: refs/heads/master
Commit: 096c6c7630fe13eb01aec1c8ef755827184dc986
Parents: fed8134
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Oct 31 09:35:54 2018 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100
----------------------------------------------------------------------
.../james/CassandraRabbitMQJamesServerTest.java | 44 +++++++++++++++++++-
.../src/test/resources/mailetcontainer.xml | 7 ----
2 files changed, 43 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/096c6c76/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
index 33f8cc1..00de859 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
@@ -19,13 +19,39 @@
package org.apache.james;
+import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
+
+import org.apache.james.core.Domain;
import org.apache.james.modules.RabbitMQExtension;
import org.apache.james.modules.TestJMAPServerModule;
+import org.apache.james.modules.protocols.ImapGuiceProbe;
+import org.apache.james.modules.protocols.SmtpGuiceProbe;
+import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
+import org.apache.james.utils.SpoolerProbe;
+import org.awaitility.Awaitility;
+import org.awaitility.Duration;
+import org.awaitility.core.ConditionFactory;
+import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
-public class CassandraRabbitMQJamesServerTest implements JmapJamesServerContract {
+class CassandraRabbitMQJamesServerTest implements JmapJamesServerContract {
+ private static final String DOMAIN = "domain";
+ private static final String JAMES_USER = "james-user@" + DOMAIN;
+ private static final String PASSWORD = "secret";
+ private static Duration slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS;
+ private static ConditionFactory calmlyAwait = Awaitility.with()
+ .pollInterval(slowPacedPollInterval)
+ .and()
+ .with()
+ .pollDelay(slowPacedPollInterval)
+ .await();
private static final int LIMIT_TO_10_MESSAGES = 10;
+ private IMAPMessageReader imapMessageReader = new IMAPMessageReader();
+ private SMTPMessageSender messageSender = new SMTPMessageSender(Domain.LOCALHOST.asString());
+
@RegisterExtension
static JamesServerExtension testExtension = new JamesServerExtensionBuilder()
.extension(new EmbeddedElasticSearchExtension())
@@ -37,4 +63,20 @@ public class CassandraRabbitMQJamesServerTest implements JmapJamesServerContract
.overrideWith(DOMAIN_LIST_CONFIGURATION_MODULE))
.build();
+ @Test
+ void mailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
+ server.getProbe(DataProbeImpl.class).fluent()
+ .addDomain(DOMAIN)
+ .addUser(JAMES_USER, PASSWORD);
+
+ messageSender.connect(JAMES_SERVER_HOST, server.getProbe(SmtpGuiceProbe.class).getSmtpPort())
+ .sendMessage("bob@any.com", JAMES_USER);
+
+ calmlyAwait.until(() -> server.getProbe(SpoolerProbe.class).processingFinished());
+
+ imapMessageReader.connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
+ .login(JAMES_USER, PASSWORD)
+ .select(IMAPMessageReader.INBOX)
+ .awaitMessage(calmlyAwait);
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/096c6c76/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml
index 412e6e9..d75ebb1 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml
@@ -67,13 +67,6 @@
<errorProcessor>rrt-error</errorProcessor>
</mailet>
<mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/>
- <mailet match="RecipientIsLocal" class="SpamAssassin">
- <spamdHost>localhost</spamdHost>
- <spamdPort>783</spamdPort>
- </mailet>
- <mailet match="IsMarkedAsSpam" class="WithStorageDirective">
- <targetFolderName>Spam</targetFolderName>
- </mailet>
<mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.filter.JMAPFiltering"/>
<mailet match="RecipientIsLocal" class="LocalDelivery"/>
<mailet match="HostIsLocal" class="ToProcessor">
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[5/7] james-project git commit: JAMES-2551 Fix RabbitMQ binding
Posted by ad...@apache.org.
JAMES-2551 Fix RabbitMQ binding
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/937de069
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/937de069
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/937de069
Branch: refs/heads/master
Commit: 937de069a275dfaa54ea576e83dd5e0845c0152b
Parents: f88cb4b
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Oct 3 15:06:46 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100
----------------------------------------------------------------------
server/container/guice/rabbitmq/pom.xml | 8 +++
.../james/modules/rabbitmq/RabbitMQModule.java | 55 ++++++++++++++++++++
2 files changed, 63 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/937de069/server/container/guice/rabbitmq/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/rabbitmq/pom.xml b/server/container/guice/rabbitmq/pom.xml
index 25a8e64..b5fd4ae 100644
--- a/server/container/guice/rabbitmq/pom.xml
+++ b/server/container/guice/rabbitmq/pom.xml
@@ -41,6 +41,14 @@
<artifactId>james-server-guice-configuration</artifactId>
</dependency>
<dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-queue-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-queue-rabbitmq</artifactId>
+ </dependency>
+ <dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/937de069/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
index 283fdfc..15f9c42 100644
--- a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
+++ b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
@@ -19,18 +19,39 @@
package org.apache.james.modules.rabbitmq;
import java.io.FileNotFoundException;
+import java.time.Clock;
+import java.time.Duration;
+import java.util.concurrent.ThreadLocalRandom;
import javax.inject.Singleton;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
+import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.queue.rabbitmq.RabbitMQMailQueueFactory;
+import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
+import org.apache.james.queue.rabbitmq.view.cassandra.BrowseStartDAO;
+import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueBrowser;
+import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueMailDelete;
+import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueMailStore;
+import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueView;
+import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewModule;
+import org.apache.james.queue.rabbitmq.view.cassandra.DeletedMailsDAO;
+import org.apache.james.queue.rabbitmq.view.cassandra.EnqueuedMailsDAO;
+import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfiguration;
+import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfigurationModule;
+import org.apache.james.queue.rabbitmq.view.cassandra.configuration.EventsourcingConfigurationManagement;
import org.apache.james.utils.PropertiesProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
+import com.google.inject.Scopes;
+import com.google.inject.multibindings.Multibinder;
public class RabbitMQModule extends AbstractModule {
@@ -40,6 +61,40 @@ public class RabbitMQModule extends AbstractModule {
@Override
protected void configure() {
+ bind(Clock.class).toInstance(Clock.systemUTC());
+ bind(ThreadLocalRandom.class).toInstance(ThreadLocalRandom.current());
+ bind(CassandraMailQueueViewConfiguration.class).toInstance(CassandraMailQueueViewConfiguration
+ .builder()
+ .bucketCount(1)
+ .updateBrowseStartPace(1000)
+ .sliceWindow(Duration.ofHours(1))
+ .build());
+
+ bind(EnqueuedMailsDAO.class).in(Scopes.SINGLETON);
+ bind(DeletedMailsDAO.class).in(Scopes.SINGLETON);
+ bind(BrowseStartDAO.class).in(Scopes.SINGLETON);
+ bind(CassandraMailQueueBrowser.class).in(Scopes.SINGLETON);
+ bind(CassandraMailQueueMailDelete.class).in(Scopes.SINGLETON);
+ bind(CassandraMailQueueMailStore.class).in(Scopes.SINGLETON);
+
+ Multibinder<CassandraModule> cassandraModuleBinder = Multibinder.newSetBinder(binder(), CassandraModule.class);
+ cassandraModuleBinder.addBinding().toInstance(CassandraMailQueueViewModule.MODULE);
+
+ bind(EventsourcingConfigurationManagement.class).in(Scopes.SINGLETON);
+ Multibinder<EventDTOModule> eventDTOModuleBinder = Multibinder.newSetBinder(binder(), EventDTOModule.class);
+ eventDTOModuleBinder.addBinding().toInstance(CassandraMailQueueViewConfigurationModule.MAIL_QUEUE_VIEW_CONFIGURATION);
+ }
+
+ @Provides
+ @Singleton
+ public MailQueueView.Factory bindMailQueueViewFactory(CassandraMailQueueView.Factory cassandraMailQueueViewFactory) {
+ return cassandraMailQueueViewFactory;
+ }
+
+ @Provides
+ @Singleton
+ public MailQueueFactory<?> bindRabbitMQQueueFactory(RabbitMQMailQueueFactory queueFactory) {
+ return queueFactory;
}
@Provides
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[3/7] james-project git commit: JAMES-2551 Fix RabbitMQ injection
Posted by ad...@apache.org.
JAMES-2551 Fix RabbitMQ injection
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f88cb4bc
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f88cb4bc
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f88cb4bc
Branch: refs/heads/master
Commit: f88cb4bc14f54c537b54a3726d87892ac41e467b
Parents: 51922f0
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Oct 3 15:05:42 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100
----------------------------------------------------------------------
.../james/queue/rabbitmq/RabbitClient.java | 3 +++
.../queue/rabbitmq/RabbitMQMailQueueFactory.java | 12 +++++++-----
.../queue/rabbitmq/RabbitMQManagementApi.java | 3 +++
.../queue/rabbitmq/view/api/MailQueueView.java | 4 ++++
.../rabbitmq/view/cassandra/BrowseStartDAO.java | 2 +-
.../cassandra/CassandraMailQueueBrowser.java | 7 ++++---
.../cassandra/CassandraMailQueueMailDelete.java | 2 +-
.../cassandra/CassandraMailQueueMailStore.java | 2 +-
.../view/cassandra/CassandraMailQueueView.java | 3 ++-
.../cassandra/CassandraMailQueueViewModule.java | 2 +-
.../rabbitmq/view/cassandra/DeletedMailsDAO.java | 2 +-
.../view/cassandra/EnqueuedMailsDAO.java | 2 +-
...RabbitMQMailQueueConfigurationChangeTest.java | 18 ++++++++++--------
.../queue/rabbitmq/RabbitMQMailQueueTest.java | 19 +++++--------------
.../rabbitmq/RabbitMqMailQueueFactoryTest.java | 17 +++++++++--------
.../CassandraMailQueueViewTestFactory.java | 5 +++--
16 files changed, 56 insertions(+), 47 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
index 9263b1f..1a12ac2 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitClient.java
@@ -22,6 +22,8 @@ package org.apache.james.queue.rabbitmq;
import java.io.IOException;
import java.util.Optional;
+import javax.inject.Inject;
+
import org.apache.james.backend.rabbitmq.RabbitMQChannelPool;
import org.apache.james.queue.api.MailQueue;
@@ -42,6 +44,7 @@ class RabbitClient {
private final RabbitMQChannelPool channelPool;
+ @Inject
RabbitClient(RabbitMQChannelPool channelPool) {
this.channelPool = channelPool;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
index 5d12302..b195ffe 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java
@@ -33,6 +33,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.james.blob.api.BlobId;
import org.apache.james.blob.api.Store;
import org.apache.james.blob.mail.MimeMessagePartsId;
+import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.metrics.api.GaugeRegistry;
import org.apache.james.metrics.api.MetricFactory;
import org.apache.james.queue.api.MailQueueFactory;
@@ -52,28 +53,29 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu
private final Store<MimeMessage, MimeMessagePartsId> mimeMessageStore;
private final MailReferenceSerializer mailReferenceSerializer;
private final Function<MailReferenceDTO, Mail> mailLoader;
- private final MailQueueView mailQueueView;
+ private final MailQueueView.Factory mailQueueViewFactory;
private final Clock clock;
@Inject
@VisibleForTesting PrivateFactory(MetricFactory metricFactory,
GaugeRegistry gaugeRegistry,
RabbitClient rabbitClient,
- Store<MimeMessage, MimeMessagePartsId> mimeMessageStore,
+ MimeMessageStore.Factory mimeMessageStoreFactory,
BlobId.Factory blobIdFactory,
- MailQueueView mailQueueView,
+ MailQueueView.Factory mailQueueViewFactory,
Clock clock) {
this.metricFactory = metricFactory;
this.gaugeRegistry = gaugeRegistry;
this.rabbitClient = rabbitClient;
- this.mimeMessageStore = mimeMessageStore;
- this.mailQueueView = mailQueueView;
+ this.mimeMessageStore = mimeMessageStoreFactory.mimeMessageStore();
+ this.mailQueueViewFactory = mailQueueViewFactory;
this.clock = clock;
this.mailReferenceSerializer = new MailReferenceSerializer();
this.mailLoader = Throwing.function(new MailLoader(mimeMessageStore, blobIdFactory)::load).sneakyThrow();
}
RabbitMQMailQueue create(MailQueueName mailQueueName) {
+ MailQueueView mailQueueView = mailQueueViewFactory.create(mailQueueName);
mailQueueView.initialize(mailQueueName);
RabbitMQMailQueue rabbitMQMailQueue = new RabbitMQMailQueue(
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
index cbeea3a..ac3269c 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
@@ -23,6 +23,8 @@ import java.util.Date;
import java.util.List;
import java.util.stream.Stream;
+import javax.inject.Inject;
+
import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
import org.apache.james.util.OptionalUtils;
@@ -61,6 +63,7 @@ class RabbitMQManagementApi {
private final Api api;
+ @Inject
RabbitMQManagementApi(RabbitMQConfiguration configuration) {
RabbitMQConfiguration.ManagementCredentials credentials = configuration.getManagementCredentials();
api = Feign.builder()
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/api/MailQueueView.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/api/MailQueueView.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/api/MailQueueView.java
index 0b38913..a291d61 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/api/MailQueueView.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/api/MailQueueView.java
@@ -28,6 +28,10 @@ import org.apache.mailet.Mail;
public interface MailQueueView {
+ interface Factory {
+ MailQueueView create(MailQueueName mailQueueName);
+ }
+
void initialize(MailQueueName mailQueueName);
CompletableFuture<Void> storeMail(EnqueuedItem enqueuedItem);
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/BrowseStartDAO.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/BrowseStartDAO.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/BrowseStartDAO.java
index 098c033..4425c46 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/BrowseStartDAO.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/BrowseStartDAO.java
@@ -44,7 +44,7 @@ import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.google.common.annotations.VisibleForTesting;
-class BrowseStartDAO {
+public class BrowseStartDAO {
private final CassandraAsyncExecutor executor;
private final PreparedStatement selectOne;
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java
index 7ef0753..a5a9bb9 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueBrowser.java
@@ -38,6 +38,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.james.blob.api.Store;
import org.apache.james.blob.mail.MimeMessagePartsId;
+import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.queue.api.ManageableMailQueue;
import org.apache.james.queue.rabbitmq.EnqueuedItem;
import org.apache.james.queue.rabbitmq.MailQueueName;
@@ -50,7 +51,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
-class CassandraMailQueueBrowser {
+public class CassandraMailQueueBrowser {
static class CassandraMailQueueIterator implements ManageableMailQueue.MailQueueIterator {
@@ -89,13 +90,13 @@ class CassandraMailQueueBrowser {
CassandraMailQueueBrowser(BrowseStartDAO browseStartDao,
DeletedMailsDAO deletedMailsDao,
EnqueuedMailsDAO enqueuedMailsDao,
- Store<MimeMessage, MimeMessagePartsId> mimeMessageStore,
+ MimeMessageStore.Factory mimeMessageStoreFactory,
CassandraMailQueueViewConfiguration configuration,
Clock clock) {
this.browseStartDao = browseStartDao;
this.deletedMailsDao = deletedMailsDao;
this.enqueuedMailsDao = enqueuedMailsDao;
- this.mimeMessageStore = mimeMessageStore;
+ this.mimeMessageStore = mimeMessageStoreFactory.mimeMessageStore();
this.configuration = configuration;
this.clock = clock;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailDelete.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailDelete.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailDelete.java
index f4d641c..4a9ee83 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailDelete.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailDelete.java
@@ -32,7 +32,7 @@ import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMai
import org.apache.james.queue.rabbitmq.view.cassandra.model.MailKey;
import org.apache.mailet.Mail;
-class CassandraMailQueueMailDelete {
+public class CassandraMailQueueMailDelete {
private final DeletedMailsDAO deletedMailsDao;
private final BrowseStartDAO browseStartDao;
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailStore.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailStore.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailStore.java
index 4fc2d02..550ac16 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailStore.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueMailStore.java
@@ -32,7 +32,7 @@ import org.apache.james.queue.rabbitmq.view.cassandra.model.BucketedSlices.Bucke
import org.apache.james.queue.rabbitmq.view.cassandra.model.EnqueuedItemWithSlicingContext;
import org.apache.mailet.Mail;
-class CassandraMailQueueMailStore {
+public class CassandraMailQueueMailStore {
private final EnqueuedMailsDAO enqueuedMailsDao;
private final BrowseStartDAO browseStartDao;
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueView.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueView.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueView.java
index db77356..5f9b8f5 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueView.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueView.java
@@ -37,7 +37,7 @@ import org.apache.mailet.Mail;
public class CassandraMailQueueView implements MailQueueView {
- public static class Factory {
+ public static class Factory implements MailQueueView.Factory {
private final CassandraMailQueueMailStore storeHelper;
private final CassandraMailQueueBrowser cassandraMailQueueBrowser;
private final CassandraMailQueueMailDelete cassandraMailQueueMailDelete;
@@ -55,6 +55,7 @@ public class CassandraMailQueueView implements MailQueueView {
eventsourcingConfigurationManagement.registerConfiguration(configuration);
}
+ @Override
public MailQueueView create(MailQueueName mailQueueName) {
return new CassandraMailQueueView(storeHelper, mailQueueName, cassandraMailQueueBrowser, cassandraMailQueueMailDelete);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewModule.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewModule.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewModule.java
index 6460eb4..9068f61 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewModule.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewModule.java
@@ -52,7 +52,7 @@ public interface CassandraMailQueueViewModule {
String LAST_UPDATED = "lastUpdated";
String PER_RECIPIENT_SPECIFIC_HEADERS = "perRecipientSpecificHeaders";
- String HEADER_TYPE = "header";
+ String HEADER_TYPE = "enqueuedMailHeaders";
String HEADER_NAME = "headerName";
String HEADER_VALUE = "headerValue";
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/DeletedMailsDAO.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/DeletedMailsDAO.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/DeletedMailsDAO.java
index 36ee5f4..c5feefc 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/DeletedMailsDAO.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/DeletedMailsDAO.java
@@ -38,7 +38,7 @@ import org.apache.james.queue.rabbitmq.view.cassandra.model.MailKey;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
-class DeletedMailsDAO {
+public class DeletedMailsDAO {
private final CassandraAsyncExecutor executor;
private final PreparedStatement selectOne;
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java
index aada3b9..fef9ba1 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/view/cassandra/EnqueuedMailsDAO.java
@@ -65,7 +65,7 @@ import org.apache.mailet.Mail;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.Session;
-class EnqueuedMailsDAO {
+public class EnqueuedMailsDAO {
private final CassandraAsyncExecutor executor;
private final PreparedStatement selectFrom;
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
index 5645bef..638152d 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java
@@ -52,7 +52,7 @@ import org.apache.james.metrics.api.NoopGaugeRegistry;
import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.queue.api.MailQueue;
import org.apache.james.queue.api.ManageableMailQueue;
-import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
+import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueView;
import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewModule;
import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewTestFactory;
import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfiguration;
@@ -92,12 +92,12 @@ class RabbitMQMailQueueConfigurationChangeTest {
private RabbitMQManagementApi mqManagementApi;
private RabbitClient rabbitClient;
private ThreadLocalRandom random;
- private Store<MimeMessage, MimeMessagePartsId> mimeMessageStore;
+ private MimeMessageStore.Factory mimeMessageStoreFactory;
@BeforeEach
void setup(CassandraCluster cassandra) throws Exception {
CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION, BLOB_ID_FACTORY);
- mimeMessageStore = MimeMessageStore.factory(blobsDAO).mimeMessageStore();
+ mimeMessageStoreFactory = MimeMessageStore.factory(blobsDAO);
clock = new UpdatableTickingClock(IN_SLICE_1);
random = ThreadLocalRandom.current();
@@ -111,17 +111,19 @@ class RabbitMQMailQueueConfigurationChangeTest {
}
private RabbitMQMailQueue getRabbitMQMailQueue(CassandraCluster cassandra, CassandraMailQueueViewConfiguration mailQueueViewConfiguration) throws Exception {
- MailQueueView mailQueueView = CassandraMailQueueViewTestFactory.factory(clock, random, cassandra.getConf(), cassandra.getTypesProvider(),
- mailQueueViewConfiguration, mimeMessageStore)
- .create(MailQueueName.fromString(SPOOL));
+ CassandraMailQueueView.Factory mailQueueViewFactory = CassandraMailQueueViewTestFactory.factory(clock, random,
+ cassandra.getConf(),
+ cassandra.getTypesProvider(),
+ mailQueueViewConfiguration,
+ mimeMessageStoreFactory);
RabbitMQMailQueueFactory.PrivateFactory privateFactory = new RabbitMQMailQueueFactory.PrivateFactory(
new NoopMetricFactory(),
new NoopGaugeRegistry(),
rabbitClient,
- mimeMessageStore,
+ mimeMessageStoreFactory,
BLOB_ID_FACTORY,
- mailQueueView,
+ mailQueueViewFactory,
clock);
RabbitMQMailQueueFactory mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, privateFactory);
return mailQueueFactory.createQueue(SPOOL);
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
index 909e787..0b14270 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java
@@ -31,8 +31,6 @@ import java.util.function.Function;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import javax.mail.internet.MimeMessage;
-
import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
import org.apache.james.backend.rabbitmq.RabbitMQExtension;
@@ -41,10 +39,8 @@ import org.apache.james.backends.cassandra.CassandraClusterExtension;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration;
import org.apache.james.blob.api.HashBlobId;
-import org.apache.james.blob.api.Store;
import org.apache.james.blob.cassandra.CassandraBlobModule;
import org.apache.james.blob.cassandra.CassandraBlobsDAO;
-import org.apache.james.blob.mail.MimeMessagePartsId;
import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStoreModule;
import org.apache.james.queue.api.MailQueue;
@@ -98,22 +94,17 @@ public class RabbitMQMailQueueTest implements ManageableMailQueueContract, MailQ
@BeforeEach
void setup(DockerRabbitMQ rabbitMQ, CassandraCluster cassandra, MailQueueMetricExtension.MailQueueMetricTestSystem metricTestSystem) throws Exception {
CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf(), CassandraConfiguration.DEFAULT_CONFIGURATION, BLOB_ID_FACTORY);
- Store<MimeMessage, MimeMessagePartsId> mimeMessageStore = MimeMessageStore.factory(blobsDAO).mimeMessageStore();
+ MimeMessageStore.Factory mimeMessageStoreFactory = MimeMessageStore.factory(blobsDAO);
clock = new UpdatableTickingClock(IN_SLICE_1);
ThreadLocalRandom random = ThreadLocalRandom.current();
- MailQueueView mailQueueView = CassandraMailQueueViewTestFactory.factory(
- clock,
- random,
- cassandra.getConf(),
- cassandra.getTypesProvider(),
+ MailQueueView.Factory mailQueueViewFactory = CassandraMailQueueViewTestFactory.factory(clock, random, cassandra.getConf(), cassandra.getTypesProvider(),
CassandraMailQueueViewConfiguration.builder()
.bucketCount(THREE_BUCKET_COUNT)
.updateBrowseStartPace(UPDATE_BROWSE_START_PACE)
.sliceWindow(ONE_HOUR_SLICE_WINDOW)
.build(),
- mimeMessageStore)
- .create(MailQueueName.fromString(SPOOL));
+ mimeMessageStoreFactory);
RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
.amqpUri(rabbitMQ.amqpUri())
@@ -126,9 +117,9 @@ public class RabbitMQMailQueueTest implements ManageableMailQueueContract, MailQ
metricTestSystem.getSpyMetricFactory(),
metricTestSystem.getSpyGaugeRegistry(),
rabbitClient,
- mimeMessageStore,
+ mimeMessageStoreFactory,
BLOB_ID_FACTORY,
- mailQueueView,
+ mailQueueViewFactory,
clock);
RabbitMQManagementApi mqManagementApi = new RabbitMQManagementApi(rabbitMQConfiguration);
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
index 0fa4e5a..7caf060 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java
@@ -21,7 +21,9 @@ package org.apache.james.queue.rabbitmq;
import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.net.URISyntaxException;
import java.time.Clock;
@@ -29,13 +31,10 @@ import java.time.Duration;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-import javax.mail.internet.MimeMessage;
-
import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
import org.apache.james.backend.rabbitmq.RabbitMQExtension;
import org.apache.james.blob.api.HashBlobId;
-import org.apache.james.blob.api.Store;
-import org.apache.james.blob.mail.MimeMessagePartsId;
+import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.metrics.api.NoopGaugeRegistry;
import org.apache.james.metrics.api.NoopMetricFactory;
import org.apache.james.queue.api.MailQueueFactory;
@@ -56,9 +55,11 @@ class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQM
@BeforeEach
void setup() throws URISyntaxException {
- @SuppressWarnings("unchecked")
- Store<MimeMessage, MimeMessagePartsId> mimeMessageStore = mock(Store.class);
+ MimeMessageStore.Factory mimeMessageStoreFactory = mock(MimeMessageStore.Factory.class);
+ MailQueueView.Factory mailQueueViewFactory = mock(MailQueueView.Factory.class);
MailQueueView mailQueueView = mock(MailQueueView.class);
+ when(mailQueueViewFactory.create(any()))
+ .thenReturn(mailQueueView);
RabbitMQConfiguration rabbitMQConfiguration = RabbitMQConfiguration.builder()
.amqpUri(rabbitMQExtension.getRabbitMQ().amqpUri())
@@ -71,9 +72,9 @@ class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQM
new NoopMetricFactory(),
new NoopGaugeRegistry(),
rabbitClient,
- mimeMessageStore,
+ mimeMessageStoreFactory,
BLOB_ID_FACTORY,
- mailQueueView,
+ mailQueueViewFactory,
Clock.systemUTC());
RabbitMQManagementApi mqManagementApi = new RabbitMQManagementApi(rabbitMQConfiguration);
mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory);
http://git-wip-us.apache.org/repos/asf/james-project/blob/f88cb4bc/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
index a42bbbc..02d70e3 100644
--- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
+++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/view/cassandra/CassandraMailQueueViewTestFactory.java
@@ -27,6 +27,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.utils.CassandraUtils;
+import org.apache.james.blob.mail.MimeMessageStore;
import org.apache.james.eventsourcing.eventstore.cassandra.CassandraEventStore;
import org.apache.james.eventsourcing.eventstore.cassandra.EventStoreDao;
import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
@@ -46,14 +47,14 @@ public class CassandraMailQueueViewTestFactory {
public static CassandraMailQueueView.Factory factory(Clock clock, ThreadLocalRandom random, Session session,
CassandraTypesProvider typesProvider,
CassandraMailQueueViewConfiguration configuration,
- Store<MimeMessage, MimeMessagePartsId> mimeMessageStore) {
+ MimeMessageStore.Factory mimeMessageStoreFactory) {
HashBlobId.Factory blobIdFactory = new HashBlobId.Factory();
EnqueuedMailsDAO enqueuedMailsDao = new EnqueuedMailsDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION, typesProvider, blobIdFactory);
BrowseStartDAO browseStartDao = new BrowseStartDAO(session);
DeletedMailsDAO deletedMailsDao = new DeletedMailsDAO(session);
- CassandraMailQueueBrowser cassandraMailQueueBrowser = new CassandraMailQueueBrowser(browseStartDao, deletedMailsDao, enqueuedMailsDao, mimeMessageStore, configuration, clock);
+ CassandraMailQueueBrowser cassandraMailQueueBrowser = new CassandraMailQueueBrowser(browseStartDao, deletedMailsDao, enqueuedMailsDao, mimeMessageStoreFactory, configuration, clock);
CassandraMailQueueMailStore cassandraMailQueueMailStore = new CassandraMailQueueMailStore(enqueuedMailsDao, browseStartDao, configuration, clock);
CassandraMailQueueMailDelete cassandraMailQueueMailDelete = new CassandraMailQueueMailDelete(deletedMailsDao, browseStartDao, cassandraMailQueueBrowser, configuration, random);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[7/7] james-project git commit: JAMES-2551 Introduce Cassandra
RabbitMQ product
Posted by ad...@apache.org.
JAMES-2551 Introduce Cassandra RabbitMQ product
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3efce9c8
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3efce9c8
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3efce9c8
Branch: refs/heads/master
Commit: 3efce9c878f98b8413369a1ec3179dd0ae50a801
Parents: 937de06
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Oct 3 15:07:19 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100
----------------------------------------------------------------------
pom.xml | 11 +
.../guice/cassandra-rabbitmq-guice/pom.xml | 225 +++++++++++++++++++
.../james/CassandraRabbitMQJamesServerMain.java | 44 ++++
.../james/CassandraRabbitMQJamesServerTest.java | 40 ++++
.../CassandraRabbitMQJmapJamesServerTest.java | 40 ++++
.../james/modules/DockerRabbitMQRule.java | 79 +++++++
.../apache/james/modules/RabbitMQExtension.java | 44 ++++
.../james/modules/TestRabbitMQModule.java | 87 +++++++
.../src/test/resources/batchsizes.properties | 10 +
.../src/test/resources/dnsservice.xml | 29 +++
.../src/test/resources/domainlist.xml | 24 ++
.../src/test/resources/imapserver.xml | 54 +++++
.../src/test/resources/keystore | Bin 0 -> 2245 bytes
.../src/test/resources/listeners.xml | 28 +++
.../src/test/resources/lmtpserver.xml | 41 ++++
.../src/test/resources/logback-test.xml | 27 +++
.../src/test/resources/mailetcontainer.xml | 146 ++++++++++++
.../src/test/resources/mailrepositorystore.xml | 36 +++
.../src/test/resources/managesieveserver.xml | 65 ++++++
.../src/test/resources/pop3server.xml | 42 ++++
.../src/test/resources/rabbitmq.properties | 2 +
.../src/test/resources/smtpserver.xml | 102 +++++++++
.../src/test/resources/spamassassin.properties | 2 +
server/container/guice/pom.xml | 1 +
.../queue/rabbitmq/RabbitMQManagementApi.java | 14 +-
25 files changed, 1191 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 8d514a1..c34f86f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1169,6 +1169,17 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
+ <version>${project.version}</version>
+ <type>test-jar</type>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>james-server-cli</artifactId>
<version>${project.version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/pom.xml b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
new file mode 100644
index 0000000..47d1112
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/pom.xml
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.james</groupId>
+ <artifactId>james-server-guice</artifactId>
+ <version>3.2.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>james-server-cassandra-rabbitmq-guice</artifactId>
+ <packaging>jar</packaging>
+
+ <name>Apache James :: Server :: Cassandra with RabbitMQ - guice injection</name>
+ <description>An advanced email server - Cassandra backend and RabbitMQ messaging with guice injection</description>
+
+ <properties>
+ <cassandra.includes>empty</cassandra.includes>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-backends-cassandra</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-backends-es</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-backends-rabbitmq</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-cassandra</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-elasticsearch</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-scanning-search</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>apache-james-mailbox-tika</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-cassandra-guice</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-cassandra-guice</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-guice-common</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-guice-jmap</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-jmap-integration-testing</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-testing</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-util</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
+ <artifactId>james-server-webadmin-core</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.pdfbox</groupId>
+ <artifactId>pdfbox</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.platform</groupId>
+ <artifactId>junit-platform-launcher</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.testcontainers</groupId>
+ <artifactId>testcontainers</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-dependencies</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <includeScope>compile</includeScope>
+ <includeScope>runtime</includeScope>
+ <outputDirectory>${project.build.directory}/${project.artifactId}.lib</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>default-jar</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ <configuration>
+ <finalName>${project.artifactId}</finalName>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <classpathPrefix>${project.artifactId}.lib/</classpathPrefix>
+ <mainClass>org.apache.james.CassandraRabbitMQJamesServerMain</mainClass>
+ <useUniqueVersions>false</useUniqueVersions>
+ </manifest>
+ </archive>
+ </configuration>
+ </execution>
+ <execution>
+ <id>test-jar</id>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <reuseForks>true</reuseForks>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
new file mode 100644
index 0000000..78cd1a6
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.james;
+
+import static org.apache.james.CassandraJamesServerMain.ALL_BUT_JMX_CASSANDRA_MODULE;
+
+import org.apache.james.modules.rabbitmq.RabbitMQModule;
+import org.apache.james.modules.server.JMXServerModule;
+import org.apache.james.server.core.configuration.Configuration;
+
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+public class CassandraRabbitMQJamesServerMain {
+ public static final Module ALL_BUT_JMX_CASSANDRA_RABBITMQ_MODULE = Modules.override(ALL_BUT_JMX_CASSANDRA_MODULE)
+ .with(new RabbitMQModule());
+
+ public static void main(String[] args) throws Exception {
+ Configuration configuration = Configuration.builder()
+ .useWorkingDirectoryEnvProperty()
+ .build();
+
+ GuiceJamesServer server = GuiceJamesServer.forConfiguration(configuration)
+ .combineWith(ALL_BUT_JMX_CASSANDRA_RABBITMQ_MODULE, new JMXServerModule());
+ server.start();
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
new file mode 100644
index 0000000..33f8cc1
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.james;
+
+import org.apache.james.modules.RabbitMQExtension;
+import org.apache.james.modules.TestJMAPServerModule;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+public class CassandraRabbitMQJamesServerTest implements JmapJamesServerContract {
+ private static final int LIMIT_TO_10_MESSAGES = 10;
+
+ @RegisterExtension
+ static JamesServerExtension testExtension = new JamesServerExtensionBuilder()
+ .extension(new EmbeddedElasticSearchExtension())
+ .extension(new CassandraExtension())
+ .extension(new RabbitMQExtension())
+ .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
+ .combineWith(CassandraRabbitMQJamesServerMain.ALL_BUT_JMX_CASSANDRA_RABBITMQ_MODULE)
+ .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+ .overrideWith(DOMAIN_LIST_CONFIGURATION_MODULE))
+ .build();
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java
new file mode 100644
index 0000000..9bb2ec8
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.james;
+
+import org.apache.james.modules.RabbitMQExtension;
+import org.apache.james.modules.TestJMAPServerModule;
+import org.junit.jupiter.api.extension.RegisterExtension;
+
+public class CassandraRabbitMQJmapJamesServerTest implements JmapJamesServerContract {
+ private static final int LIMIT_TO_10_MESSAGES = 10;
+
+ @RegisterExtension
+ static JamesServerExtension testExtension = new JamesServerExtensionBuilder()
+ .extension(new EmbeddedElasticSearchExtension())
+ .extension(new CassandraExtension())
+ .extension(new RabbitMQExtension())
+ .server(configuration -> GuiceJamesServer.forConfiguration(configuration)
+ .combineWith(CassandraRabbitMQJamesServerMain.ALL_BUT_JMX_CASSANDRA_RABBITMQ_MODULE)
+ .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+ .overrideWith(DOMAIN_LIST_CONFIGURATION_MODULE))
+ .build();
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
new file mode 100644
index 0000000..5356b6c
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.james.modules;
+
+import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+
+import com.google.inject.Module;
+import com.google.inject.multibindings.Multibinder;
+import com.google.inject.util.Modules;
+import org.apache.james.CleanupTasksPerformer;
+import org.apache.james.GuiceModuleTestRule;
+import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+import java.net.URISyntaxException;
+
+public class DockerRabbitMQRule implements GuiceModuleTestRule {
+
+ private DockerRabbitMQ rabbitMQ = DockerRabbitMQ.withoutCookie();
+
+ @Override
+ public Statement apply(Statement base, Description description) {
+ return base;
+ }
+
+ @Override
+ public void await() {
+ }
+
+ @Override
+ public Module getModule() {
+ return Modules.combine((binder) -> {
+ try {
+ binder.bind(RabbitMQConfiguration.class)
+ .toInstance(RabbitMQConfiguration.builder()
+ .amqpUri(rabbitMQ.amqpUri())
+ .managementUri(rabbitMQ.managementUri())
+ .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL)
+ .build());
+ } catch (URISyntaxException e) {
+ throw new RuntimeException(e);
+ }
+ },
+ binder -> Multibinder.newSetBinder(binder, CleanupTasksPerformer.CleanupTask.class)
+ .addBinding()
+ .to(TestRabbitMQModule.QueueCleanUp.class));
+ }
+
+ public DockerRabbitMQ dockerRabbitMQ() {
+ return rabbitMQ;
+ }
+
+ public void start() {
+ rabbitMQ.start();
+ }
+
+ public void stop() {
+ rabbitMQ.stop();
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java
new file mode 100644
index 0000000..24decaf
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/RabbitMQExtension.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.james.modules;
+
+import com.google.inject.Module;
+import org.apache.james.GuiceModuleTestExtension;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+public class RabbitMQExtension implements GuiceModuleTestExtension {
+
+ private final DockerRabbitMQRule rabbitMQRule = new DockerRabbitMQRule();
+
+ @Override
+ public void beforeAll(ExtensionContext extensionContext) {
+ rabbitMQRule.start();
+ }
+
+ @Override
+ public void afterAll(ExtensionContext extensionContext) {
+ rabbitMQRule.stop();
+ }
+
+ @Override
+ public Module getModule() {
+ return new TestRabbitMQModule(rabbitMQRule.dockerRabbitMQ());
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java
new file mode 100644
index 0000000..c9cda53
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/TestRabbitMQModule.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.james.modules;
+
+import static org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
+
+import java.net.URISyntaxException;
+import java.time.Duration;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import org.apache.james.CleanupTasksPerformer;
+import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.queue.rabbitmq.RabbitMQManagementApi;
+import org.apache.james.queue.rabbitmq.view.cassandra.configuration.CassandraMailQueueViewConfiguration;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.multibindings.Multibinder;
+
+public class TestRabbitMQModule extends AbstractModule {
+
+ private final DockerRabbitMQ rabbitMQ;
+
+ public TestRabbitMQModule(DockerRabbitMQ rabbitMQ) {
+ this.rabbitMQ = rabbitMQ;
+ }
+
+ @Override
+ protected void configure() {
+ bind(CassandraMailQueueViewConfiguration.class).toInstance(CassandraMailQueueViewConfiguration
+ .builder()
+ .bucketCount(1)
+ .updateBrowseStartPace(1000)
+ .sliceWindow(Duration.ofHours(1))
+ .build());
+
+ Multibinder.newSetBinder(binder(), CleanupTasksPerformer.CleanupTask.class)
+ .addBinding()
+ .to(QueueCleanUp.class);
+ }
+
+ @Provides
+ @Singleton
+ protected RabbitMQConfiguration provideRabbitMQConfiguration() throws URISyntaxException {
+ return RabbitMQConfiguration.builder()
+ .amqpUri(rabbitMQ.amqpUri())
+ .managementUri(rabbitMQ.managementUri())
+ .managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL)
+ .build();
+ }
+
+ public static class QueueCleanUp implements CleanupTasksPerformer.CleanupTask {
+ private final RabbitMQManagementApi api;
+
+ @Inject
+ public QueueCleanUp(RabbitMQManagementApi api) {
+ this.api = api;
+ }
+
+ @Override
+ public Result run() {
+ api.deleteAllQueues();
+
+ return Result.COMPLETED;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/batchsizes.properties
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/batchsizes.properties b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/batchsizes.properties
new file mode 100644
index 0000000..47da2c5
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/batchsizes.properties
@@ -0,0 +1,10 @@
+# Those properties let you configure the number of messages queried at the same time.
+# IMAP FETCH command
+fetch.metadata=200
+fetch.headers=200
+fetch.body=100
+fetch.full=50
+# IMAP COPY command
+copy=100
+# IMAP MOVE command
+move=100
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml
new file mode 100644
index 0000000..0978a00
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<dnsservice>
+ <servers>
+ <server>8.8.8.8</server>
+ <server>62.210.16.6</server>
+ </servers>
+ <autodiscover>false</autodiscover>
+ <authoritative>false</authoritative>
+ <maxcachesize>50000</maxcachesize>
+</dnsservice>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/domainlist.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/domainlist.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/domainlist.xml
new file mode 100644
index 0000000..fe17431
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/domainlist.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<domainlist>
+ <autodetect>false</autodetect>
+ <autodetectIP>false</autodetectIP>
+</domainlist>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/imapserver.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/imapserver.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/imapserver.xml
new file mode 100644
index 0000000..509fdb3
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/imapserver.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+
+<imapservers>
+ <imapserver enabled="true">
+ <jmxName>imapserver</jmxName>
+ <bind>0.0.0.0:0</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="false">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore
+ -->
+ <keystore>classpath://keystore</keystore>
+ <secret>james72laBalle</secret>
+ <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+ </tls>
+ <connectionLimit>0</connectionLimit>
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ </imapserver>
+ <imapserver enabled="true">
+ <jmxName>imapserver-ssl</jmxName>
+ <bind>0.0.0.0:0</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="true">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore
+ -->
+ <keystore>classpath://keystore</keystore>
+ <secret>james72laBalle</secret>
+ <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+ </tls>
+ <connectionLimit>0</connectionLimit>
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ </imapserver>
+</imapservers>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/keystore
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/keystore b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/keystore
new file mode 100644
index 0000000..536a6c7
Binary files /dev/null and b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/keystore differ
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/listeners.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/listeners.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/listeners.xml
new file mode 100644
index 0000000..eabdb5e
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/listeners.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<listeners>
+ <listener>
+ <class>org.apache.james.mailbox.spamassassin.SpamAssassinListener</class>
+ </listener>
+ <listener>
+ <class>org.apache.james.mailbox.cassandra.MailboxOperationLoggingListener</class>
+ </listener>
+</listeners>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/lmtpserver.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/lmtpserver.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/lmtpserver.xml
new file mode 100644
index 0000000..ffa6eae
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/lmtpserver.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<lmtpservers>
+
+ <lmtpserver enabled="true">
+ <jmxName>lmtpserver</jmxName>
+ <!-- LMTP should not be reachable from outside your network so bind it to loopback-->
+ <bind>0.0.0.0:0</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <connectiontimeout>1200</connectiontimeout>
+ <!-- Set the maximum simultaneous incoming connections for this service -->
+ <connectionLimit>0</connectionLimit>
+ <!-- Set the maximum simultaneous incoming connections per IP for this service -->
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <!-- This sets the maximum allowed message size (in kilobytes) for this -->
+ <!-- LMTP service. If unspecified, the value defaults to 0, which means no limit. -->
+ <maxmessagesize>0</maxmessagesize>
+ <handlerchain>
+ <handler class="org.apache.james.lmtpserver.CoreCmdHandlerLoader"/>
+ </handlerchain>
+ </lmtpserver>
+
+</lmtpservers>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/logback-test.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..56f9d51
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/logback-test.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+ <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+ <resetJUL>true</resetJUL>
+ </contextListener>
+
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
+ <immediateFlush>false</immediateFlush>
+ </encoder>
+ </appender>
+
+ <root level="WARN">
+ <appender-ref ref="CONSOLE" />
+ </root>
+
+ <logger name="org.apache.james" level="DEBUG"/>
+
+ <logger name="com.datastax.driver.core.QueryLogger.SLOW" level="DEBUG" />
+
+ <logger name="org.apache.james.backends.cassandra.DockerCassandraRule" level="WARN" >
+ <appender-ref ref="CONSOLE" />
+ </logger>
+
+</configuration>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml
new file mode 100644
index 0000000..412e6e9
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailetcontainer.xml
@@ -0,0 +1,146 @@
+<?xml version="1.0"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<mailetcontainer enableJmx="false">
+
+ <context>
+ <postmaster>postmaster@james.minet.net</postmaster>
+ </context>
+
+ <spooler>
+ <threads>20</threads>
+ </spooler>
+
+ <processors>
+ <processor state="root" enableJmx="false">
+ <mailet match="All" class="PostmasterAlias"/>
+ <mailet match="RelayLimit=30" class="Null"/>
+ <mailet match="All" class="ToProcessor">
+ <processor>transport</processor>
+ </mailet>
+ </processor>
+
+ <processor state="error" enableJmx="false">
+ <mailet match="All" class="Bounce"/>
+ <mailet match="All" class="ToRepository">
+ <repositoryPath>file://var/mail/error/</repositoryPath>
+ </mailet>
+ </processor>
+
+
+ <processor state="transport" enableJmx="false">
+ <matcher name="relay-allowed" match="org.apache.james.mailetcontainer.impl.matchers.Or">
+ <matcher match="SMTPAuthSuccessful"/>
+ <matcher match="SMTPIsAuthNetwork"/>
+ <matcher match="SentByMailet"/>
+ <matcher match="org.apache.james.jmap.mailet.SentByJmap"/>
+ </matcher>
+ <mailet match="SenderIs=denied@other.com" class="ToProcessor">
+ <processor>sender-denied</processor>
+ </mailet>
+ <mailet match="SMTPAuthSuccessful" class="SetMimeHeader">
+ <name>X-UserIsAuth</name>
+ <value>true</value>
+ </mailet>
+ <mailet match="All" class="RemoveMimeHeader">
+ <name>bcc</name>
+ </mailet>
+ <mailet match="All" class="RecipientRewriteTable">
+ <errorProcessor>rrt-error</errorProcessor>
+ </mailet>
+ <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/>
+ <mailet match="RecipientIsLocal" class="SpamAssassin">
+ <spamdHost>localhost</spamdHost>
+ <spamdPort>783</spamdPort>
+ </mailet>
+ <mailet match="IsMarkedAsSpam" class="WithStorageDirective">
+ <targetFolderName>Spam</targetFolderName>
+ </mailet>
+ <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.filter.JMAPFiltering"/>
+ <mailet match="RecipientIsLocal" class="LocalDelivery"/>
+ <mailet match="HostIsLocal" class="ToProcessor">
+ <processor>local-address-error</processor>
+ <notice>550 - Requested action not taken: no such user here</notice>
+ </mailet>
+ <mailet match="relay-allowed" class="RemoteDelivery">
+ <outgoingQueue>outgoing</outgoingQueue>
+ <delayTime>5000, 100000, 500000</delayTime>
+ <maxRetries>25</maxRetries>
+ <maxDnsProblemRetries>0</maxDnsProblemRetries>
+ <deliveryThreads>10</deliveryThreads>
+ <sendpartial>true</sendpartial>
+ <bounceProcessor>bounces</bounceProcessor>
+ </mailet>
+ <mailet match="All" class="ToProcessor">
+ <processor>relay-denied</processor>
+ </mailet>
+ </processor>
+
+ <processor state="local-address-error" enableJmx="false">
+ <mailet match="All" class="Bounce">
+ <attachment>none</attachment>
+ </mailet>
+ <mailet match="All" class="ToRepository">
+ <repositoryPath>file://var/mail/address-error/</repositoryPath>
+ </mailet>
+ </processor>
+
+ <processor state="relay-denied" enableJmx="false">
+ <mailet match="All" class="Bounce">
+ <attachment>none</attachment>
+ </mailet>
+ <mailet match="All" class="ToRepository">
+ <repositoryPath>file://var/mail/relay-denied/</repositoryPath>
+ <notice>Warning: You are sending an e-mail to a remote server. You must be authentified to perform such an operation</notice>
+ </mailet>
+ </processor>
+
+ <processor state="sender-denied" enableJmx="false">
+ <mailet match="All" class="Bounce">
+ <attachment>none</attachment>
+ <passThrough>true</passThrough>
+ </mailet>
+ <mailet match="All" class="ToRepository">
+ <repositoryPath>cassandra://var/mail/sender-denied/</repositoryPath>
+ <notice>Error: You are sending an e-mail by a forbidden sender.</notice>
+ </mailet>
+ </processor>
+
+ <processor state="bounces" enableJmx="false">
+ <mailet match="All" class="DSNBounce">
+ <passThrough>false</passThrough>
+ </mailet>
+ </processor>
+
+ <processor state="rrt-error" enableJmx="false">
+ <mailet match="All" class="ToRepository">
+ <repositoryPath>cassandra://var/mail/rrt-error/</repositoryPath>
+ <passThrough>true</passThrough>
+ </mailet>
+ <mailet match="IsSenderInRRTLoop" class="Null"/>
+ <mailet match="All" class="Bounce"/>
+ </processor>
+
+ </processors>
+
+</mailetcontainer>
+
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailrepositorystore.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailrepositorystore.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailrepositorystore.xml
new file mode 100644
index 0000000..3386c33
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/mailrepositorystore.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<mailrepositorystore>
+ <mailrepositories>
+ <mailrepository class="org.apache.james.mailrepository.file.FileMailRepository">
+ <protocols>
+ <protocol>file</protocol>
+ </protocols>
+ <config FIFO="false" CACHEKEYS="true"/>
+ </mailrepository>
+ <mailrepository class="org.apache.james.mailrepository.cassandra.CassandraMailRepository">
+ <protocols>
+ <protocol>cassandra</protocol>
+ </protocols>
+ </mailrepository>
+ </mailrepositories>
+</mailrepositorystore>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/managesieveserver.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/managesieveserver.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/managesieveserver.xml
new file mode 100644
index 0000000..eee4052
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/managesieveserver.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<!--
+ This template file can be used as example for James Server configuration
+ DO NOT USE IT AS SUCH AND ADAPT IT TO YOUR NEEDS
+-->
+
+<!-- See http://james.apache.org/server/3/config.html for usage -->
+
+<managesieveservers>
+
+ <managesieveserver enabled="true">
+
+ <jmxName>managesieveserver</jmxName>
+
+ <bind>0.0.0.0:0</bind>
+
+ <connectionBacklog>200</connectionBacklog>
+
+ <tls socketTLS="false" startTLS="false">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore
+ -->
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</secret>
+ <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+ <!-- The algorithm is optional and only needs to be specified when using something other
+ than the Sun JCE provider - You could use IbmX509 with IBM Java runtime. -->
+ <algorithm>SunX509</algorithm>
+ </tls>
+
+ <!-- connection timeout in secconds -->
+ <connectiontimeout>360</connectiontimeout>
+
+ <!-- Set the maximum simultaneous incoming connections for this service -->
+ <connectionLimit>0</connectionLimit>
+
+ <!-- Set the maximum simultaneous incoming connections per IP for this service -->
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+
+ </managesieveserver>
+
+</managesieveservers>
+
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/pop3server.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/pop3server.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/pop3server.xml
new file mode 100644
index 0000000..595c313
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/pop3server.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+
+<pop3servers>
+ <pop3server enabled="true">
+ <jmxName>pop3server</jmxName>
+ <bind>0.0.0.0:0</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="false">
+ <!-- To create a new keystore execute:
+ keytool -genkey -alias james -keyalg RSA -keystore /path/to/james/conf/keystore
+ -->
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</secret>
+ <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+ </tls>
+ <connectiontimeout>1200</connectiontimeout>
+ <connectionLimit>0</connectionLimit>
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <handlerchain>
+ <handler class="org.apache.james.pop3server.core.CoreCmdHandlerLoader"/>
+ </handlerchain>
+ </pop3server>
+</pop3servers>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/rabbitmq.properties
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/rabbitmq.properties b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/rabbitmq.properties
new file mode 100644
index 0000000..25d0dd6
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/rabbitmq.properties
@@ -0,0 +1,2 @@
+uri=amqp://james:james@rabbitmq_host:5672
+management.uri=http://james:james@rabbitmq_host:15672/api/
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/smtpserver.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/smtpserver.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/smtpserver.xml
new file mode 100644
index 0000000..c348f04
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/smtpserver.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+<smtpservers>
+ <smtpserver enabled="true">
+ <jmxName>smtpserver-global</jmxName>
+ <bind>0.0.0.0:0</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="false">
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</secret>
+ <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+ <algorithm>SunX509</algorithm>
+ </tls>
+ <connectiontimeout>360</connectiontimeout>
+ <connectionLimit>0</connectionLimit>
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <authRequired>false</authRequired>
+ <verifyIdentity>true</verifyIdentity>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+ <smtpGreeting>JAMES Linagora's SMTP awesome Server</smtpGreeting>
+ <handlerchain>
+ <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
+ <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+ </handlerchain>
+ </smtpserver>
+ <smtpserver enabled="true">
+ <jmxName>smtpserver-TLS</jmxName>
+ <bind>0.0.0.0:0</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="false">
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</secret>
+ <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+ <algorithm>SunX509</algorithm>
+ </tls>
+ <connectiontimeout>360</connectiontimeout>
+ <connectionLimit>0</connectionLimit>
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <!--
+ Authorize only local users
+ -->
+ <authRequired>true</authRequired>
+ <!-- Trust authenticated users -->
+ <verifyIdentity>false</verifyIdentity>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+ <smtpGreeting>JAMES Linagora's SMTP awesome Server</smtpGreeting>
+ <handlerchain>
+ <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
+ <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+ </handlerchain>
+ </smtpserver>
+ <smtpserver enabled="true">
+ <jmxName>smtpserver-authenticated</jmxName>
+ <bind>0.0.0.0:0</bind>
+ <connectionBacklog>200</connectionBacklog>
+ <tls socketTLS="false" startTLS="false">
+ <keystore>file://conf/keystore</keystore>
+ <secret>james72laBalle</secret>
+ <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
+ <algorithm>SunX509</algorithm>
+ </tls>
+ <connectiontimeout>360</connectiontimeout>
+ <connectionLimit>0</connectionLimit>
+ <connectionLimitPerIP>0</connectionLimitPerIP>
+ <!--
+ Authorize only local users
+ -->
+ <authRequired>true</authRequired>
+ <!-- Trust authenticated users -->
+ <verifyIdentity>false</verifyIdentity>
+ <maxmessagesize>0</maxmessagesize>
+ <addressBracketsEnforcement>true</addressBracketsEnforcement>
+ <smtpGreeting>JAMES Linagora's SMTP awesome Server</smtpGreeting>
+ <handlerchain>
+ <handler class="org.apache.james.smtpserver.fastfail.ValidRcptHandler"/>
+ <handler class="org.apache.james.smtpserver.CoreCmdHandlerLoader"/>
+ </handlerchain>
+ </smtpserver>
+</smtpservers>
+
+
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/spamassassin.properties
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/spamassassin.properties b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/spamassassin.properties
new file mode 100644
index 0000000..134ed31
--- /dev/null
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/spamassassin.properties
@@ -0,0 +1,2 @@
+spamassassin.host=localhost
+spamassassin.host=783
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/container/guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/pom.xml b/server/container/guice/pom.xml
index e57a43f..5c0375f 100644
--- a/server/container/guice/pom.xml
+++ b/server/container/guice/pom.xml
@@ -37,6 +37,7 @@
<module>blob-objectstorage-guice</module>
<module>cassandra-guice</module>
<module>cassandra-ldap-guice</module>
+ <module>cassandra-rabbitmq-guice</module>
<module>configuration</module>
<module>custom-mailets</module>
<module>es-metric-reporter</module>
http://git-wip-us.apache.org/repos/asf/james-project/blob/3efce9c8/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
index ac3269c..1a992c6 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQManagementApi.java
@@ -32,6 +32,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import feign.Feign;
import feign.Logger;
+import feign.Param;
import feign.RequestLine;
import feign.RetryableException;
import feign.Retryer;
@@ -41,7 +42,7 @@ import feign.jackson.JacksonDecoder;
import feign.jackson.JacksonEncoder;
import feign.slf4j.Slf4jLogger;
-class RabbitMQManagementApi {
+public class RabbitMQManagementApi {
private static final ErrorDecoder RETRY_500 = (methodKey, response) -> {
if (response.status() == 500) {
@@ -55,10 +56,16 @@ class RabbitMQManagementApi {
class MessageQueue {
@JsonProperty("name")
String name;
+
+ @JsonProperty("vhost")
+ String vhost;
}
@RequestLine("GET /api/queues")
List<MessageQueue> listQueues();
+
+ @RequestLine(value = "DELETE /api/queues/{vhost}/{name}", decodeSlash = false)
+ void deleteQueue(@Param("vhost") String vhost, @Param("name") String name);
}
private final Api api;
@@ -75,7 +82,6 @@ class RabbitMQManagementApi {
.retryer(new Retryer.Default())
.errorDecoder(RETRY_500)
.target(Api.class, configuration.getManagementUri().toString());
-
}
Stream<MailQueueName> listCreatedMailQueueNames() {
@@ -87,4 +93,8 @@ class RabbitMQManagementApi {
.distinct();
}
+ public void deleteAllQueues() {
+ api.listQueues()
+ .forEach(queue -> api.deleteQueue("/", queue.name));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[4/7] james-project git commit: JAMES-2511 Introduce DockerRabbitMQ
TestRule
Posted by ad...@apache.org.
JAMES-2511 Introduce DockerRabbitMQ TestRule
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/51922f09
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/51922f09
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/51922f09
Branch: refs/heads/master
Commit: 51922f092a9808d2268bc026bac9cddf9138b756
Parents: 7273a4a
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Oct 3 15:04:16 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100
----------------------------------------------------------------------
.../rabbitmq/DockerRabbitMQTestRule.java | 44 ++++++++++++++++++++
1 file changed, 44 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/51922f09/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java
new file mode 100644
index 0000000..0814049
--- /dev/null
+++ b/backends-common/rabbitmq/src/test/java/org/apache/james/backend/rabbitmq/DockerRabbitMQTestRule.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.backend.rabbitmq;
+
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+
+public class DockerRabbitMQTestRule implements TestRule {
+
+ private DockerRabbitMQ dockerRabbitMQ;
+
+ @Override
+ public Statement apply(Statement base, Description description) {
+ return new Statement() {
+ @Override
+ public void evaluate() throws Throwable {
+ dockerRabbitMQ = DockerRabbitMQ.withoutCookie();
+ dockerRabbitMQ.start();
+ base.evaluate();
+ }
+ };
+ }
+
+ public DockerRabbitMQ getDockerRabbitMQ() {
+ return dockerRabbitMQ;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[6/7] james-project git commit: JAMES-2551 Remove RabbitMQ from
Cassandra ActiveMQ product
Posted by ad...@apache.org.
JAMES-2551 Remove RabbitMQ from Cassandra ActiveMQ product
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fed81345
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fed81345
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fed81345
Branch: refs/heads/master
Commit: fed813456ae9e6a841e06b760c02bb7c784f219a
Parents: 87992d3
Author: Antoine Duprat <ad...@linagora.com>
Authored: Wed Oct 3 15:44:41 2018 +0200
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100
----------------------------------------------------------------------
.../src/main/java/org/apache/james/CassandraJamesServerMain.java | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/fed81345/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
index 94eb6d6..13cdd68 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java
@@ -44,7 +44,6 @@ import org.apache.james.modules.protocols.ManageSieveServerModule;
import org.apache.james.modules.protocols.POP3ServerModule;
import org.apache.james.modules.protocols.ProtocolHandlerModule;
import org.apache.james.modules.protocols.SMTPServerModule;
-import org.apache.james.modules.rabbitmq.RabbitMQModule;
import org.apache.james.modules.server.CassandraRoutesModule;
import org.apache.james.modules.server.DLPRoutesModule;
import org.apache.james.modules.server.DataRoutesModules;
@@ -113,8 +112,7 @@ public class CassandraJamesServerMain {
new ElasticSearchMetricReporterModule(),
new MailboxModule(),
new TikaMailboxModule(),
- new SpamAssassinListenerModule(),
- new RabbitMQModule());
+ new SpamAssassinListenerModule());
public static Module ALL_BUT_JMX_CASSANDRA_MODULE = Modules.combine(
CASSANDRA_SERVER_CORE_MODULE,
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/7] james-project git commit: JAMES-2551 James server should rely
on SimpleChannelPool
Posted by ad...@apache.org.
JAMES-2551 James server should rely on SimpleChannelPool
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/87992d32
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/87992d32
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/87992d32
Branch: refs/heads/master
Commit: 87992d32e8a993504cb830d5876214278a2597c6
Parents: 3efce9c
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Oct 4 16:39:45 2018 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Oct 31 17:56:16 2018 +0100
----------------------------------------------------------------------
.../org/apache/james/backend/rabbitmq/SimpleChannelPool.java | 2 ++
.../java/org/apache/james/modules/rabbitmq/RabbitMQModule.java | 5 +++++
2 files changed, 7 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/87992d32/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java
----------------------------------------------------------------------
diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java
index 31d8530..e708118 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backend/rabbitmq/SimpleChannelPool.java
@@ -23,6 +23,7 @@ import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
import javax.annotation.PreDestroy;
+import javax.inject.Inject;
import com.github.fge.lambdas.Throwing;
import com.rabbitmq.client.Channel;
@@ -33,6 +34,7 @@ public class SimpleChannelPool implements RabbitMQChannelPool {
private final AtomicReference<Connection> connectionReference;
private final RabbitMQConnectionFactory connectionFactory;
+ @Inject
public SimpleChannelPool(RabbitMQConnectionFactory factory) {
this.connectionFactory = factory;
this.connectionReference = new AtomicReference<>();
http://git-wip-us.apache.org/repos/asf/james-project/blob/87992d32/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
index 15f9c42..3a04488 100644
--- a/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
+++ b/server/container/guice/rabbitmq/src/main/java/org/apache/james/modules/rabbitmq/RabbitMQModule.java
@@ -27,7 +27,9 @@ import javax.inject.Singleton;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.backend.rabbitmq.RabbitMQChannelPool;
import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
+import org.apache.james.backend.rabbitmq.SimpleChannelPool;
import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
import org.apache.james.queue.api.MailQueueFactory;
@@ -77,6 +79,9 @@ public class RabbitMQModule extends AbstractModule {
bind(CassandraMailQueueMailDelete.class).in(Scopes.SINGLETON);
bind(CassandraMailQueueMailStore.class).in(Scopes.SINGLETON);
+ bind(SimpleChannelPool.class).in(Scopes.SINGLETON);
+ bind(RabbitMQChannelPool.class).to(SimpleChannelPool.class);
+
Multibinder<CassandraModule> cassandraModuleBinder = Multibinder.newSetBinder(binder(), CassandraModule.class);
cassandraModuleBinder.addBinding().toInstance(CassandraMailQueueViewModule.MODULE);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org