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