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/07/10 01:49:04 UTC

[james-project] 02/09: [REFACTORING] Use Predicate.{not, equals}

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 0b47d96f25b62248115266ca9d36d1461abd9e67
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Thu Jul 2 21:09:14 2020 +0200

    [REFACTORING] Use Predicate.{not, equals}
---
 .../backends/cassandra/init/CassandraTableManager.java   |  5 ++++-
 .../src/main/java/org/apache/james/core/MaybeSender.java |  3 ++-
 .../java/org/apache/james/mailbox/model/MailboxACL.java  |  3 ++-
 .../java/org/apache/james/mailbox/model/MailboxPath.java |  3 ++-
 .../james/mailbox/model/MessageAttachmentMetadata.java   |  3 ++-
 .../james/mailbox/cassandra/DeleteMessageListener.java   |  3 ++-
 .../mail/task/SolveMessageInconsistenciesService.java    |  3 ++-
 .../cassandra/quota/CassandraCurrentQuotaManager.java    |  4 +++-
 .../mailbox/elasticsearch/json/IndexableMessage.java     |  3 ++-
 .../apache/james/mailbox/events/GroupRegistration.java   |  3 ++-
 .../james/mailbox/events/KeyRegistrationHandler.java     |  3 ++-
 .../mailbox/maildir/user/MaildirSubscriptionMapper.java  |  4 +++-
 .../mailbox/inmemory/mail/InMemoryMessageMapper.java     |  5 +++--
 .../inmemory/quota/InMemoryCurrentQuotaManager.java      |  3 ++-
 .../james/mailbox/store/StoreMessageIdManager.java       |  3 ++-
 .../james/mailbox/store/mail/model/FlagsFactory.java     |  3 ++-
 .../mailbox/store/mail/model/impl/MessageParser.java     |  4 +++-
 .../apache/james/transport/mailets/SetErrorMessage.java  |  4 +++-
 .../matchers/utils/MailAddressCollectionReader.java      |  3 ++-
 .../james/imap/decode/parser/CreateCommandParser.java    |  4 +++-
 .../objectstorage/ObjectStorageBlobConfiguration.java    |  3 ++-
 .../apache/james/modules/protocols/ImapGuiceProbe.java   | 16 ++++++++--------
 .../main/java/org/apache/james/util/OptionalUtils.java   |  3 ++-
 .../src/main/java/org/apache/james/util/UnitParser.java  |  3 ++-
 .../apache/james/util/mime/MessageContentExtractor.java  |  5 ++---
 .../rrt/cassandra/CassandraRecipientRewriteTableDAO.java |  4 +++-
 .../MessageFastViewPrecomputedProperties.java            |  3 ++-
 .../james/domainlist/lib/DomainListConfiguration.java    |  3 ++-
 .../james/mailetcontainer/impl/JamesMailetContext.java   |  3 ++-
 .../org/apache/james/transport/mailets/SpamAssassin.java |  3 ++-
 .../james/transport/mailets/jsieve/DiscardAction.java    |  4 +++-
 .../james/jmap/draft/methods/MIMEMessageConverter.java   |  3 ++-
 .../jmap/draft/methods/SetMailboxesUpdateProcessor.java  |  4 +---
 .../java/org/apache/james/jmap/draft/model/Emailer.java  |  4 +++-
 .../apache/james/jmap/draft/model/mailbox/Rights.java    |  3 ++-
 .../draft/model/message/view/MessageFullViewFactory.java |  6 +++---
 .../draft/model/message/view/MessageViewFactory.java     |  3 ++-
 .../james/jmap/draft/utils/JsoupHtmlTextExtractor.java   |  5 ++++-
 .../james/jmap/event/PropagateLookupRightListener.java   |  3 ++-
 .../james/jmap/http/DefaultMailboxesProvisionerTest.java |  3 ++-
 .../org/apache/james/webadmin/routes/TasksRoutes.java    |  3 ++-
 41 files changed, 101 insertions(+), 55 deletions(-)

diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
index ee0e2c4..bf72196 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.backends.cassandra.init;
 
+import java.util.function.Predicate;
+
 import javax.inject.Inject;
 
 import org.apache.james.backends.cassandra.components.CassandraModule;
@@ -27,6 +29,7 @@ import org.apache.james.backends.cassandra.components.CassandraTable.Initializat
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 
 import com.datastax.driver.core.KeyspaceMetadata;
+import com.datastax.driver.core.PagingIterable;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.querybuilder.QueryBuilder;
 
@@ -73,7 +76,7 @@ public class CassandraTableManager {
                         .from(name)
                         .limit(1)
                         .setFetchSize(1))
-                .filter(resultSet -> !resultSet.isExhausted())
+                .filter(Predicate.not(PagingIterable::isExhausted))
                 .flatMap(ignored -> executor.executeVoid(QueryBuilder.truncate(name)));
     }
 }
diff --git a/core/src/main/java/org/apache/james/core/MaybeSender.java b/core/src/main/java/org/apache/james/core/MaybeSender.java
index 6460ddc..824a666 100644
--- a/core/src/main/java/org/apache/james/core/MaybeSender.java
+++ b/core/src/main/java/org/apache/james/core/MaybeSender.java
@@ -22,6 +22,7 @@ package org.apache.james.core;
 import java.util.NoSuchElementException;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 import javax.mail.internet.AddressException;
@@ -58,7 +59,7 @@ public class MaybeSender {
     @SuppressWarnings("deprecation")
     public static MaybeSender of(MailAddress mailAddress) {
         return new MaybeSender(Optional.ofNullable(mailAddress)
-            .filter(address -> !address.isNullSender()));
+            .filter(Predicate.not(MailAddress::isNullSender)));
     }
 
     private final Optional<MailAddress> mailAddress;
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
index e0d58ae..22b7f8f 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxACL.java
@@ -29,6 +29,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.Properties;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -823,7 +824,7 @@ public class MailboxACL {
                     .collect(Guavate.toImmutableMap(Pair::getKey, Pair::getValue)));
         } else {
             return Optional.ofNullable(replacement)
-                .filter(rights -> !rights.isEmpty())
+                .filter(Predicate.not(Rfc4314Rights::isEmpty))
                 .map(replacementValue ->  new MailboxACL(
                     ImmutableMap.<EntryKey, Rfc4314Rights>builder()
                         .putAll(entries)
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
index 36340ee..4e6b194 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxPath.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.DefaultMailboxes;
@@ -70,7 +71,7 @@ public class MailboxPath {
     
     public MailboxPath(String namespace, Username user, String name) {
         this.namespace = Optional.ofNullable(namespace)
-            .filter(s -> !s.isEmpty())
+            .filter(Predicate.not(String::isEmpty))
             .orElse(MailboxConstants.USER_NAMESPACE);
         this.user = user;
         this.name = name;
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachmentMetadata.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachmentMetadata.java
index 1093bd0..731e9ae 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachmentMetadata.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachmentMetadata.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.model;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
@@ -85,7 +86,7 @@ public class MessageAttachmentMetadata {
 
     public static boolean hasNonInlinedAttachment(List<MessageAttachmentMetadata> attachments) {
         return attachments.stream()
-            .anyMatch(messageAttachment -> !messageAttachment.isInlinedWithCid());
+            .anyMatch(Predicate.not(MessageAttachmentMetadata::isInlinedWithCid));
     }
 
     private final AttachmentMetadata attachment;
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java
index e3d2eab..e7e3627 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/DeleteMessageListener.java
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.cassandra;
 import static org.apache.james.util.FunctionalUtils.negate;
 
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import javax.inject.Inject;
 
@@ -204,7 +205,7 @@ public class DeleteMessageListener implements MailboxListener.GroupMailboxListen
 
     private Mono<Boolean> hasOtherMessagesReferences(MessageRepresentation message, MessageAttachmentRepresentation attachment) {
         return attachmentMessageIdDAO.getOwnerMessageIds(attachment.getAttachmentId())
-            .filter(messageId -> !message.getMessageId().equals(messageId))
+            .filter(Predicate.not(Predicate.isEqual(message.getMessageId())))
             .hasElements()
             .map(negate());
     }
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesService.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesService.java
index 5279d56..49936ee 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesService.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/task/SolveMessageInconsistenciesService.java
@@ -27,6 +27,7 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentLinkedDeque;
 import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.Predicate;
 
 import javax.inject.Inject;
 
@@ -456,7 +457,7 @@ public class SolveMessageInconsistenciesService {
 
     private Mono<Inconsistency> detectOutdatedMessageIdEntry(CassandraId mailboxId, CassandraMessageId messageId, ComposedMessageIdWithMetaData messageIdRecord) {
         return messageIdToImapUidDAO.retrieve(messageId, Optional.of(mailboxId))
-            .filter(upToDateMessageFromImapUid -> !upToDateMessageFromImapUid.equals(messageIdRecord))
+            .filter(Predicate.not(Predicate.isEqual(messageIdRecord)))
             .<Inconsistency>map(upToDateMessageFromImapUid -> new OutdatedMessageIdEntry(messageIdRecord, upToDateMessageFromImapUid))
             .next()
             .switchIfEmpty(Mono.just(NO_INCONSISTENCY));
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
index 675b3e2..79158dd 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
@@ -30,6 +30,8 @@ import static org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota.QUO
 import static org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota.STORAGE;
 import static org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota.TABLE_NAME;
 
+import java.util.function.Predicate;
+
 import javax.inject.Inject;
 
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
@@ -117,7 +119,7 @@ public class CassandraCurrentQuotaManager implements CurrentQuotaManager {
     @Override
     public Mono<Void> setCurrentQuotas(QuotaOperation quotaOperation) {
         return getCurrentQuotas(quotaOperation.quotaRoot())
-            .filter(storedQuotas -> !storedQuotas.equals(CurrentQuotas.from(quotaOperation)))
+            .filter(Predicate.not(Predicate.isEqual(CurrentQuotas.from(quotaOperation))))
             .flatMap(storedQuotas -> decrease(new QuotaOperation(quotaOperation.quotaRoot(), storedQuotas.count(), storedQuotas.size()))
                 .then(increase(quotaOperation)));
     }
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessage.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessage.java
index 82dc941..e24f75a 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessage.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/json/IndexableMessage.java
@@ -26,6 +26,7 @@ import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
 import java.util.Optional;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -128,7 +129,7 @@ public class IndexableMessage {
                         subjects.serialize(),
                         bodyText.orElse(null),
                         bodyHtml.orElse(null))
-                    .filter(str -> !Strings.isNullOrEmpty(str))
+                    .filter(Predicate.not(Strings::isNullOrEmpty))
                     .collect(Collectors.joining(" "));
 
             long uid = message.getUid().asLong();
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
index 34b0051..cade1c8 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupRegistration.java
@@ -30,6 +30,7 @@ import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT_EXC
 import java.nio.charset.StandardCharsets;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import org.apache.james.backends.rabbitmq.ReceiverProvider;
 import org.apache.james.event.json.EventSerializer;
@@ -168,7 +169,7 @@ class GroupRegistration implements Registration {
 
     @Override
     public void unregister() {
-        receiverSubscriber.filter(subscriber -> !subscriber.isDisposed())
+        receiverSubscriber.filter(Predicate.not(Disposable::isDisposed))
             .ifPresent(Disposable::dispose);
         receiver.close();
         unregisterGroup.run();
diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
index 8b79d06..6f3ddc6 100644
--- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
+++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/KeyRegistrationHandler.java
@@ -29,6 +29,7 @@ import java.time.Duration;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Predicate;
 
 import org.apache.james.backends.rabbitmq.ReceiverProvider;
 import org.apache.james.event.json.EventSerializer;
@@ -121,7 +122,7 @@ class KeyRegistrationHandler {
     }
 
     void stop() {
-        receiverSubscriber.filter(subscriber -> !subscriber.isDisposed())
+        receiverSubscriber.filter(Predicate.not(Disposable::isDisposed))
             .ifPresent(Disposable::dispose);
         receiver.close();
         sender.delete(QueueSpecification.queue(registrationQueue.asString()))
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
index 0d6275b..c36096a 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/user/MaildirSubscriptionMapper.java
@@ -28,6 +28,7 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.exception.SubscriptionException;
@@ -37,6 +38,7 @@ import org.apache.james.mailbox.store.user.SubscriptionMapper;
 import org.apache.james.mailbox.store.user.model.Subscription;
 
 import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 
@@ -123,7 +125,7 @@ public class MaildirSubscriptionMapper extends NonTransactionalMapper implements
         try (FileReader fileReader = new FileReader(subscriptionFile)) {
             try (BufferedReader reader = new BufferedReader(fileReader)) {
                 return reader.lines()
-                    .filter(subscription -> !subscription.equals(""))
+                    .filter(Predicate.not(Strings::isNullOrEmpty))
                     .collect(Guavate.toImmutableSet());
             }
         }
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
index 4bf22c1..df9b8b2 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageMapper.java
@@ -25,6 +25,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Predicate;
 
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
@@ -93,7 +94,7 @@ public class InMemoryMessageMapper extends AbstractMessageMapper {
     private long countUnseenMessagesInMailbox(MailboxId mailboxId) {
         return getMembershipByUidForMailbox(mailboxId).values()
             .stream()
-            .filter(member -> !member.isSeen())
+            .filter(Predicate.not(MailboxMessage::isSeen))
             .count();
     }
 
@@ -139,7 +140,7 @@ public class InMemoryMessageMapper extends AbstractMessageMapper {
         List<MailboxMessage> memberships = new ArrayList<>(getMembershipByUidForMailbox(mailbox).values());
         Collections.sort(memberships);
         return memberships.stream()
-            .filter(m -> !m.isSeen())
+            .filter(Predicate.not(MailboxMessage::isSeen))
             .findFirst()
             .map(MailboxMessage::getUid)
             .orElse(null);
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
index cd9c5c7..120df80 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.inmemory.quota;
 
 import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Predicate;
 import java.util.function.UnaryOperator;
 
 import javax.inject.Inject;
@@ -97,7 +98,7 @@ public class InMemoryCurrentQuotaManager implements CurrentQuotaManager {
     @Override
     public Mono<Void> setCurrentQuotas(QuotaOperation quotaOperation) {
         return getCurrentQuotas(quotaOperation.quotaRoot())
-            .filter(storedQuotas -> !storedQuotas.equals(CurrentQuotas.from(quotaOperation)))
+            .filter(Predicate.not(Predicate.isEqual(CurrentQuotas.from(quotaOperation))))
             .flatMap(storedQuotas -> decrease(new QuotaOperation(quotaOperation.quotaRoot(), storedQuotas.count(), storedQuotas.size()))
                 .then(increase(quotaOperation)))
             .subscribeOn(Schedulers.elastic());
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index d934faf..e84d747 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -68,6 +68,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.mailbox.store.quota.QuotaChecker;
+import org.apache.james.util.FunctionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -447,7 +448,7 @@ public class StoreMessageIdManager implements MessageIdManager {
 
     private Mono<Void> assertRightsOnMailboxIds(Collection<MailboxId> mailboxIds, MailboxSession mailboxSession, Right... rights) {
         return Flux.fromIterable(mailboxIds)
-            .filterWhen(hasRightsOnMailboxReactive(mailboxSession, rights).andThen(result -> result.map(b -> !b)))
+            .filterWhen(hasRightsOnMailboxReactive(mailboxSession, rights).andThen(result -> result.map(FunctionalUtils.negate())))
             .next()
             .flatMap(mailboxForbidden -> {
                 LOGGER.info("Mailbox with Id {} does not belong to {}", mailboxForbidden, mailboxSession.getUser().asString());
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/FlagsFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/FlagsFactory.java
index 3f506cd..c1d9b15 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/FlagsFactory.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/FlagsFactory.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.store.mail.model;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Optional;
+import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 import javax.mail.Flags;
@@ -115,7 +116,7 @@ public class FlagsFactory {
                         toUserFlagStream(flagsOrEmpty),
                         userFlags.stream())
                     .distinct()
-                    .filter(s -> !Strings.isNullOrEmpty(s))
+                    .filter(Predicate.not(Strings::isNullOrEmpty))
                     .filter(flagsFilter.getUserFlagFilter());
 
             final Flags result = new Flags();
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
index b693f0e..9258a83 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
@@ -25,6 +25,7 @@ import java.io.InputStream;
 import java.util.List;
 import java.util.Locale;
 import java.util.Optional;
+import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 import org.apache.james.mailbox.model.Cid;
@@ -48,6 +49,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
 public class MessageParser {
@@ -124,7 +126,7 @@ public class MessageParser {
         Optional<ContentTypeField> contentTypeField = getContentTypeField(entity);
         Optional<ContentDispositionField> contentDispositionField = getContentDispositionField(entity);
         Optional<ContentType> contentType = contentTypeField.map(ContentTypeField::getBody)
-            .filter(string -> !string.isEmpty())
+            .filter(Predicate.not(Strings::isNullOrEmpty))
             .map(ContentType::of);
         Optional<String> name = name(contentTypeField, contentDispositionField);
         Optional<Cid> cid = cid(readHeader(entity, CONTENT_ID, ContentIdField.class));
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetErrorMessage.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetErrorMessage.java
index d6acfb4..f856d08 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetErrorMessage.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SetErrorMessage.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.transport.mailets;
 
+import java.util.function.Predicate;
+
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
@@ -30,7 +32,7 @@ public class SetErrorMessage extends GenericMailet {
     @Override
     public void init() throws MessagingException {
         errorMessage = getInitParameterAsOptional("errorMessage")
-            .filter(string -> !string.isEmpty())
+            .filter(Predicate.not(String::isEmpty))
             .orElseThrow(() -> new IllegalStateException("'errorMessage' needs to be specified and cannot be empty"));
     }
 
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
index 733d4dc..f22d18f 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
@@ -21,6 +21,7 @@ package org.apache.james.transport.matchers.utils;
 
 import java.util.Optional;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import javax.mail.internet.AddressException;
 
@@ -38,7 +39,7 @@ public class MailAddressCollectionReader {
         Preconditions.checkArgument(!Strings.isNullOrEmpty(condition));
         return Splitter.onPattern("(,| |\t)").splitToList(condition)
             .stream()
-            .filter(s -> !Strings.isNullOrEmpty(s))
+            .filter(Predicate.not(Strings::isNullOrEmpty))
             .map(MailAddressCollectionReader::getMailAddress)
             .collect(Guavate.toImmutableSet());
     }
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java
index 419618a..722b91b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/CreateCommandParser.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.imap.decode.parser;
 
+import java.util.function.Predicate;
+
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
 import org.apache.james.imap.api.Tag;
@@ -68,7 +70,7 @@ public class CreateCommandParser extends AbstractImapCommandParser {
         Splitter.on(delimiter)
             .splitToList(mailboxName)
             .stream()
-            .filter(s -> !Strings.isNullOrEmpty(s))
+            .filter(Predicate.not(Strings::isNullOrEmpty))
             .findAny()
             .orElseThrow(() -> new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "Invalid mailbox name"));
     }
diff --git a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java
index 3f3703d..2ab0e38 100644
--- a/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java
+++ b/server/container/guice/blob-objectstorage-guice/src/main/java/org/apache/james/modules/objectstorage/ObjectStorageBlobConfiguration.java
@@ -22,6 +22,7 @@ package org.apache.james.modules.objectstorage;
 import java.util.Arrays;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import org.apache.commons.configuration2.Configuration;
 import org.apache.commons.configuration2.ex.ConfigurationException;
@@ -172,7 +173,7 @@ public class ObjectStorageBlobConfiguration {
 
             public ObjectStorageBlobConfiguration build() {
                 if (payloadCodecFactory == PayloadCodecFactory.AES256) {
-                    aesSalt.filter(s -> !s.isEmpty())
+                    aesSalt.filter(Predicate.not(Strings::isNullOrEmpty))
                         .orElseThrow(() -> new IllegalStateException("AES code requires an non-empty salt parameter"));
                     aesPassword.filter(s -> s.length > 0)
                         .orElseThrow(() -> new IllegalStateException("AES code requires an non-empty password parameter"));
diff --git a/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/ImapGuiceProbe.java b/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/ImapGuiceProbe.java
index 0c7c1fc..3786b3b 100644
--- a/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/ImapGuiceProbe.java
+++ b/server/container/guice/protocols/imap/src/main/java/org/apache/james/modules/protocols/ImapGuiceProbe.java
@@ -39,20 +39,20 @@ public class ImapGuiceProbe implements GuiceProbe {
     }
 
     public int getImapPort() {
-        return getPort(server -> !server.getStartTLSSupported())
-                .orElseThrow(() -> new IllegalStateException("IMAP server not defined"));
+        return getPort(Predicate.not(AbstractConfigurableAsyncServer::getStartTLSSupported))
+            .orElseThrow(() -> new IllegalStateException("IMAP server not defined"));
     }
 
     public int getImapsPort() {
-        return getPort(server -> server.getStartTLSSupported())
-                .orElseThrow(() -> new IllegalStateException("IMAPS server not defined"));
+        return getPort(AbstractConfigurableAsyncServer::getStartTLSSupported)
+            .orElseThrow(() -> new IllegalStateException("IMAPS server not defined"));
     }
 
     private Optional<Integer> getPort(Predicate<? super AbstractConfigurableAsyncServer> filter) {
         return imapServerFactory.getServers().stream()
-                .filter(filter)
-                .findFirst()
-                .flatMap(server -> server.getListenAddresses().stream().findFirst())
-                .map(InetSocketAddress::getPort);
+            .filter(filter)
+            .findFirst()
+            .flatMap(server -> server.getListenAddresses().stream().findFirst())
+            .map(InetSocketAddress::getPort);
     }
 }
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 8e258e1..7372432 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
@@ -20,6 +20,7 @@ package org.apache.james.util;
 
 import java.util.Optional;
 import java.util.function.BiPredicate;
+import java.util.function.Predicate;
 
 public class OptionalUtils {
 
@@ -37,7 +38,7 @@ public class OptionalUtils {
 
     public static <T> boolean containsDifferent(Optional<T> requestValue, T storeValue) {
         return requestValue
-            .filter(value -> !value.equals(storeValue))
+            .filter(Predicate.not(Predicate.isEqual(storeValue)))
             .isPresent();
     }
 
diff --git a/server/container/util/src/main/java/org/apache/james/util/UnitParser.java b/server/container/util/src/main/java/org/apache/james/util/UnitParser.java
index 2f6e7d7..4960b7a 100644
--- a/server/container/util/src/main/java/org/apache/james/util/UnitParser.java
+++ b/server/container/util/src/main/java/org/apache/james/util/UnitParser.java
@@ -20,6 +20,7 @@
 package org.apache.james.util;
 
 import java.util.Optional;
+import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -57,7 +58,7 @@ class UnitParser {
             String amountAsString = res.group(AMOUNT);
             long amount = Integer.parseInt(amountAsString.trim());
 
-            return new ParsingResult(amount, Optional.of(unitAsString).filter(s -> !Strings.isNullOrEmpty(s)));
+            return new ParsingResult(amount, Optional.of(unitAsString).filter(Predicate.not(Strings::isNullOrEmpty)));
         }
         throw new NumberFormatException("Supplied value do not follow the unit format (number optionally suffixed with a string representing the unit");
     }
diff --git a/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java b/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
index 5a3292a..515c050 100644
--- a/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
+++ b/server/container/util/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
@@ -224,9 +224,8 @@ public class MessageContentExtractor {
 
         public Optional<String> extractMainTextContent(HtmlTextExtractor htmlTextExtractor) {
             return htmlBody.map(htmlTextExtractor::toPlainText)
-                .filter(s -> !Strings.isNullOrEmpty(s))
-                .map(Optional::of)
-                .orElse(textBody);
+                .filter(Predicate.not(Strings::isNullOrEmpty))
+                .or(() -> textBody);
         }
 
         @Override
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableDAO.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableDAO.java
index 72eaf48..db31072 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableDAO.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableDAO.java
@@ -29,6 +29,8 @@ import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTab
 import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable.TABLE_NAME;
 import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable.USER;
 
+import java.util.function.Predicate;
+
 import javax.inject.Inject;
 
 import org.apache.commons.lang3.tuple.Pair;
@@ -112,7 +114,7 @@ public class CassandraRecipientRewriteTableDAO {
                 .map(row -> row.getString(MAPPING))
                 .collect(Guavate.toImmutableList()))
             .map(MappingsImpl::fromCollection)
-            .filter(mappings -> !mappings.isEmpty());
+            .filter(Predicate.not(MappingsImpl::isEmpty));
     }
 
     public Flux<Pair<MappingSource, Mapping>> getAllMappings() {
diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewPrecomputedProperties.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewPrecomputedProperties.java
index 3c1cee9..ac396a4 100644
--- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewPrecomputedProperties.java
+++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/projections/MessageFastViewPrecomputedProperties.java
@@ -22,6 +22,7 @@ package org.apache.james.jmap.api.projections;
 import java.io.IOException;
 import java.util.List;
 import java.util.Objects;
+import java.util.function.Predicate;
 
 import javax.inject.Inject;
 
@@ -90,7 +91,7 @@ public class MessageFastViewPrecomputedProperties {
 
         private boolean hasAttachment(List<MessageAttachmentMetadata> attachments) {
             return attachments.stream()
-                .anyMatch(attachment -> !attachment.isInlinedWithCid());
+                .anyMatch(Predicate.not(MessageAttachmentMetadata::isInlinedWithCid));
         }
     }
 
diff --git a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java
index 5260b68..0aa03ef 100644
--- a/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java
+++ b/server/data/data-library/src/main/java/org/apache/james/domainlist/lib/DomainListConfiguration.java
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import org.apache.commons.configuration2.HierarchicalConfiguration;
 import org.apache.commons.configuration2.tree.ImmutableNode;
@@ -113,7 +114,7 @@ public class DomainListConfiguration {
 
     public static DomainListConfiguration from(HierarchicalConfiguration<ImmutableNode> config) {
         ImmutableList<Domain> configuredDomains = StreamUtils.ofNullable(config.getStringArray(CONFIGURE_DOMAIN_NAMES))
-            .filter(s -> !s.isEmpty())
+            .filter(Predicate.not(String::isEmpty))
             .map(Domain::of)
             .collect(Guavate.toImmutableList());
 
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
index 99f0c5d..ab557ff 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
@@ -30,6 +30,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
 
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
@@ -422,7 +423,7 @@ public class JamesMailetContext implements MailetContext, Configurable, Disposab
             // doesn't work, use the hostname, even if it is localhost.
             if (postMasterAddress.indexOf('@') < 0) {
                 Domain domainName = domains.getDomains().stream()
-                    .filter(domain -> !Domain.LOCALHOST.equals(domain))
+                    .filter(Predicate.not(Predicate.isEqual(Domain.LOCALHOST)))
                     .findFirst()
                     .orElse(domains.getDefaultDomain());
 
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java
index 4216832..00b5617 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java
@@ -20,6 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import javax.inject.Inject;
 import javax.mail.MessagingException;
@@ -87,7 +88,7 @@ public class SpamAssassin extends GenericMailet {
     @Override
     public void init() throws MessagingException {
         spamdHost = Optional.ofNullable(getInitParameter(SPAMD_HOST))
-            .filter(s -> !Strings.isNullOrEmpty(s))
+            .filter(Predicate.not(Strings::isNullOrEmpty))
             .orElse(DEFAULT_HOST);
 
         spamdPort = MailetUtil.getInitParameterAsStrictlyPositiveInteger(getInitParameter(SPAMD_PORT), DEFAULT_PORT);
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java
index ec207da..192c0c6 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.transport.mailets.jsieve;
 
+import java.util.function.Predicate;
+
 import javax.mail.MessagingException;
 
 import org.apache.jsieve.mail.Action;
@@ -40,7 +42,7 @@ public class DiscardAction extends FileIntoAction implements MailAction {
     public static void removeRecipient(Mail mail, ActionContext context) {
         mail.setRecipients(mail.getRecipients()
             .stream()
-            .filter(mailAddress -> !mailAddress.equals(context.getRecipient()))
+            .filter(Predicate.not(Predicate.isEqual(context.getRecipient())))
             .collect(Guavate.toImmutableList()));
     }
 }
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
index 3396256..73fdbd1 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
@@ -29,6 +29,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.TimeZone;
 import java.util.function.Consumer;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import javax.inject.Inject;
@@ -230,7 +231,7 @@ public class MIMEMessageConverter {
             .filter(MessageAttachmentMetadata::isInline)
             .collect(Guavate.toImmutableList());
         List<MessageAttachmentMetadata> besideAttachments = messageAttachments.stream()
-            .filter(attachment -> !attachment.isInline())
+            .filter(Predicate.not(MessageAttachmentMetadata::isInline))
             .collect(Guavate.toImmutableList());
 
         if (inlineAttachments.size() > 0) {
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesUpdateProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesUpdateProcessor.java
index 1d79ceb..acf2747 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesUpdateProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMailboxesUpdateProcessor.java
@@ -173,9 +173,7 @@ public class SetMailboxesUpdateProcessor implements SetMailboxesProcessor {
 
     @VisibleForTesting
     <T> boolean requestChanged(Optional<T> requestValue, Optional<T> storeValue) {
-        return requestValue
-            .filter(value -> !requestValue.equals(storeValue))
-            .isPresent();
+        return requestValue.isPresent() && !requestValue.equals(storeValue);
     }
 
     private Mailbox getMailbox(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxNotFoundException {
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/Emailer.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/Emailer.java
index ffb037c..abbb232 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/Emailer.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/Emailer.java
@@ -22,6 +22,7 @@ package org.apache.james.jmap.draft.model;
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
+import java.util.function.Predicate;
 
 import javax.mail.internet.AddressException;
 
@@ -40,6 +41,7 @@ import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
+import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
 @JsonDeserialize(builder = Emailer.Builder.class)
@@ -141,7 +143,7 @@ public class Emailer {
         }
 
         private Optional<String> replaceIfNeeded(Optional<String> value) {
-            return value.filter(s -> !s.isEmpty());
+            return value.filter(Predicate.not(Strings::isNullOrEmpty));
         }
     }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/mailbox/Rights.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/mailbox/Rights.java
index 1a941bb..cbe15b0 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/mailbox/Rights.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/mailbox/Rights.java
@@ -26,6 +26,7 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Optional;
 import java.util.function.BinaryOperator;
+import java.util.function.Predicate;
 
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.core.Username;
@@ -232,7 +233,7 @@ public class Rights {
 
     private Optional<Boolean> containsRight(Username username, Right right) {
         return Optional.ofNullable(rights.get(username))
-            .filter(rightList -> !rightList.isEmpty())
+            .filter(Predicate.not(Collection::isEmpty))
             .map(rightList -> rightList.contains(right));
     }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
index 3f38ad3..5741c5f 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
@@ -26,6 +26,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.function.Predicate;
 import java.util.function.Supplier;
 
 import javax.inject.Inject;
@@ -204,9 +205,8 @@ public class MessageFullViewFactory implements MessageViewFactory<MessageFullVie
     private Optional<String> mainTextContent(MessageContent messageContent) {
         return messageContent.getHtmlBody()
             .map(htmlTextExtractor::toPlainText)
-            .filter(s -> !Strings.isNullOrEmpty(s))
-            .map(Optional::of)
-            .orElse(messageContent.getTextBody());
+            .filter(Predicate.not(Strings::isNullOrEmpty))
+            .or(messageContent::getTextBody);
     }
     
     private List<Attachment> getAttachments(List<MessageAttachmentMetadata> attachments) {
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java
index 11c9cd3..dc9409f 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java
@@ -28,6 +28,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Function;
+import java.util.function.Predicate;
 import java.util.stream.Collectors;
 
 import org.apache.james.jmap.draft.model.Keywords;
@@ -132,7 +133,7 @@ public interface MessageViewFactory<T extends MessageView> {
             return messageResults
                 .groupBy(MessageResult::getMessageId)
                 .flatMap(Flux::collectList)
-                .filter(list -> !list.isEmpty())
+                .filter(Predicate.not(List::isEmpty))
                 .flatMap(toMessageViews(converter));
         }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java
index c697c4e..b4ea0c0 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/utils/JsoupHtmlTextExtractor.java
@@ -20,6 +20,7 @@
 package org.apache.james.jmap.draft.utils;
 
 import java.util.Optional;
+import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
@@ -32,6 +33,8 @@ import org.jsoup.nodes.TextNode;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Strings;
+
 public class JsoupHtmlTextExtractor implements HtmlTextExtractor {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(JsoupHtmlTextExtractor.class);
@@ -93,7 +96,7 @@ public class JsoupHtmlTextExtractor implements HtmlTextExtractor {
     private String generateImageAlternativeText(Element element) {
         return Optional.ofNullable(element.attributes().get(ALT_TAG))
             .map(StringUtils::normalizeSpace)
-            .filter(s -> !s.isEmpty())
+            .filter(Predicate.not(Strings::isNullOrEmpty))
             .map(s -> "[" + s + "]")
             .orElse("");
     }
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java
index 56ab963..138bc77 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/event/PropagateLookupRightListener.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.jmap.event;
 
+import java.util.function.Predicate;
 import java.util.stream.Stream;
 
 import javax.inject.Inject;
@@ -111,7 +112,7 @@ public class PropagateLookupRightListener implements MailboxListener.GroupMailbo
     private Stream<MailboxPath> listAncestors(MailboxSession mailboxSession, MailboxPath mailboxPath) {
         return mailboxPath.getHierarchyLevels(mailboxSession.getPathDelimiter())
             .stream()
-            .filter(hierarchyMailboxPath -> !hierarchyMailboxPath.equals(mailboxPath));
+            .filter(Predicate.not(Predicate.isEqual(mailboxPath)));
     }
 
     private void applyLookupRight(MailboxSession session, MailboxPath mailboxPath, Entry entry) {
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java
index 4120f0c..267d450 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/http/DefaultMailboxesProvisionerTest.java
@@ -21,6 +21,7 @@ package org.apache.james.jmap.http;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.Duration;
+import java.util.function.Predicate;
 
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.DefaultMailboxes;
@@ -70,7 +71,7 @@ public class DefaultMailboxesProvisionerTest {
     public void createMailboxesIfNeededShouldCreateSpamWhenOtherSystemMailboxesExist() throws Exception {
         DefaultMailboxes.DEFAULT_MAILBOXES
             .stream()
-            .filter(mailbox -> !DefaultMailboxes.SPAM.equals(mailbox))
+            .filter(Predicate.not(Predicate.isEqual(DefaultMailboxes.SPAM)))
             .forEach(Throwing.consumer(mailbox -> mailboxManager.createMailbox(MailboxPath.forUser(USERNAME, mailbox), session)));
 
         testee.createMailboxesIfNeeded(session).block();
diff --git a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java
index 35ad151..c0f8440 100644
--- a/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java
+++ b/server/protocols/webadmin/webadmin-core/src/main/java/org/apache/james/webadmin/routes/TasksRoutes.java
@@ -23,6 +23,7 @@ import java.time.Duration;
 import java.time.temporal.ChronoUnit;
 import java.util.List;
 import java.util.Optional;
+import java.util.function.Predicate;
 import java.util.function.Supplier;
 
 import javax.inject.Inject;
@@ -201,7 +202,7 @@ public class TasksRoutes implements Routes {
     private Duration getTimeout(Request req) {
         try {
             Duration timeout =  Optional.ofNullable(req.queryParams("timeout"))
-                .filter(parameter -> !parameter.isEmpty())
+                .filter(Predicate.not(String::isEmpty))
                 .map(rawString -> DurationParser.parse(rawString, ChronoUnit.SECONDS))
                 .orElse(MAXIMUM_AWAIT_TIMEOUT);
 


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