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:49 UTC

[james-project] 14/17: [Refactoring] make use of Optional::or to replace some OptionalUtils.or 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 758f2bbc076dc7b3fafc18c73036e16c7b06dcbf
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Tue Apr 21 21:38:06 2020 +0200

    [Refactoring] make use of Optional::or to replace some OptionalUtils.or calls
---
 .../ElasticSearchMailboxConfiguration.java         | 22 +++----
 .../mailing/QuotaMailingListenerConfiguration.java | 17 +++--
 .../transport/mailets/ICALToJsonAttribute.java     |  5 +-
 .../smtp/core/AbstractHookableCmdHandler.java      | 13 ++--
 .../protocols/smtp/core/esmtp/AuthCmdHandler.java  | 11 ++--
 .../swift/SwiftKeystone3ObjectStorage.java         | 17 ++---
 .../swift/SwiftKeystone3ConfigurationReader.java   |  9 +--
 .../java/org/apache/james/util/OptionalUtils.java  |  5 --
 .../org/apache/james/util/OptionalUtilsTest.java   | 74 ----------------------
 .../org/apache/james/rrt/lib/MappingSource.java    |  5 +-
 .../org/apache/james/rrt/lib/SeparatorUtil.java    |  9 +--
 .../james/rrt/lib/RecipientRewriteTableUtil.java   |  6 +-
 .../memory/MailRepositoryStoreConfiguration.java   |  7 +-
 .../methods/SetMailboxesCreationProcessor.java     |  6 +-
 .../james/jmap/draft/model/CreationMessage.java    |  6 +-
 .../james/jmap/draft/model/MailboxFactory.java     |  6 +-
 .../james/jmap/mailet/filter/ContentMatcher.java   |  7 +-
 17 files changed, 56 insertions(+), 169 deletions(-)

diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/ElasticSearchMailboxConfiguration.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/ElasticSearchMailboxConfiguration.java
index 20ca7d2..1e91cdd 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/ElasticSearchMailboxConfiguration.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/ElasticSearchMailboxConfiguration.java
@@ -26,7 +26,6 @@ import org.apache.commons.configuration2.Configuration;
 import org.apache.james.backends.es.IndexName;
 import org.apache.james.backends.es.ReadAliasName;
 import org.apache.james.backends.es.WriteAliasName;
-import org.apache.james.util.OptionalUtils;
 
 public class ElasticSearchMailboxConfiguration {
 
@@ -100,26 +99,23 @@ public class ElasticSearchMailboxConfiguration {
     }
 
     static Optional<IndexName> computeMailboxIndexName(Configuration configuration) {
-        return OptionalUtils.or(
-            Optional.ofNullable(configuration.getString(ELASTICSEARCH_INDEX_MAILBOX_NAME))
-                .map(IndexName::new),
-            Optional.ofNullable(configuration.getString(ELASTICSEARCH_INDEX_NAME))
+        return Optional.ofNullable(configuration.getString(ELASTICSEARCH_INDEX_MAILBOX_NAME))
+                .map(IndexName::new)
+            .or(() -> Optional.ofNullable(configuration.getString(ELASTICSEARCH_INDEX_NAME))
                 .map(IndexName::new));
     }
 
     static Optional<WriteAliasName> computeMailboxWriteAlias(Configuration configuration) {
-        return OptionalUtils.or(
-            Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_WRITE_MAILBOX_NAME))
-                .map(WriteAliasName::new),
-            Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_WRITE_NAME))
+        return Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_WRITE_MAILBOX_NAME))
+                .map(WriteAliasName::new)
+            .or(() -> Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_WRITE_NAME))
                 .map(WriteAliasName::new));
     }
 
     static Optional<ReadAliasName> computeMailboxReadAlias(Configuration configuration) {
-        return OptionalUtils.or(
-            Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_READ_MAILBOX_NAME))
-                .map(ReadAliasName::new),
-            Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_READ_NAME))
+        return Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_READ_MAILBOX_NAME))
+                .map(ReadAliasName::new)
+            .or(() -> Optional.ofNullable(configuration.getString(ELASTICSEARCH_ALIAS_READ_NAME))
                 .map(ReadAliasName::new));
     }
 
diff --git a/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfiguration.java b/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfiguration.java
index 3b51f91..0955b35 100644
--- a/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfiguration.java
+++ b/mailbox/plugin/quota-mailing/src/main/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfiguration.java
@@ -33,7 +33,6 @@ import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mailbox.quota.model.QuotaThreshold;
 import org.apache.james.mailbox.quota.model.QuotaThresholds;
 import org.apache.james.util.DurationParser;
-import org.apache.james.util.OptionalUtils;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.MoreObjects;
@@ -286,20 +285,20 @@ public class QuotaMailingListenerConfiguration {
     }
 
     public String getBodyTemplate(QuotaThreshold quotaThreshold) {
-        return OptionalUtils.or(
-            Optional.ofNullable(
+        return Optional
+            .ofNullable(
                 toRenderingInformation.get(quotaThreshold))
-                    .flatMap(RenderingInformation::getBodyTemplate),
-                bodyTemplate)
+                    .flatMap(RenderingInformation::getBodyTemplate)
+            .or(() -> bodyTemplate)
             .orElse(DEFAULT_BODY_TEMPLATE);
     }
 
     public String getSubjectTemplate(QuotaThreshold quotaThreshold) {
-        return OptionalUtils.or(
-            Optional.ofNullable(
+        return Optional
+            .ofNullable(
                 toRenderingInformation.get(quotaThreshold))
-                    .flatMap(RenderingInformation::getSubjectTemplate),
-                subjectTemplate)
+                    .flatMap(RenderingInformation::getSubjectTemplate)
+            .or(() -> subjectTemplate)
             .orElse(DEFAULT_SUBJECT_TEMPLATE);
     }
 
diff --git a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java
index 950adcc..d3eafad 100644
--- a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java
+++ b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java
@@ -33,7 +33,6 @@ import javax.mail.internet.MimeMessage;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.core.MailAddress;
 import org.apache.james.transport.mailets.model.ICAL;
-import org.apache.james.util.OptionalUtils;
 import org.apache.james.util.StreamUtils;
 import org.apache.mailet.Attribute;
 import org.apache.mailet.AttributeName;
@@ -232,8 +231,6 @@ public class ICALToJsonAttribute extends GenericMailet {
         Optional<String> fromEnvelope = mail.getMaybeSender().asOptional()
             .map(MailAddress::asString);
 
-        return OptionalUtils.or(
-            fromMime,
-            fromEnvelope);
+        return fromMime.or(() -> fromEnvelope);
     }
 }
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java
index f938018..4497ef6 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java
@@ -41,7 +41,6 @@ import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.HookResultHook;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.util.MDCBuilder;
-import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -177,14 +176,14 @@ public abstract class AbstractHookableCmdHandler<HookT extends org.apache.james.
         if (result != null) {
             HookReturnCode returnCode = result.getResult();
 
-            String smtpReturnCode = OptionalUtils.or(
-                    Optional.ofNullable(result.getSmtpRetCode()),
-                    retrieveDefaultSmtpReturnCode(returnCode))
+            String smtpReturnCode = Optional
+                .ofNullable(result.getSmtpRetCode())
+                .or(() -> retrieveDefaultSmtpReturnCode(returnCode))
                 .orElse(null);
 
-            String smtpDescription = OptionalUtils.or(
-                    Optional.ofNullable(result.getSmtpDescription()),
-                    retrieveDefaultSmtpDescription(returnCode))
+            String smtpDescription = Optional
+                .ofNullable(result.getSmtpDescription())
+                .or(() -> retrieveDefaultSmtpDescription(returnCode))
                 .orElse(null);
 
             if (canBeConvertedToSmtpAnswer(returnCode)) {
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
index 1c01160..012fa33 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
@@ -49,7 +49,6 @@ import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.HookResultHook;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.hook.MailParametersHook;
-import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -390,14 +389,12 @@ public class AuthCmdHandler
         if (result != null) {
             HookReturnCode returnCode = result.getResult();
 
-            String smtpReturnCode = OptionalUtils.or(
-                Optional.ofNullable(result.getSmtpRetCode()),
-                retrieveDefaultSmtpReturnCode(returnCode))
+            String smtpReturnCode = Optional.ofNullable(result.getSmtpRetCode())
+                .or(() -> retrieveDefaultSmtpReturnCode(returnCode))
                 .orElse(null);
 
-            String smtpDescription = OptionalUtils.or(
-                Optional.ofNullable(result.getSmtpDescription()),
-                retrieveDefaultSmtpDescription(returnCode))
+            String smtpDescription = Optional.ofNullable(result.getSmtpDescription())
+                .or(() -> retrieveDefaultSmtpDescription(returnCode))
                 .orElse(null);
     
             if (HookReturnCode.Action.ACTIVE_ACTIONS.contains(returnCode.getAction())) {
diff --git a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java
index 4e761c4..894a9e1 100644
--- a/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java
+++ b/server/blob/blob-objectstorage/src/main/java/org/apache/james/blob/objectstorage/swift/SwiftKeystone3ObjectStorage.java
@@ -26,7 +26,6 @@ import java.util.function.Supplier;
 
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.blob.objectstorage.ObjectStorageBlobStoreBuilder;
-import org.apache.james.util.OptionalUtils;
 import org.jclouds.ContextBuilder;
 import org.jclouds.blobstore.BlobStore;
 import org.jclouds.logging.slf4j.config.SLF4JLoggingModule;
@@ -183,12 +182,9 @@ public class SwiftKeystone3ObjectStorage {
         public Properties getOverrides() {
             Properties properties = new Properties();
             properties.setProperty(KeystoneProperties.KEYSTONE_VERSION, "3");
-            OptionalUtils.or(
-                project.map(project -> setScope(project)),
-                domainId.map(domain -> setScope(domain))
-            ).ifPresent(scopeProps ->
-                properties.putAll(scopeProps)
-            );
+            project.map(this::setScope)
+                .or(() -> domainId.map(this::setScope)
+            ).ifPresent(properties::putAll);
             return properties;
         }
 
@@ -203,10 +199,9 @@ public class SwiftKeystone3ObjectStorage {
             properties.setProperty(KeystoneProperties.SCOPE, project.name().asString());
             project.domainName()
                 .map(domain -> Pair.of(KeystoneProperties.PROJECT_DOMAIN_NAME, domain));
-            OptionalUtils.or(
-                project.domainName()
-                    .map(domain -> Pair.of(KeystoneProperties.PROJECT_DOMAIN_NAME, domain.value())),
-                project.domainId()
+            project.domainName()
+                    .map(domain -> Pair.of(KeystoneProperties.PROJECT_DOMAIN_NAME, domain.value()))
+                .or(() -> project.domainId()
                     .map(domain -> Pair.of(KeystoneProperties.PROJECT_DOMAIN_ID, domain.value()))
             ).ifPresent(pair ->
                 properties.setProperty(pair.getKey(), pair.getValue())
diff --git a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftKeystone3ConfigurationReader.java b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftKeystone3ConfigurationReader.java
index 60632f3..bbf3be2 100644
--- a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftKeystone3ConfigurationReader.java
+++ b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/swift/SwiftKeystone3ConfigurationReader.java
@@ -32,7 +32,6 @@ import org.apache.james.blob.objectstorage.swift.ProjectName;
 import org.apache.james.blob.objectstorage.swift.Region;
 import org.apache.james.blob.objectstorage.swift.SwiftKeystone3ObjectStorage;
 import org.apache.james.blob.objectstorage.swift.UserName;
-import org.apache.james.util.OptionalUtils;
 
 import com.google.common.base.Preconditions;
 
@@ -125,10 +124,8 @@ public class SwiftKeystone3ConfigurationReader implements SwiftConfiguration {
                 configuration.getString(OBJECTSTORAGE_SWIFT_KEYSTONE_3_PROJECT_DOMAIN_ID, null))
             .map(DomainId::of);
 
-        return OptionalUtils.or(
-            projectName.flatMap(project -> projectDomainName.map(domain -> Project.of(project, domain))),
-            projectName.flatMap(project -> projectDomainId.map(domain -> Project.of(project, domain))),
-            projectName.map(Project::of)
-        );
+        return projectName.flatMap(project -> projectDomainName.map(domain -> Project.of(project, domain)))
+            .or(() -> projectName.flatMap(project -> projectDomainId.map(domain -> Project.of(project, domain))))
+            .or(() -> projectName.map(Project::of));
     }
 }
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 960095f..4bbf09b 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
@@ -39,11 +39,6 @@ public class OptionalUtils {
     }
 
     @SafeVarargs
-    public static <T> Optional<T> or(Optional<T>... optionals) {
-        return orStream(Arrays.stream(optionals));
-    }
-
-    @SafeVarargs
     public static <T> Optional<T> orSuppliers(Supplier<Optional<T>>... suppliers) {
         return orStream(Arrays.stream(suppliers)
             .map(Supplier::get));
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 0ed0456..c068884 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,80 +61,6 @@ class OptionalUtilsTest {
     }
 
     @Test
-    void orShouldReturnEmptyWhenNoParameter() {
-        assertThat(OptionalUtils.or())
-            .isEmpty();
-    }
-
-    @Test
-    void orShouldReturnEmptyWhenEmpty() {
-        assertThat(
-            OptionalUtils.or(
-                Optional.empty()))
-            .isEmpty();
-    }
-
-    @Test
-    void orShouldReturnValueWhenValue() {
-        assertThat(
-            OptionalUtils.or(
-                Optional.of(1)))
-            .contains(1);
-    }
-
-    @Test
-    void orShouldReturnEmptyWhenBothEmpty() {
-        assertThat(
-            OptionalUtils.or(
-                Optional.empty(),
-                Optional.empty()))
-            .isEmpty();
-    }
-
-    @Test
-    void orShouldReturnFirstValueWhenOnlyFirstValue() {
-        assertThat(
-            OptionalUtils.or(
-                Optional.of(18),
-                Optional.empty()))
-            .contains(18);
-    }
-
-    @Test
-    void orShouldReturnSecondValueWhenOnlySecondValue() {
-        assertThat(
-            OptionalUtils.or(
-                Optional.empty(),
-                Optional.of(18)))
-            .contains(18);
-    }
-
-    @Test
-    void orShouldReturnFirstValueWhenBothValues() {
-        assertThat(
-            OptionalUtils.or(
-                Optional.of(1),
-                Optional.of(2)))
-            .contains(1);
-    }
-
-    @Test
-    void orShouldReturnThirdValueWhenOnlyThirdValue() {
-        assertThat(
-            OptionalUtils.or(
-                Optional.empty(),
-                Optional.empty(),
-                Optional.of(1)))
-            .contains(1);
-    }
-
-    @Test
-    void orSuppliersShouldReturnEmptyWhenNoParameter() {
-        assertThat(OptionalUtils.or())
-            .isEmpty();
-    }
-
-    @Test
     void orSuppliersShouldReturnEmptyWhenEmpty() {
         assertThat(
             OptionalUtils.orSuppliers(
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 c512248..bd0d0a1 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
@@ -133,9 +133,8 @@ public class MappingSource implements Serializable {
     }
 
     public Optional<Domain> availableDomain() {
-        return OptionalUtils.or(
-            user.flatMap(Username::getDomainPart),
-            domain);
+        return user.flatMap(Username::getDomainPart)
+            .or(() -> domain);
     }
 
     @Override
diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/SeparatorUtil.java b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/SeparatorUtil.java
index 0d12c44..6076ac1 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/SeparatorUtil.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/SeparatorUtil.java
@@ -21,8 +21,6 @@ package org.apache.james.rrt.lib;
 
 import java.util.Optional;
 
-import org.apache.james.util.OptionalUtils;
-
 public class SeparatorUtil {
     /**
      * Returns the character used to delineate multiple addresses.
@@ -32,10 +30,9 @@ public class SeparatorUtil {
      * @return the character to tokenize on
      */
     public static String getSeparator(String targetString) {
-        return OptionalUtils.or(
-            mayContainComma(targetString),
-            mayContainSemicolon(targetString),
-            mayContainColon(targetString))
+        return mayContainComma(targetString)
+            .or(() -> mayContainSemicolon(targetString))
+            .or(() -> mayContainColon(targetString))
             .orElse("");
     }
 
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
index ee51dcb..7026ee7 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/RecipientRewriteTableUtil.java
@@ -25,7 +25,6 @@ import java.util.Optional;
 import java.util.StringTokenizer;
 
 import org.apache.james.core.Domain;
-import org.apache.james.util.OptionalUtils;
 
 /**
  * This helper class contains methods for the RecipientRewriteTable implementations
@@ -46,9 +45,8 @@ public class RecipientRewriteTableUtil {
      *         exists
      */
     public static String getTargetString(String user, Domain domain, Map<MappingSource, String> mappings) {
-        return OptionalUtils.or(
-                Optional.ofNullable(mappings.get(MappingSource.fromUser(user, domain))),
-                Optional.ofNullable(mappings.get(MappingSource.fromDomain(domain))))
+        return Optional.ofNullable(mappings.get(MappingSource.fromUser(user, domain)))
+            .or(() -> Optional.ofNullable(mappings.get(MappingSource.fromDomain(domain))))
             .orElse(null);
     }
 
diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java
index e1c6353..dbd9099 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MailRepositoryStoreConfiguration.java
@@ -27,7 +27,6 @@ import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
 import org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.tree.ImmutableNode;
 import org.apache.james.mailrepository.api.Protocol;
-import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -82,9 +81,9 @@ public class MailRepositoryStoreConfiguration {
             .map(MailRepositoryStoreConfiguration::readItem)
             .collect(Guavate.toImmutableList());
 
-        Optional<Protocol> defaultProtocol = OptionalUtils.or(
-            Optional.ofNullable(configuration.getString("defaultProtocol", null)).map(Protocol::new),
-            computeDefaultProtocol(items));
+        Optional<Protocol> defaultProtocol =
+            Optional.ofNullable(configuration.getString("defaultProtocol", null)).map(Protocol::new)
+            .or(() -> computeDefaultProtocol(items));
 
         return new MailRepositoryStoreConfiguration(items, defaultProtocol);
     }
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java
index 90519c2..c75b462 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesCreationProcessor.java
@@ -52,7 +52,6 @@ import org.apache.james.mailbox.model.MailboxId.Factory;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
-import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -199,9 +198,8 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
     }
 
     private MailboxPath getMailboxPath(Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId, MailboxSession mailboxSession, MailboxCreationId parentId) throws MailboxException {
-        Optional<MailboxId> mailboxId = OptionalUtils.or(
-            readCreationIdAsMailboxId(parentId),
-            Optional.ofNullable(creationIdsToCreatedMailboxId.get(parentId)));
+        Optional<MailboxId> mailboxId = readCreationIdAsMailboxId(parentId)
+            .or(() -> Optional.ofNullable(creationIdsToCreatedMailboxId.get(parentId)));
 
         return getMailboxPathFromId(mailboxId, mailboxSession)
                 .orElseThrow(() -> new MailboxParentNotFoundException(parentId));
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java
index d50b3a6..fdfb88c 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/CreationMessage.java
@@ -35,7 +35,6 @@ import org.apache.james.jmap.draft.methods.ValidationResult;
 import org.apache.james.jmap.draft.model.MessageProperties.MessageProperty;
 import org.apache.james.jmap.draft.model.message.view.SubMessage;
 import org.apache.james.mailbox.MessageManager;
-import org.apache.james.util.OptionalUtils;
 
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
@@ -234,9 +233,8 @@ public class CreationMessage {
 
         public Keywords computeKeywords(Optional<Keywords> keywords, Optional<OldKeyword> oldKeywords) {
             Preconditions.checkArgument(!(keywords.isPresent() && oldKeywords.isPresent()), "Does not support keyword and is* at the same time");
-            return OptionalUtils
-                .or(keywords,
-                    oldKeywords.map(OldKeyword::asKeywords))
+            return keywords
+                .or(() -> oldKeywords.map(OldKeyword::asKeywords))
                 .orElse(Keywords.DEFAULT_VALUE);
         }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MailboxFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MailboxFactory.java
index 456f58a..11c059a 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MailboxFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MailboxFactory.java
@@ -44,7 +44,6 @@ import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
-import org.apache.james.util.OptionalUtils;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.annotations.VisibleForTesting;
@@ -132,9 +131,8 @@ public class MailboxFactory {
         private MailboxId computeMailboxId() {
             int idCount = Booleans.countTrue(id.isPresent(), mailboxMetaData.isPresent());
             Preconditions.checkState(idCount == 1, "You need exactly one 'id' 'mailboxMetaData'");
-            return OptionalUtils.or(
-                id,
-                mailboxMetaData.map(MailboxMetaData::getId))
+            return id.or(
+                () -> mailboxMetaData.map(MailboxMetaData::getId))
                 .get();
         }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ContentMatcher.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ContentMatcher.java
index 754ee82..2db7254 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ContentMatcher.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/filter/ContentMatcher.java
@@ -47,10 +47,9 @@ public interface ContentMatcher {
             this.fullAddress = fullAddress;
             Optional<InternetAddress> internetAddress = parseFullAddress();
             this.address = internetAddress.map(InternetAddress::getAddress);
-            this.personal = OptionalUtils.or(
-                internetAddress.map(InternetAddress::getPersonal),
-                address,
-                Optional.of(fullAddress));
+            this.personal = internetAddress.map(InternetAddress::getPersonal)
+                .or(() -> address)
+                .or(() -> Optional.of(fullAddress));
         }
 
         private Optional<InternetAddress> parseFullAddress() {


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