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