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]

Reply via email to