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 ma...@apache.org on 2020/03/17 09:35:35 UTC

[james-project] 02/04: JAMES-3070 listCreatedMailQueues should only return queue names

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

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

commit 30f8ecd4c257600a1bc4b41948e7a65d31d0cfa4
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Wed Feb 19 16:45:22 2020 +0100

    JAMES-3070 listCreatedMailQueues should only return queue names
---
 .../methods/integration/SetMessagesOutboxFlagUpdateTest.java  |  2 +-
 .../org/apache/james/webadmin/routes/MailQueueRoutes.java     |  7 +------
 .../java/org/apache/james/queue/api/MailQueueFactory.java     |  2 +-
 .../org/apache/james/queue/api/MailQueueFactoryContract.java  |  5 +----
 .../org/apache/james/queue/file/FileMailQueueFactory.java     | 11 +++++++----
 .../apache/james/queue/library/AbstractMailQueueFactory.java  |  9 ++++++---
 .../org/apache/james/queue/memory/MemoryMailQueueFactory.java |  9 +++++----
 .../apache/james/queue/rabbitmq/RabbitMQMailQueueFactory.java |  6 ++----
 8 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
index db8ea1e..00dcf07 100644
--- a/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
+++ b/server/protocols/jmap-draft-integration-testing/jmap-draft-integration-testing-common/src/test/java/org/apache/james/jmap/draft/methods/integration/SetMessagesOutboxFlagUpdateTest.java
@@ -105,7 +105,7 @@ public abstract class SetMessagesOutboxFlagUpdateTest {
         }
 
         @Override
-        public Set<MailQueue> listCreatedMailQueues() {
+        public Set<String> listCreatedMailQueues() {
             throw new NotImplementedException("Minimalistic implementation. Please do not list queues");
         }
     };
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 0338071..1764b6a 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
@@ -135,12 +135,7 @@ public class MailQueueRoutes implements Routes {
     })
     public void defineListQueues(Service service) {
         service.get(BASE_URL,
-            (request, response) ->
-                mailQueueFactory
-                    .listCreatedMailQueues()
-                    .stream()
-                    .map(ManageableMailQueue::getName)
-                    .collect(Guavate.toImmutableList()),
+            (request, response) -> mailQueueFactory.listCreatedMailQueues(),
             jsonTransformer);
     }
 
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 125dd5b..09850b3 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
@@ -42,5 +42,5 @@ public interface MailQueueFactory<T extends MailQueue> {
 
     T createQueue(String name);
 
-    Set<T> listCreatedMailQueues();
+    Set<String> listCreatedMailQueues();
 }
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 dd3bd0d..20d99a6 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
@@ -43,9 +43,7 @@ public interface MailQueueFactoryContract<T extends MailQueue> {
         mailQueueFactory.createQueue(NAME_1);
         mailQueueFactory.createQueue(NAME_2);
 
-        assertThat(mailQueueFactory.listCreatedMailQueues())
-            .extracting(MailQueue::getName)
-            .containsOnly(NAME_1, NAME_2);
+        assertThat(mailQueueFactory.listCreatedMailQueues()).containsOnly(NAME_1, NAME_2);
     }
 
     @Test
@@ -56,7 +54,6 @@ public interface MailQueueFactoryContract<T extends MailQueue> {
         mailQueueFactory.createQueue(NAME_1);
 
         assertThat(mailQueueFactory.listCreatedMailQueues())
-            .extracting(MailQueue::getName)
             .containsOnly(NAME_1);
     }
 
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 623e1e0..663272a 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
@@ -19,7 +19,6 @@
 package org.apache.james.queue.file;
 
 import java.io.IOException;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
@@ -28,11 +27,12 @@ import java.util.concurrent.ConcurrentHashMap;
 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;
+import com.github.steveash.guavate.Guavate;
 
 /**
  * {@link MailQueueFactory} implementation which returns {@link FileCacheableMailQueue} instances
@@ -55,8 +55,11 @@ public class FileMailQueueFactory implements MailQueueFactory<ManageableMailQueu
     }
 
     @Override
-    public Set<ManageableMailQueue> listCreatedMailQueues() {
-        return ImmutableSet.copyOf(queues.values());
+    public Set<String> listCreatedMailQueues() {
+        return queues.values()
+            .stream()
+            .map(MailQueue::getName)
+            .collect(Guavate.toImmutableSet());
     }
 
     /**
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 fdd4b86..7d41b75 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
@@ -39,8 +39,8 @@ import org.apache.james.queue.api.ManageableMailQueue;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.ImmutableSet;
 
 /**
  * {@link MailQueueFactory} abstract base class which take care of register the
@@ -71,8 +71,11 @@ public abstract class AbstractMailQueueFactory<T extends MailQueue> implements M
     }
 
     @Override
-    public Set<T> listCreatedMailQueues() {
-        return ImmutableSet.copyOf(queues.values());
+    public Set<String> listCreatedMailQueues() {
+        return queues.values()
+            .stream()
+            .map(MailQueue::getName)
+            .collect(Guavate.toImmutableSet());
     }
 
     @PreDestroy
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 4aa75ec..6c3d8f3 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
@@ -19,7 +19,6 @@
 
 package org.apache.james.queue.memory;
 
-import java.io.IOException;
 import java.time.DateTimeException;
 import java.time.Duration;
 import java.time.Instant;
@@ -52,7 +51,6 @@ import com.github.fge.lambdas.Throwing;
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 
 import reactor.core.publisher.Flux;
@@ -71,8 +69,11 @@ public class MemoryMailQueueFactory implements MailQueueFactory<ManageableMailQu
     }
 
     @Override
-    public Set<ManageableMailQueue> listCreatedMailQueues() {
-        return ImmutableSet.copyOf(mailQueues.values());
+    public Set<String> listCreatedMailQueues() {
+        return mailQueues.values()
+            .stream()
+            .map(MemoryCacheableMailQueue::getName)
+            .collect(Guavate.toImmutableSet());
     }
 
     @Override
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 57bde2f..cc328c0 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
@@ -45,7 +45,6 @@ import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.queue.api.MailQueueItemDecoratorFactory;
 import org.apache.james.queue.rabbitmq.view.RabbitMQMailQueueConfiguration;
 import org.apache.james.queue.rabbitmq.view.api.MailQueueView;
-import org.apache.james.util.OptionalUtils;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.annotations.VisibleForTesting;
@@ -146,10 +145,9 @@ public class RabbitMQMailQueueFactory implements MailQueueFactory<RabbitMQMailQu
     }
 
     @Override
-    public Set<RabbitMQMailQueue> listCreatedMailQueues() {
-        //TODO: it creates connections and leak them
+    public Set<String> listCreatedMailQueues() {
         return mqManagementApi.listCreatedMailQueueNames()
-            .flatMap(name -> OptionalUtils.toStream(getQueue(name.asString())))
+            .map(MailQueueName::asString)
             .collect(ImmutableSet.toImmutableSet());
     }
 


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