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 ro...@apache.org on 2018/01/23 16:54:30 UTC

[06/10] james-project git commit: JAMES-2292 MailQueueFactory should tell if the queues are manageable

JAMES-2292 MailQueueFactory should tell if the queues are manageable


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e1446527
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e1446527
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e1446527

Branch: refs/heads/master
Commit: e144652700af6fe2db79e98c78f1f81db29471d0
Parents: e67e485
Author: Antoine Duprat <ad...@linagora.com>
Authored: Tue Jan 23 13:40:17 2018 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Tue Jan 23 14:03:19 2018 +0100

----------------------------------------------------------------------
 .../james/modules/server/MemoryMailQueueModule.java     | 11 ++++++++---
 .../james/queue/activemq/ActiveMQMailQueueFactory.java  |  2 +-
 .../queue/activemq/ActiveMQMailQueueFactoryTest.java    |  9 +++++----
 .../org/apache/james/queue/api/MailQueueFactory.java    |  6 +++---
 .../james/queue/api/MailQueueFactoryContract.java       |  4 ++--
 .../apache/james/queue/file/FileMailQueueFactory.java   | 12 ++++++------
 .../james/queue/file/FileMailQueueFactoryTest.java      |  2 +-
 .../org/apache/james/queue/jms/JMSMailQueueFactory.java |  3 ++-
 .../james/queue/library/AbstractMailQueueFactory.java   | 10 +++++-----
 .../apache/james/queue/jms/JMSMailQueueFactoryTest.java |  9 +++++----
 .../queue/library/AbstractMailQueueFactoryTest.java     |  2 +-
 .../james/queue/memory/MemoryMailQueueFactory.java      |  6 +++---
 12 files changed, 42 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueModule.java
----------------------------------------------------------------------
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 c7efca5..43e3959 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
@@ -23,14 +23,19 @@ import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.memory.MemoryMailQueueFactory;
 
 import com.google.inject.AbstractModule;
-import com.google.inject.Scopes;
+import com.google.inject.Provides;
+import com.google.inject.Singleton;
 
 public class MemoryMailQueueModule extends AbstractModule {
 
     @Override
     protected void configure() {
-        bind(MemoryMailQueueFactory.class).in(Scopes.SINGLETON);
 
-        bind(MailQueueFactory.class).to(MemoryMailQueueFactory.class);
+    }
+
+    @Provides
+    @Singleton
+    public MailQueueFactory<?> createActiveMailQueueFactory(MemoryMailQueueFactory memoryMailQueueFactory) {
+        return memoryMailQueueFactory;
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
index 104dd0c..8512d49 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactory.java
@@ -22,9 +22,9 @@ import javax.inject.Inject;
 import javax.jms.ConnectionFactory;
 
 import org.apache.james.metrics.api.MetricFactory;
-import org.apache.james.queue.api.MailQueue;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
+import org.apache.james.queue.api.ManageableMailQueue;
 import org.apache.james.queue.jms.JMSMailQueueFactory;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactoryTest.java b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactoryTest.java
index 0af1569..37c9c85 100644
--- a/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactoryTest.java
+++ b/server/queue/queue-activemq/src/test/java/org/apache/james/queue/activemq/ActiveMQMailQueueFactoryTest.java
@@ -26,6 +26,7 @@ import org.apache.activemq.broker.BrokerService;
 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.ManageableMailQueue;
 import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
 import org.apache.james.queue.jms.BrokerExtension;
 import org.junit.jupiter.api.AfterEach;
@@ -33,12 +34,12 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(BrokerExtension.class)
-public class ActiveMQMailQueueFactoryTest implements MailQueueFactoryContract {
+public class ActiveMQMailQueueFactoryTest implements MailQueueFactoryContract<ManageableMailQueue> {
 
     private ActiveMQMailQueueFactory mailQueueFactory;
 
     @BeforeEach
-    public void setUp(BrokerService brokerService) throws Exception {
+    public void setUp(BrokerService brokerService) {
         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?create=false");
         RawMailQueueItemDecoratorFactory mailQueueItemDecoratorFactory = new RawMailQueueItemDecoratorFactory();
         NoopMetricFactory metricFactory = new NoopMetricFactory();
@@ -47,12 +48,12 @@ public class ActiveMQMailQueueFactoryTest implements MailQueueFactoryContract {
     }
 
     @AfterEach
-    public void tearDown() throws Exception {
+    public void tearDown() {
         mailQueueFactory.destroy();
     }
 
     @Override
-    public MailQueueFactory getMailQueueFactory() {
+    public MailQueueFactory<ManageableMailQueue> getMailQueueFactory() {
         return mailQueueFactory;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-api/src/main/java/org/apache/james/queue/api/MailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-api/src/main/java/org/apache/james/queue/api/MailQueueFactory.java b/server/queue/queue-api/src/main/java/org/apache/james/queue/api/MailQueueFactory.java
index a8253a4..c39d28a 100644
--- a/server/queue/queue-api/src/main/java/org/apache/james/queue/api/MailQueueFactory.java
+++ b/server/queue/queue-api/src/main/java/org/apache/james/queue/api/MailQueueFactory.java
@@ -24,7 +24,7 @@ import java.util.Set;
 /**
  * Factory for {@link MailQueue}
  */
-public interface MailQueueFactory {
+public interface MailQueueFactory<T extends MailQueue> {
 
     /**
      * {@link MailQueue} which is used for spooling the messages
@@ -37,7 +37,7 @@ public interface MailQueueFactory {
      * @param name
      * @return queue
      */
-    MailQueue getQueue(String name);
+    T getQueue(String name);
 
-    Set<MailQueue> listCreatedMailQueues();
+    Set<T> listCreatedMailQueues();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryContract.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryContract.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryContract.java
index 4196e44..93c2e18 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryContract.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueFactoryContract.java
@@ -23,12 +23,12 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.junit.jupiter.api.Test;
 
-public interface MailQueueFactoryContract {
+public interface MailQueueFactoryContract<T extends MailQueue> {
 
     String NAME_1 = "name1";
     String NAME_2 = "name2";
 
-    MailQueueFactory getMailQueueFactory();
+    MailQueueFactory<T> getMailQueueFactory();
 
     @Test
     default void getUsedMailQueuesShouldReturnWhenNoMailQueue() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueueFactory.java b/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueueFactory.java
index 5c67acd..8c18e30 100644
--- a/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueueFactory.java
+++ b/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueueFactory.java
@@ -26,18 +26,18 @@ import java.util.Set;
 import javax.inject.Inject;
 
 import org.apache.james.filesystem.api.FileSystem;
-import org.apache.james.queue.api.MailQueue;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
+import org.apache.james.queue.api.ManageableMailQueue;
 
 import com.google.common.collect.ImmutableSet;
 
 /**
  * {@link MailQueueFactory} implementation which returns {@link FileMailQueue} instances
  */
-public class FileMailQueueFactory implements MailQueueFactory {
+public class FileMailQueueFactory implements MailQueueFactory<ManageableMailQueue> {
 
-    private final Map<String, MailQueue> queues = new HashMap<>();
+    private final Map<String, ManageableMailQueue> queues = new HashMap<>();
     private MailQueueItemDecoratorFactory mailQueueActionItemDecoratorFactory;
     private FileSystem fs;
     private boolean sync = true;
@@ -49,7 +49,7 @@ public class FileMailQueueFactory implements MailQueueFactory {
     }
 
     @Override
-    public Set<MailQueue> listCreatedMailQueues() {
+    public Set<ManageableMailQueue> listCreatedMailQueues() {
         return ImmutableSet.copyOf(queues.values());
     }
 
@@ -66,8 +66,8 @@ public class FileMailQueueFactory implements MailQueueFactory {
     }
 
     @Override
-    public MailQueue getQueue(String name) {
-        MailQueue queue = queues.get(name);
+    public ManageableMailQueue getQueue(String name) {
+        ManageableMailQueue queue = queues.get(name);
         if (queue == null) {
             synchronized (queues) {
                 try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueFactoryTest.java b/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueFactoryTest.java
index a6e5c0d..e953d32 100644
--- a/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueFactoryTest.java
+++ b/server/queue/queue-file/src/test/java/org/apache/james/queue/file/FileMailQueueFactoryTest.java
@@ -42,7 +42,7 @@ public class FileMailQueueFactoryTest implements MailQueueFactoryContract {
     }
 
     @Override
-    public MailQueueFactory getMailQueueFactory() {
+    public MailQueueFactory<ManageableMailQueue> getMailQueueFactory() {
         return mailQueueFactory;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
index 823869a..6329ffc 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueueFactory.java
@@ -25,12 +25,13 @@ import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.queue.api.MailQueue;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
+import org.apache.james.queue.api.ManageableMailQueue;
 import org.apache.james.queue.library.AbstractMailQueueFactory;
 
 /**
  * {@link MailQueueFactory} implementation which use JMS
  */
-public class JMSMailQueueFactory extends AbstractMailQueueFactory {
+public class JMSMailQueueFactory extends AbstractMailQueueFactory<ManageableMailQueue> {
 
     protected final ConnectionFactory connectionFactory;
     protected final MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory;

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-jms/src/main/java/org/apache/james/queue/library/AbstractMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/library/AbstractMailQueueFactory.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/library/AbstractMailQueueFactory.java
index 9370848..ec3537f 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/library/AbstractMailQueueFactory.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/library/AbstractMailQueueFactory.java
@@ -45,12 +45,12 @@ import com.google.common.collect.ImmutableSet;
  * {@link MailQueueFactory} abstract base class which take care of register the
  * {@link MailQueue} implementations via JMX (if possible)
  */
-public abstract class AbstractMailQueueFactory implements MailQueueFactory {
+public abstract class AbstractMailQueueFactory<T extends MailQueue> implements MailQueueFactory<T> {
     private static final Logger LOGGER = LoggerFactory.getLogger(AbstractMailQueueFactory.class);
 
     public static final String MBEAN_NAME_QUEUE_PREFIX = "org.apache.james:type=component,name=queue,queue=";
 
-    protected final Map<String, MailQueue> queues = new HashMap<>();
+    protected final Map<String, T> queues = new HashMap<>();
     private boolean useJMX = true;
     private MBeanServer mbeanServer;
     private final List<String> mbeans = new ArrayList<>();
@@ -70,7 +70,7 @@ public abstract class AbstractMailQueueFactory implements MailQueueFactory {
     }
 
     @Override
-    public Set<MailQueue> listCreatedMailQueues() {
+    public Set<T> listCreatedMailQueues() {
         return ImmutableSet.copyOf(queues.values());
     }
 
@@ -91,9 +91,9 @@ public abstract class AbstractMailQueueFactory implements MailQueueFactory {
     }
 
     @Override
-    public final synchronized MailQueue getQueue(String name) {
+    public final synchronized T getQueue(String name) {
         
-        MailQueue queue = queues.get(name);
+        T queue = queues.get(name);
 
         if (queue == null) {
             queue = createMailQueue(name);

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueFactoryTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueFactoryTest.java
index 98b9ac1..5e064c9 100644
--- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueFactoryTest.java
+++ b/server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueFactoryTest.java
@@ -26,6 +26,7 @@ import org.apache.activemq.broker.BrokerService;
 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.ManageableMailQueue;
 import org.apache.james.queue.api.RawMailQueueItemDecoratorFactory;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -33,12 +34,12 @@ import org.junit.jupiter.api.extension.ExtendWith;
 
 
 @ExtendWith(BrokerExtension.class)
-public class JMSMailQueueFactoryTest implements MailQueueFactoryContract {
+public class JMSMailQueueFactoryTest implements MailQueueFactoryContract<ManageableMailQueue> {
 
     private JMSMailQueueFactory mailQueueFactory;
 
     @BeforeEach
-    public void setUp(BrokerService broker) throws Exception {
+    void setUp(BrokerService broker) {
         ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?create=false");
         RawMailQueueItemDecoratorFactory mailQueueItemDecoratorFactory = new RawMailQueueItemDecoratorFactory();
         NoopMetricFactory metricFactory = new NoopMetricFactory();
@@ -47,12 +48,12 @@ public class JMSMailQueueFactoryTest implements MailQueueFactoryContract {
     }
 
     @AfterEach
-    public void tearDown() throws Exception {
+    void tearDown() {
         mailQueueFactory.destroy();
     }
 
     @Override
-    public MailQueueFactory getMailQueueFactory() {
+    public MailQueueFactory<ManageableMailQueue> getMailQueueFactory() {
         return mailQueueFactory;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-jms/src/test/java/org/apache/james/queue/library/AbstractMailQueueFactoryTest.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/test/java/org/apache/james/queue/library/AbstractMailQueueFactoryTest.java b/server/queue/queue-jms/src/test/java/org/apache/james/queue/library/AbstractMailQueueFactoryTest.java
index 14990ed..500a0cd 100644
--- a/server/queue/queue-jms/src/test/java/org/apache/james/queue/library/AbstractMailQueueFactoryTest.java
+++ b/server/queue/queue-jms/src/test/java/org/apache/james/queue/library/AbstractMailQueueFactoryTest.java
@@ -48,7 +48,7 @@ public class AbstractMailQueueFactoryTest {
     @Before
     public void setUp() {
         mBeanServer = mock(MBeanServer.class);
-        abstractMailQueueFactory = new AbstractMailQueueFactory() {
+        abstractMailQueueFactory = new AbstractMailQueueFactory<MailQueue>() {
             @Override
             protected MailQueue createMailQueue(String name) {
                 return new ManageableMailQueue() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/e1446527/server/queue/queue-memory/src/main/java/org/apache/james/queue/memory/MemoryMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-memory/src/main/java/org/apache/james/queue/memory/MemoryMailQueueFactory.java b/server/queue/queue-memory/src/main/java/org/apache/james/queue/memory/MemoryMailQueueFactory.java
index 716d472..b4322e4 100644
--- a/server/queue/queue-memory/src/main/java/org/apache/james/queue/memory/MemoryMailQueueFactory.java
+++ b/server/queue/queue-memory/src/main/java/org/apache/james/queue/memory/MemoryMailQueueFactory.java
@@ -46,9 +46,9 @@ import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
-public class MemoryMailQueueFactory implements MailQueueFactory {
+public class MemoryMailQueueFactory implements MailQueueFactory<ManageableMailQueue> {
 
-    private final ConcurrentHashMap<String, MailQueue> mailQueues;
+    private final ConcurrentHashMap<String, MemoryMailQueueFactory.MemoryMailQueue> mailQueues;
     private final MailQueueItemDecoratorFactory mailQueueItemDecoratorFactory;
 
     @Inject
@@ -58,7 +58,7 @@ public class MemoryMailQueueFactory implements MailQueueFactory {
     }
 
     @Override
-    public Set<MailQueue> listCreatedMailQueues() {
+    public Set<ManageableMailQueue> listCreatedMailQueues() {
         return ImmutableSet.copyOf(mailQueues.values());
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org