JAMES-2594 RabbitMQ dequeue should use mailqueue item decorator factory
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5c5274d8 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5c5274d8 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5c5274d8 Branch: refs/heads/master Commit: 5c5274d86e3abfe280c8223b9c5a8cc172b6b58f Parents: a5c5576 Author: tran tien duc <[email protected]> Authored: Thu Nov 15 16:52:22 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Fri Nov 16 09:44:24 2018 +0700 ---------------------------------------------------------------------- .../org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java | 9 ++++++--- .../james/queue/rabbitmq/RabbitMQMailQueueFactory.java | 9 +++++++-- .../rabbitmq/RabbitMQMailQueueConfigurationChangeTest.java | 4 +++- .../apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java | 4 +++- .../james/queue/rabbitmq/RabbitMqMailQueueFactoryTest.java | 4 +++- 5 files changed, 22 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java ---------------------------------------------------------------------- diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java index 698f101..0909469 100644 --- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java +++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueue.java @@ -22,6 +22,7 @@ package org.apache.james.queue.rabbitmq; import java.util.concurrent.TimeUnit; import org.apache.james.metrics.api.MetricFactory; +import org.apache.james.queue.api.MailQueueItemDecoratorFactory; import org.apache.james.queue.api.ManageableMailQueue; import org.apache.james.queue.rabbitmq.view.api.DeleteCondition; import org.apache.james.queue.rabbitmq.view.api.MailQueueView; @@ -41,15 +42,17 @@ public class RabbitMQMailQueue implements ManageableMailQueue { private final Enqueuer enqueuer; private final Dequeuer dequeuer; private final MailQueueView mailQueueView; + private final MailQueueItemDecoratorFactory decoratorFactory; RabbitMQMailQueue(MetricFactory metricFactory, MailQueueName name, Enqueuer enqueuer, Dequeuer dequeuer, - MailQueueView mailQueueView) { + MailQueueView mailQueueView, MailQueueItemDecoratorFactory decoratorFactory) { this.metricFactory = metricFactory; this.name = name; this.enqueuer = enqueuer; this.dequeuer = dequeuer; this.mailQueueView = mailQueueView; + this.decoratorFactory = decoratorFactory; } @Override @@ -58,7 +61,7 @@ public class RabbitMQMailQueue implements ManageableMailQueue { } @Override - public void enQueue(Mail mail, long delay, TimeUnit unit) throws MailQueueException { + public void enQueue(Mail mail, long delay, TimeUnit unit) { if (delay > 0) { LOGGER.info("Ignored delay upon enqueue of {} : {} {}.", mail.getName(), delay, unit); } @@ -74,7 +77,7 @@ public class RabbitMQMailQueue implements ManageableMailQueue { @Override public MailQueueItem deQueue() { return metricFactory.runPublishingTimerMetric(DEQUEUED_TIMER_METRIC_NAME_PREFIX + name.asString(), - Throwing.supplier(dequeuer::deQueue).sneakyThrow()); + Throwing.supplier(() -> decoratorFactory.decorate(dequeuer.deQueue())).sneakyThrow()); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/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 b195ffe..52a99eb 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 @@ -37,6 +37,7 @@ 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; +import org.apache.james.queue.api.MailQueueItemDecoratorFactory; import org.apache.james.queue.rabbitmq.view.api.MailQueueView; import org.apache.mailet.Mail; @@ -55,6 +56,7 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu private final Function<MailReferenceDTO, Mail> mailLoader; private final MailQueueView.Factory mailQueueViewFactory; private final Clock clock; + private final MailQueueItemDecoratorFactory decoratorFactory; @Inject @VisibleForTesting PrivateFactory(MetricFactory metricFactory, @@ -63,13 +65,15 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu MimeMessageStore.Factory mimeMessageStoreFactory, BlobId.Factory blobIdFactory, MailQueueView.Factory mailQueueViewFactory, - Clock clock) { + Clock clock, + MailQueueItemDecoratorFactory decoratorFactory) { this.metricFactory = metricFactory; this.gaugeRegistry = gaugeRegistry; this.rabbitClient = rabbitClient; this.mimeMessageStore = mimeMessageStoreFactory.mimeMessageStore(); this.mailQueueViewFactory = mailQueueViewFactory; this.clock = clock; + this.decoratorFactory = decoratorFactory; this.mailReferenceSerializer = new MailReferenceSerializer(); this.mailLoader = Throwing.function(new MailLoader(mimeMessageStore, blobIdFactory)::load).sneakyThrow(); } @@ -85,7 +89,8 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu metricFactory, mailQueueView, clock), new Dequeuer(mailQueueName, rabbitClient, mailLoader, mailReferenceSerializer, metricFactory, mailQueueView), - mailQueueView); + mailQueueView, + decoratorFactory); registerGaugeFor(rabbitMQMailQueue); return rabbitMQMailQueue; http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/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 76a7aeb..d0acd5d 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 @@ -48,6 +48,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.api.RawMailQueueItemDecoratorFactory; 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; @@ -126,7 +127,8 @@ class RabbitMQMailQueueConfigurationChangeTest { mimeMessageStoreFactory, BLOB_ID_FACTORY, mailQueueViewFactory, - clock); + clock, + new RawMailQueueItemDecoratorFactory()); RabbitMQMailQueueFactory mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, privateFactory); return mailQueueFactory.createQueue(SPOOL); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/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 8e84341..7b7630d 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 @@ -48,6 +48,7 @@ import org.apache.james.queue.api.MailQueueMetricContract; import org.apache.james.queue.api.MailQueueMetricExtension; import org.apache.james.queue.api.ManageableMailQueue; import org.apache.james.queue.api.ManageableMailQueueContract; +import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory; import org.apache.james.queue.rabbitmq.view.api.MailQueueView; import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewModule; import org.apache.james.queue.rabbitmq.view.cassandra.CassandraMailQueueViewTestFactory; @@ -122,7 +123,8 @@ public class RabbitMQMailQueueTest implements ManageableMailQueueContract, MailQ mimeMessageStoreFactory, BLOB_ID_FACTORY, mailQueueViewFactory, - clock); + clock, + new RawMailQueueItemDecoratorFactory()); mqManagementApi = new RabbitMQManagementApi(rabbitMQConfiguration); mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory); mailQueue = mailQueueFactory.createQueue(SPOOL); http://git-wip-us.apache.org/repos/asf/james-project/blob/5c5274d8/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 1f05da8..55f0da7 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 @@ -39,6 +39,7 @@ import org.apache.james.metrics.api.NoopGaugeRegistry; import org.apache.james.metrics.api.NoopMetricFactory; import org.apache.james.queue.api.MailQueueFactory; import org.apache.james.queue.api.MailQueueFactoryContract; +import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory; import org.apache.james.queue.rabbitmq.view.api.MailQueueView; import org.apache.james.util.concurrency.ConcurrentTestRunner; import org.junit.jupiter.api.AfterEach; @@ -77,7 +78,8 @@ class RabbitMqMailQueueFactoryTest implements MailQueueFactoryContract<RabbitMQM mimeMessageStoreFactory, BLOB_ID_FACTORY, mailQueueViewFactory, - Clock.systemUTC()); + Clock.systemUTC(), + new RawMailQueueItemDecoratorFactory()); mqManagementApi = new RabbitMQManagementApi(rabbitMQConfiguration); mailQueueFactory = new RabbitMQMailQueueFactory(rabbitClient, mqManagementApi, factory); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
