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

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

commit 2c460a2a732fb3d2814c50221cdedc2a18bd3c35
Author: Raphael Ouazana <[email protected]>
AuthorDate: Mon Oct 21 14:32:45 2019 +0200

    JAMES-2926 Fix injection for MailQueueFactory
---
 .../james/modules/activemq/ActiveMQQueueModule.java    |  9 ++++++++-
 .../apache/james/modules/TaskSerializationModule.java  |  8 ++++----
 .../james/modules/server/MemoryMailQueueModule.java    |  9 ++++++++-
 .../apache/james/modules/rabbitmq/RabbitMQModule.java  | 18 ++++++++++++++++--
 .../apache/james/webadmin/routes/MailQueueRoutes.java  |  6 +++---
 .../james/webadmin/service/ClearMailQueueTaskDTO.java  |  4 ++--
 .../service/DeleteMailsFromMailQueueTaskDTO.java       |  4 ++--
 7 files changed, 43 insertions(+), 15 deletions(-)

diff --git 
a/server/container/guice/activemq/src/main/java/org/apache/james/modules/activemq/ActiveMQQueueModule.java
 
b/server/container/guice/activemq/src/main/java/org/apache/james/modules/activemq/ActiveMQQueueModule.java
index 8b2cbd1..03dcc70 100644
--- 
a/server/container/guice/activemq/src/main/java/org/apache/james/modules/activemq/ActiveMQQueueModule.java
+++ 
b/server/container/guice/activemq/src/main/java/org/apache/james/modules/activemq/ActiveMQQueueModule.java
@@ -26,6 +26,7 @@ import 
org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter;
 import org.apache.james.queue.activemq.ActiveMQMailQueueFactory;
 import org.apache.james.queue.activemq.EmbeddedActiveMQ;
 import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.queue.api.ManageableMailQueue;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
@@ -49,9 +50,15 @@ public class ActiveMQQueueModule extends AbstractModule {
 
     @Provides
     @Singleton
-    public MailQueueFactory<?> 
createActiveMailQueueFactory(ActiveMQMailQueueFactory activeMQMailQueueFactory) 
{
+    public MailQueueFactory<? extends ManageableMailQueue> 
createActiveMQManageableMailQueueFactory(ActiveMQMailQueueFactory 
activeMQMailQueueFactory) {
         activeMQMailQueueFactory.setUseJMX(true);
         activeMQMailQueueFactory.init();
         return activeMQMailQueueFactory;
     }
+
+    @Provides
+    @Singleton
+    public MailQueueFactory<?> 
provideActiveMQMailQueueFactory(MailQueueFactory<? extends ManageableMailQueue> 
mailQueueFactory) {
+        return mailQueueFactory;
+    }
 }
diff --git 
a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java
 
b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java
index 238eb58..6c8fc00 100644
--- 
a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java
+++ 
b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/modules/TaskSerializationModule.java
@@ -131,8 +131,8 @@ public class TaskSerializationModule extends AbstractModule 
{
     }
 
     @ProvidesIntoSet
-    public TaskDTOModule<?, ?> clearMailQueueTask(MailQueueFactory<?> 
mailQueueFactory) {
-        return 
ClearMailQueueTaskDTO.module((MailQueueFactory<ManageableMailQueue>) 
mailQueueFactory);
+    public TaskDTOModule<?, ?> clearMailQueueTask(MailQueueFactory<? extends 
ManageableMailQueue> mailQueueFactory) {
+        return ClearMailQueueTaskDTO.module(mailQueueFactory);
     }
 
     @ProvidesIntoSet
@@ -141,8 +141,8 @@ public class TaskSerializationModule extends AbstractModule 
{
     }
 
     @ProvidesIntoSet
-    public TaskDTOModule<?, ?> 
deleteMailsFromMailQueueTask(MailQueueFactory<?> mailQueueFactory) {
-        return 
DeleteMailsFromMailQueueTaskDTO.module((MailQueueFactory<ManageableMailQueue>) 
mailQueueFactory);
+    public TaskDTOModule<?, ?> deleteMailsFromMailQueueTask(MailQueueFactory<? 
extends ManageableMailQueue> mailQueueFactory) {
+        return DeleteMailsFromMailQueueTaskDTO.module(mailQueueFactory);
     }
 
     @ProvidesIntoSet
diff --git 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
index 43e3959..8af5b16 100644
--- 
a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
+++ 
b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
@@ -20,6 +20,7 @@
 package org.apache.james.modules.server;
 
 import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.queue.api.ManageableMailQueue;
 import org.apache.james.queue.memory.MemoryMailQueueFactory;
 
 import com.google.inject.AbstractModule;
@@ -35,7 +36,13 @@ public class MemoryMailQueueModule extends AbstractModule {
 
     @Provides
     @Singleton
-    public MailQueueFactory<?> 
createActiveMailQueueFactory(MemoryMailQueueFactory memoryMailQueueFactory) {
+    public MailQueueFactory<? extends ManageableMailQueue> 
provideManageableMailQueueFactory(MemoryMailQueueFactory 
memoryMailQueueFactory) {
+        return memoryMailQueueFactory;
+    }
+
+    @Provides
+    @Singleton
+    public MailQueueFactory<?> provideMailQueueFactory(MemoryMailQueueFactory 
memoryMailQueueFactory) {
         return memoryMailQueueFactory;
     }
 }
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 16a168e..bdb9f70 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
@@ -33,6 +33,8 @@ import org.apache.james.backends.rabbitmq.SimpleChannelPool;
 import org.apache.james.core.healthcheck.HealthCheck;
 import org.apache.james.eventsourcing.eventstore.cassandra.dto.EventDTOModule;
 import org.apache.james.queue.api.MailQueueFactory;
+import org.apache.james.queue.api.ManageableMailQueue;
+import org.apache.james.queue.rabbitmq.RabbitMQMailQueue;
 import org.apache.james.queue.rabbitmq.RabbitMQMailQueueFactory;
 import org.apache.james.queue.rabbitmq.view.RabbitMQMailQueueConfiguration;
 import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
@@ -87,13 +89,25 @@ public class RabbitMQModule extends AbstractModule {
 
     @Provides
     @Singleton
-    public MailQueueView.Factory 
bindMailQueueViewFactory(CassandraMailQueueView.Factory 
cassandraMailQueueViewFactory) {
+    public MailQueueView.Factory 
provideMailQueueViewFactory(CassandraMailQueueView.Factory 
cassandraMailQueueViewFactory) {
         return cassandraMailQueueViewFactory;
     }
 
     @Provides
     @Singleton
-    public MailQueueFactory<?> 
bindRabbitMQQueueFactory(RabbitMQMailQueueFactory queueFactory) {
+    public MailQueueFactory<RabbitMQMailQueue> 
provideRabbitMQMailQueueFactoryProxy(RabbitMQMailQueueFactory queueFactory) {
+        return queueFactory;
+    }
+
+    @Provides
+    @Singleton
+    public MailQueueFactory<? extends ManageableMailQueue> 
provideRabbitMQManageableMailQueueFactory(MailQueueFactory<RabbitMQMailQueue> 
queueFactory) {
+        return queueFactory;
+    }
+
+    @Provides
+    @Singleton
+    public MailQueueFactory<?> 
provideRabbitMQMailQueueFactory(MailQueueFactory<RabbitMQMailQueue> 
queueFactory) {
         return queueFactory;
     }
 
diff --git 
a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java
 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java
index 1776162..cd1631f 100644
--- 
a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java
+++ 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/routes/MailQueueRoutes.java
@@ -90,16 +90,16 @@ public class MailQueueRoutes implements Routes {
     private static final String NAME_QUERY_PARAM = "name";
     private static final String RECIPIENT_QUERY_PARAM = "recipient";
     
-    private final MailQueueFactory<ManageableMailQueue> mailQueueFactory;
+    private final MailQueueFactory<? extends ManageableMailQueue> 
mailQueueFactory;
     private final JsonTransformer jsonTransformer;
     private final JsonExtractor<ForceDelivery> jsonExtractor;
     private final TaskManager taskManager;
 
     @Inject
     @SuppressWarnings("unchecked")
-    @VisibleForTesting MailQueueRoutes(MailQueueFactory<?> mailQueueFactory, 
JsonTransformer jsonTransformer,
+    @VisibleForTesting MailQueueRoutes(MailQueueFactory<? extends 
ManageableMailQueue> mailQueueFactory, JsonTransformer jsonTransformer,
                                        TaskManager taskManager) {
-        this.mailQueueFactory = (MailQueueFactory<ManageableMailQueue>) 
mailQueueFactory;
+        this.mailQueueFactory = mailQueueFactory;
         this.jsonTransformer = jsonTransformer;
         this.jsonExtractor = new JsonExtractor<>(ForceDelivery.class);
         this.taskManager = taskManager;
diff --git 
a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTaskDTO.java
 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTaskDTO.java
index 1418d3e..8ba59f4 100644
--- 
a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTaskDTO.java
+++ 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTaskDTO.java
@@ -28,7 +28,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class ClearMailQueueTaskDTO implements TaskDTO {
 
-    public static TaskDTOModule<ClearMailQueueTask, ClearMailQueueTaskDTO> 
module(MailQueueFactory<ManageableMailQueue> mailQueueFactory) {
+    public static TaskDTOModule<ClearMailQueueTask, ClearMailQueueTaskDTO> 
module(MailQueueFactory<? extends ManageableMailQueue> mailQueueFactory) {
         return DTOModule
             .forDomainObject(ClearMailQueueTask.class)
             .convertToDTO(ClearMailQueueTaskDTO.class)
@@ -50,7 +50,7 @@ public class ClearMailQueueTaskDTO implements TaskDTO {
         this.queue = queue;
     }
 
-    public ClearMailQueueTask fromDTO(MailQueueFactory<ManageableMailQueue> 
mailQueueFactory) {
+    public ClearMailQueueTask fromDTO(MailQueueFactory<? extends 
ManageableMailQueue> mailQueueFactory) {
         return new 
ClearMailQueueTask(mailQueueFactory.getQueue(queue).orElseThrow(() -> new 
ClearMailQueueTask.UnknownSerializedQueue(queue)));
     }
 
diff --git 
a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskDTO.java
 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskDTO.java
index 40d5e07..e5dfa9e 100644
--- 
a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskDTO.java
+++ 
b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTaskDTO.java
@@ -14,7 +14,7 @@ import com.github.fge.lambdas.Throwing;
 
 public class DeleteMailsFromMailQueueTaskDTO implements TaskDTO {
 
-    public static TaskDTOModule<DeleteMailsFromMailQueueTask, 
DeleteMailsFromMailQueueTaskDTO> module(MailQueueFactory<ManageableMailQueue> 
mailQueueFactory) {
+    public static TaskDTOModule<DeleteMailsFromMailQueueTask, 
DeleteMailsFromMailQueueTaskDTO> module(MailQueueFactory<? extends 
ManageableMailQueue> mailQueueFactory) {
         return DTOModule
             .forDomainObject(DeleteMailsFromMailQueueTask.class)
             .convertToDTO(DeleteMailsFromMailQueueTaskDTO.class)
@@ -52,7 +52,7 @@ public class DeleteMailsFromMailQueueTaskDTO implements 
TaskDTO {
         this.recipient = recipient;
     }
 
-    public DeleteMailsFromMailQueueTask 
fromDTO(MailQueueFactory<ManageableMailQueue> mailQueueFactory) {
+    public DeleteMailsFromMailQueueTask fromDTO(MailQueueFactory<? extends 
ManageableMailQueue> mailQueueFactory) {
         return new DeleteMailsFromMailQueueTask(
             mailQueueFactory.getQueue(queue).orElseThrow(() -> new 
DeleteMailsFromMailQueueTask.UnknownSerializedQueue(queue)),
             sender.map(Throwing.<String, 
MailAddress>function(MailAddress::new).sneakyThrow()),


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

Reply via email to