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 bt...@apache.org on 2020/04/24 02:59:50 UTC

[james-project] 15/17: [Refactoring] make use of Optional::or to replace some OptionalUtils.orSuppliers calls

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

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

commit 52871e49331c8c156ef86f7eead85c600334f6fb
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Tue Apr 21 21:42:52 2020 +0200

    [Refactoring] make use of Optional::or to replace some OptionalUtils.orSuppliers calls
---
 .../java/org/apache/james/util/OptionalUtils.java  | 15 ------
 .../org/apache/james/util/OptionalUtilsTest.java   | 62 ----------------------
 .../org/apache/james/rrt/lib/MappingSource.java    |  8 ++-
 .../cassandra/CassandraRecipientRewriteTable.java  |  8 ++-
 .../apache/james/sieve/jpa/JPASieveRepository.java | 10 ++--
 .../rrt/memory/MemoryRecipientRewriteTable.java    |  6 +--
 .../james/webadmin/service/ClearMailQueueTask.java |  7 +--
 .../service/DeleteMailsFromMailQueueTask.java      |  6 +--
 8 files changed, 16 insertions(+), 106 deletions(-)

diff --git a/server/container/util/src/main/java/org/apache/james/util/OptionalUtils.java b/server/container/util/src/main/java/org/apache/james/util/OptionalUtils.java
index 4bbf09b..8e258e1 100644
--- a/server/container/util/src/main/java/org/apache/james/util/OptionalUtils.java
+++ b/server/container/util/src/main/java/org/apache/james/util/OptionalUtils.java
@@ -18,11 +18,8 @@
  ****************************************************************/
 package org.apache.james.util;
 
-import java.util.Arrays;
 import java.util.Optional;
 import java.util.function.BiPredicate;
-import java.util.function.Supplier;
-import java.util.stream.Stream;
 
 public class OptionalUtils {
 
@@ -38,18 +35,6 @@ public class OptionalUtils {
         return optional;
     }
 
-    @SafeVarargs
-    public static <T> Optional<T> orSuppliers(Supplier<Optional<T>>... suppliers) {
-        return orStream(Arrays.stream(suppliers)
-            .map(Supplier::get));
-    }
-
-    private static <T> Optional<T> orStream(Stream<Optional<T>> stream) {
-        return stream
-            .flatMap(Optional::stream)
-            .findFirst();
-    }
-
     public static <T> boolean containsDifferent(Optional<T> requestValue, T storeValue) {
         return requestValue
             .filter(value -> !value.equals(storeValue))
diff --git a/server/container/util/src/test/java/org/apache/james/util/OptionalUtilsTest.java b/server/container/util/src/test/java/org/apache/james/util/OptionalUtilsTest.java
index c068884..8894523 100644
--- a/server/container/util/src/test/java/org/apache/james/util/OptionalUtilsTest.java
+++ b/server/container/util/src/test/java/org/apache/james/util/OptionalUtilsTest.java
@@ -61,68 +61,6 @@ class OptionalUtilsTest {
     }
 
     @Test
-    void orSuppliersShouldReturnEmptyWhenEmpty() {
-        assertThat(
-            OptionalUtils.orSuppliers(
-                Optional::empty))
-            .isEmpty();
-    }
-
-    @Test
-    void orSuppliersShouldReturnValueWhenValue() {
-        assertThat(
-            OptionalUtils.orSuppliers(
-                () -> Optional.of(1)))
-            .contains(1);
-    }
-
-    @Test
-    void orSuppliersShouldReturnEmptyWhenBothEmpty() {
-        assertThat(
-            OptionalUtils.orSuppliers(
-                () -> Optional.empty(),
-                () -> Optional.empty()))
-            .isEmpty();
-    }
-
-    @Test
-    void orSuppliersShouldReturnFirstValueWhenOnlyFirstValue() {
-        assertThat(
-            OptionalUtils.orSuppliers(
-                () -> Optional.of(18),
-                Optional::empty))
-            .contains(18);
-    }
-
-    @Test
-    void orSuppliersShouldReturnSecondValueWhenOnlySecondValue() {
-        assertThat(
-            OptionalUtils.orSuppliers(
-                Optional::empty,
-                () -> Optional.of(18)))
-            .contains(18);
-    }
-
-    @Test
-    void orSuppliersShouldReturnFirstValueWhenBothValues() {
-        assertThat(
-            OptionalUtils.orSuppliers(
-                () -> Optional.of(1),
-                () -> Optional.of(2)))
-            .contains(1);
-    }
-
-    @Test
-    void orSuppliersShouldReturnThirdValueWhenOnlyThirdValue() {
-        assertThat(
-            OptionalUtils.orSuppliers(
-                Optional::empty,
-                Optional::empty,
-                () -> Optional.of(1)))
-            .contains(1);
-    }
-
-    @Test
     void containsDifferentShouldReturnTrueWhenNullStoreValue() {
         assertThat(OptionalUtils.containsDifferent(Optional.of("any"), null)).isTrue();
     }
diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/MappingSource.java b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/MappingSource.java
index bd0d0a1..6dd6c69 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/MappingSource.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/MappingSource.java
@@ -28,7 +28,6 @@ import javax.mail.internet.AddressException;
 import org.apache.james.core.Domain;
 import org.apache.james.core.MailAddress;
 import org.apache.james.core.Username;
-import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -114,10 +113,9 @@ public class MappingSource implements Serializable {
     }
 
     public String asString() {
-        return OptionalUtils.orSuppliers(
-                () -> wildcard.map(x -> "*"),
-                () -> user.map(Username::asString),
-                () -> domain.map(Domain::asString))
+        return wildcard.map(x -> "*")
+            .or(() -> user.map(Username::asString))
+            .or(() -> domain.map(Domain::asString))
             .orElseThrow(IllegalStateException::new);
     }
 
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
index 8167ace..d8527de 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
@@ -32,7 +32,6 @@ import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.MappingSource;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
-import org.apache.james.util.OptionalUtils;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
@@ -86,10 +85,9 @@ public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTabl
 
     @Override
     protected Mappings mapAddress(String user, Domain domain) {
-        return OptionalUtils.orSuppliers(
-            () -> cassandraRecipientRewriteTableDAO.retrieveMappings(MappingSource.fromUser(user, domain)).blockOptional(),
-            () -> cassandraRecipientRewriteTableDAO.retrieveMappings(MappingSource.fromDomain(domain)).blockOptional())
-                .orElse(MappingsImpl.empty());
+        return cassandraRecipientRewriteTableDAO.retrieveMappings(MappingSource.fromUser(user, domain)).blockOptional()
+            .or(() -> cassandraRecipientRewriteTableDAO.retrieveMappings(MappingSource.fromDomain(domain)).blockOptional())
+            .orElse(MappingsImpl.empty());
     }
 
     @Override
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java b/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java
index a293638..c82213b 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/sieve/jpa/JPASieveRepository.java
@@ -50,7 +50,6 @@ import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 import org.apache.james.sieverepository.api.exception.QuotaNotFoundException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.sieverepository.api.exception.StorageException;
-import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -83,11 +82,10 @@ public class JPASieveRepository implements SieveRepository {
     }
 
     private QuotaSizeLimit limitToUser(Username username) throws StorageException {
-        return OptionalUtils.orSuppliers(
-                Throwing.supplier(() -> findQuotaForUser(username.asString())).sneakyThrow(),
-                Throwing.supplier(() -> findQuotaForUser(DEFAULT_SIEVE_QUOTA_USERNAME)).sneakyThrow())
-                .map(JPASieveQuota::toQuotaSize)
-                .orElse(QuotaSizeLimit.unlimited());
+        return findQuotaForUser(username.asString())
+            .or(Throwing.supplier(() -> findQuotaForUser(DEFAULT_SIEVE_QUOTA_USERNAME)).sneakyThrow())
+            .map(JPASieveQuota::toQuotaSize)
+            .orElse(QuotaSizeLimit.unlimited());
     }
 
     private boolean overQuotaAfterModification(long usedSpace, long size, QuotaSizeLimit quota) {
diff --git a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
index 3c4a282..37f71e0 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
@@ -34,7 +34,6 @@ import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.MappingSource;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
-import org.apache.james.util.OptionalUtils;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Objects;
@@ -101,9 +100,8 @@ public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
 
     @Override
     protected Mappings mapAddress(String user, Domain domain) {
-        return OptionalUtils.orSuppliers(
-            () -> retrieveMappings(MappingSource.fromUser(Username.fromLocalPartWithDomain(user, domain))),
-            () -> retrieveMappings(MappingSource.fromDomain(domain)))
+        return retrieveMappings(MappingSource.fromUser(Username.fromLocalPartWithDomain(user, domain)))
+            .or(() -> retrieveMappings(MappingSource.fromDomain(domain)))
             .orElse(MappingsImpl.empty());
     }
 
diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java
index 96a60be..99672f4 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java
+++ b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/ClearMailQueueTask.java
@@ -30,7 +30,6 @@ import org.apache.james.queue.api.ManageableMailQueue;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.task.TaskType;
-import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -124,10 +123,8 @@ public class ClearMailQueueTask implements Task {
 
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
-        return
-            OptionalUtils.orSuppliers(
-                () -> lastAdditionalInformation,
-                () -> queue.map(q -> new AdditionalInformation(queueName, initialCount.get(), getRemainingSize(q), Clock.systemUTC().instant())));
+        return lastAdditionalInformation
+            .or(() -> queue.map(q -> new AdditionalInformation(queueName, initialCount.get(), getRemainingSize(q), Clock.systemUTC().instant())));
     }
 
     MailQueueName getQueueName() {
diff --git a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java
index 36d3e55..29d5a26 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java
+++ b/server/protocols/webadmin/webadmin-mailqueue/src/main/java/org/apache/james/webadmin/service/DeleteMailsFromMailQueueTask.java
@@ -31,7 +31,6 @@ import org.apache.james.queue.api.ManageableMailQueue;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.apache.james.task.TaskType;
-import org.apache.james.util.OptionalUtils;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.base.Preconditions;
@@ -179,9 +178,8 @@ public class DeleteMailsFromMailQueueTask implements Task {
 
     @Override
     public Optional<TaskExecutionDetails.AdditionalInformation> details() {
-        return OptionalUtils.orSuppliers(
-            () -> this.lastAdditionalInformation,
-            () -> this.queue.map(queue ->
+        return this.lastAdditionalInformation
+            .or(() -> this.queue.map(queue ->
                 new AdditionalInformation(
                     queueName,
                     initialCount.get(),


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