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 rc...@apache.org on 2020/05/13 02:03:28 UTC

[james-project] 07/09: [Refactoring] Rely on publishIfPresent when mapping null values

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

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

commit 9215920572977fff8f9614e6b495c4a3ff66dd70
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri May 8 06:21:14 2020 +0200

    [Refactoring] Rely on publishIfPresent when mapping null values
---
 .../org/apache/james/backends/rabbitmq/SimpleConnectionPool.java | 5 +++--
 .../mailbox/cassandra/quota/CassandraGlobalMaxQuotaDao.java      | 9 ++++++---
 .../mailbox/cassandra/quota/CassandraPerDomainMaxQuotaDao.java   | 9 ++++++---
 .../mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java     | 9 ++++++---
 .../util/src/main/java/org/apache/james/util/ReactorUtils.java   | 5 -----
 5 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleConnectionPool.java b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleConnectionPool.java
index 97ebfbe..d408666 100644
--- a/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleConnectionPool.java
+++ b/backends-common/rabbitmq/src/main/java/org/apache/james/backends/rabbitmq/SimpleConnectionPool.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.backends.rabbitmq;
 
-import static org.apache.james.util.ReactorUtils.transformAndPublishIfNotNull;
+import static org.apache.james.util.ReactorUtils.publishIfPresent;
 
 import java.io.IOException;
 import java.time.Duration;
@@ -91,7 +91,8 @@ public class SimpleConnectionPool implements AutoCloseable {
     public Mono<RabbitMQServerVersion> version() {
         return getOpenConnection()
             .map(Connection::getServerProperties)
-            .handle(transformAndPublishIfNotNull(serverProperties -> serverProperties.get("version")))
+            .map(serverProperties -> Optional.ofNullable(serverProperties.get("version")))
+            .handle(publishIfPresent())
             .map(Object::toString)
             .map(RabbitMQServerVersion::of)
             .timeout(Duration.ofSeconds(1))
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraGlobalMaxQuotaDao.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraGlobalMaxQuotaDao.java
index 03d4e54..ae8684e 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraGlobalMaxQuotaDao.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraGlobalMaxQuotaDao.java
@@ -25,7 +25,8 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
 import static org.apache.james.util.ReactorUtils.publishIfPresent;
-import static org.apache.james.util.ReactorUtils.transformAndPublishIfNotNull;
+
+import java.util.Optional;
 
 import javax.inject.Inject;
 
@@ -94,7 +95,8 @@ public class CassandraGlobalMaxQuotaDao {
     Mono<QuotaSizeLimit> getGlobalMaxStorage() {
         return queryExecutor.executeSingleRow(getGlobalMaxStatement.bind()
                 .setString(CassandraGlobalMaxQuota.TYPE, CassandraGlobalMaxQuota.STORAGE))
-            .handle(transformAndPublishIfNotNull(row -> row.get(CassandraGlobalMaxQuota.VALUE, Long.class)))
+            .map(row -> Optional.ofNullable(row.get(CassandraGlobalMaxQuota.VALUE, Long.class)))
+            .handle(publishIfPresent())
             .map(QuotaCodec::longToQuotaSize)
             .handle(publishIfPresent());
     }
@@ -102,7 +104,8 @@ public class CassandraGlobalMaxQuotaDao {
     Mono<QuotaCountLimit> getGlobalMaxMessage() {
         return queryExecutor.executeSingleRow(getGlobalMaxStatement.bind()
             .setString(CassandraGlobalMaxQuota.TYPE, CassandraGlobalMaxQuota.MESSAGE))
-            .handle(transformAndPublishIfNotNull(row -> row.get(CassandraGlobalMaxQuota.VALUE, Long.class)))
+            .map(row -> Optional.ofNullable(row.get(CassandraGlobalMaxQuota.VALUE, Long.class)))
+            .handle(publishIfPresent())
             .map(QuotaCodec::longToQuotaCount)
             .handle(publishIfPresent());
     }
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerDomainMaxQuotaDao.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerDomainMaxQuotaDao.java
index 102d793..bc88058 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerDomainMaxQuotaDao.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerDomainMaxQuotaDao.java
@@ -25,7 +25,8 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
 import static org.apache.james.util.ReactorUtils.publishIfPresent;
-import static org.apache.james.util.ReactorUtils.transformAndPublishIfNotNull;
+
+import java.util.Optional;
 
 import javax.inject.Inject;
 
@@ -110,14 +111,16 @@ public class CassandraPerDomainMaxQuotaDao {
 
     Mono<QuotaSizeLimit> getMaxStorage(Domain domain) {
         return queryExecutor.executeSingleRow(getMaxStorageStatement.bind(domain.asString()))
-            .handle(transformAndPublishIfNotNull(row -> row.get(CassandraDomainMaxQuota.STORAGE, Long.class)))
+            .map(row -> Optional.ofNullable(row.get(CassandraDomainMaxQuota.STORAGE, Long.class)))
+            .handle(publishIfPresent())
             .map(QuotaCodec::longToQuotaSize)
             .handle(publishIfPresent());
     }
 
     Mono<QuotaCountLimit> getMaxMessage(Domain domain) {
         return queryExecutor.executeSingleRow(getMaxMessageStatement.bind(domain.asString()))
-            .handle(transformAndPublishIfNotNull(row -> row.get(CassandraDomainMaxQuota.MESSAGE_COUNT, Long.class)))
+            .map(row -> Optional.ofNullable(row.get(CassandraDomainMaxQuota.MESSAGE_COUNT, Long.class)))
+            .handle(publishIfPresent())
             .map(QuotaCodec::longToQuotaCount)
             .handle(publishIfPresent());
     }
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java
index 4abe876..9085623 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaDao.java
@@ -25,7 +25,8 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
 import static org.apache.james.util.ReactorUtils.publishIfPresent;
-import static org.apache.james.util.ReactorUtils.transformAndPublishIfNotNull;
+
+import java.util.Optional;
 
 import javax.inject.Inject;
 
@@ -110,14 +111,16 @@ public class CassandraPerUserMaxQuotaDao {
 
     Mono<QuotaSizeLimit> getMaxStorage(QuotaRoot quotaRoot) {
         return queryExecutor.executeSingleRow(getMaxStorageStatement.bind(quotaRoot.getValue()))
-            .handle(transformAndPublishIfNotNull(row -> row.get(CassandraMaxQuota.STORAGE, Long.class)))
+            .map(row -> Optional.ofNullable(row.get(CassandraMaxQuota.STORAGE, Long.class)))
+            .handle(publishIfPresent())
             .map(QuotaCodec::longToQuotaSize)
             .handle(publishIfPresent());
     }
 
     Mono<QuotaCountLimit> getMaxMessage(QuotaRoot quotaRoot) {
         return queryExecutor.executeSingleRow(getMaxMessageStatement.bind(quotaRoot.getValue()))
-            .handle(transformAndPublishIfNotNull(row -> row.get(CassandraMaxQuota.MESSAGE_COUNT, Long.class)))
+            .map(row -> Optional.ofNullable(row.get(CassandraMaxQuota.MESSAGE_COUNT, Long.class)))
+            .handle(publishIfPresent())
             .map(QuotaCodec::longToQuotaCount)
             .handle(publishIfPresent());
     }
diff --git a/server/container/util/src/main/java/org/apache/james/util/ReactorUtils.java b/server/container/util/src/main/java/org/apache/james/util/ReactorUtils.java
index 7fb5d5a..a477355 100644
--- a/server/container/util/src/main/java/org/apache/james/util/ReactorUtils.java
+++ b/server/container/util/src/main/java/org/apache/james/util/ReactorUtils.java
@@ -26,7 +26,6 @@ import java.util.Iterator;
 import java.util.Optional;
 import java.util.function.BiConsumer;
 import java.util.function.Consumer;
-import java.util.function.Function;
 
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
@@ -46,10 +45,6 @@ public class ReactorUtils {
         return (element, sink) -> element.ifPresent(sink::next);
     }
 
-    public static <T, U> BiConsumer<U, SynchronousSink<T>> transformAndPublishIfNotNull(Function<U, T> mapper) {
-        return (element, sink) -> Optional.ofNullable(mapper.apply(element)).ifPresent(sink::next);
-    }
-
     public static InputStream toInputStream(Flux<ByteBuffer> byteArrays) {
         return new StreamInputStream(byteArrays.toIterable(1).iterator());
     }


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