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 <[email protected]> Authored: Wed Oct 3 15:05:42 2018 +0200 Committer: Antoine Duprat <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
