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 2019/03/28 03:21:58 UTC

[james-project] 14/23: MAILBOX-388 FunctionUtils: turn toPredicate into identityPredicate

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 85d3b926cceafa1789ec9cb50e547903b2e84a0f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Mar 21 13:49:24 2019 +0700

    MAILBOX-388 FunctionUtils: turn toPredicate into identityPredicate
    
    This is the only use case. Such an API change thus makes the API simpler to use and more explicit.
---
 .../james/mailbox/cassandra/mail/CassandraACLMapper.java   |  5 +++--
 .../mailbox/cassandra/mail/CassandraMessageIdMapper.java   |  3 +--
 .../mailbox/cassandra/mail/CassandraModSeqProvider.java    |  4 ++--
 .../apache/james/transport/matchers/SMTPIsAuthNetwork.java |  3 +--
 .../main/java/org/apache/james/util/FunctionalUtils.java   |  5 ++---
 .../java/org/apache/james/util/FunctionalUtilsTest.java    | 14 +++++++-------
 .../james/sieve/cassandra/CassandraSieveRepository.java    |  3 ++-
 7 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
index 9fb8bbb..2698c4c 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
@@ -49,6 +49,7 @@ import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
 import com.fasterxml.jackson.core.JsonProcessingException;
+
 import reactor.core.publisher.Mono;
 
 public class CassandraACLMapper {
@@ -162,7 +163,7 @@ public class CassandraACLMapper {
                 .setString(CassandraACLTable.ACL, convertAclToJson(aclWithVersion.mailboxACL))
                 .setLong(CassandraACLTable.VERSION, aclWithVersion.version + 1)
                 .setLong(OLD_VERSION, aclWithVersion.version))
-            .filter(FunctionalUtils.toPredicate(Function.identity()))
+            .filter(FunctionalUtils.identityPredicate())
             .map(any -> aclWithVersion.mailboxACL);
     }
 
@@ -171,7 +172,7 @@ public class CassandraACLMapper {
             conditionalInsertStatement.bind()
                     .setUUID(CassandraACLTable.ID, cassandraId.asUuid())
                     .setString(CassandraACLTable.ACL, convertAclToJson(acl))))
-            .filter(FunctionalUtils.toPredicate(Function.identity()))
+            .filter(FunctionalUtils.identityPredicate())
             .map(any -> acl);
     }
 
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index f74b2ca..830ae98 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -23,7 +23,6 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import java.util.function.Function;
 
 import javax.mail.Flags;
 
@@ -289,7 +288,7 @@ public class CassandraMessageIdMapper implements MessageIdMapper {
 
     private Mono<Pair<Flags, ComposedMessageIdWithMetaData>> updateFlags(ComposedMessageIdWithMetaData oldComposedId, ComposedMessageIdWithMetaData newComposedId) {
         return imapUidDAO.updateMetadata(newComposedId, oldComposedId.getModSeq())
-            .filter(FunctionalUtils.toPredicate(Function.identity()))
+            .filter(FunctionalUtils.identityPredicate())
             .flatMap(any -> messageIdDAO.updateMetadata(newComposedId)
                 .thenReturn(Pair.of(oldComposedId.getFlags(), newComposedId)));
     }
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
index 25347bb..1d2780f 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
@@ -32,7 +32,6 @@ import static org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTab
 import java.time.Duration;
 import java.util.Optional;
 import java.util.concurrent.CompletionException;
-import java.util.function.Function;
 import java.util.function.Supplier;
 
 import javax.inject.Inject;
@@ -50,6 +49,7 @@ import org.apache.james.util.FunctionalUtils;
 import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.Session;
 import com.google.common.base.MoreObjects;
+
 import reactor.core.publisher.Mono;
 
 public class CassandraModSeqProvider implements ModSeqProvider {
@@ -172,7 +172,7 @@ public class CassandraModSeqProvider implements ModSeqProvider {
 
     private Mono<ModSeq> successToModSeq(ModSeq modSeq, Boolean success) {
         return Mono.just(success)
-            .filter(FunctionalUtils.toPredicate(Function.identity()))
+            .filter(FunctionalUtils.identityPredicate())
             .map(any -> modSeq);
     }
 
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SMTPIsAuthNetwork.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SMTPIsAuthNetwork.java
index 7ea745f..107c6cb 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SMTPIsAuthNetwork.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SMTPIsAuthNetwork.java
@@ -20,7 +20,6 @@
 package org.apache.james.transport.matchers;
 
 import java.util.Collection;
-import java.util.function.Function;
 
 import org.apache.james.core.MailAddress;
 import org.apache.james.util.FunctionalUtils;
@@ -53,7 +52,7 @@ public class SMTPIsAuthNetwork extends GenericMatcher {
     public Collection<MailAddress> match(Mail mail) {
         return AttributeUtils
             .getValueAndCastFromMail(mail, SMTP_AUTH_NETWORK_NAME, Boolean.class)
-            .filter(FunctionalUtils.toPredicate(Function.identity()))
+            .filter(FunctionalUtils.identityPredicate())
             .map(any -> mail.getRecipients())
             .orElse(ImmutableList.of());
     }
diff --git a/server/container/util/src/main/java/org/apache/james/util/FunctionalUtils.java b/server/container/util/src/main/java/org/apache/james/util/FunctionalUtils.java
index 651f8ba..30c0b63 100644
--- a/server/container/util/src/main/java/org/apache/james/util/FunctionalUtils.java
+++ b/server/container/util/src/main/java/org/apache/james/util/FunctionalUtils.java
@@ -19,7 +19,6 @@
 package org.apache.james.util;
 
 import java.util.function.Consumer;
-import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.function.UnaryOperator;
 
@@ -38,7 +37,7 @@ public class FunctionalUtils {
         };
     }
 
-    public static <T> Predicate<T> toPredicate(Function<T, Boolean> function) {
-        return value -> function.apply(value);
+    public static Predicate<Boolean> identityPredicate() {
+        return b -> b;
     }
 }
diff --git a/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java b/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java
index 6c736b0..c62653f 100644
--- a/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java
+++ b/server/container/util/src/test/java/org/apache/james/util/FunctionalUtilsTest.java
@@ -22,7 +22,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.util.function.Consumer;
 import java.util.function.Function;
-import java.util.function.Predicate;
 
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -85,14 +84,15 @@ class FunctionalUtilsTest {
     }
 
     @Nested
-    class ToPredicate {
+    class IdentityPredicate {
         @Test
-        void shouldKeepProperty() {
-            Function<Integer, Boolean> function = value -> value % 42 == 0;
-            Predicate<Integer> predicate = FunctionalUtils.toPredicate(function);
+        void shouldKeepTrue() {
+            assertThat(FunctionalUtils.identityPredicate().test(true)).isTrue();
+        }
 
-            assertThat(predicate.test(5)).isFalse();
-            assertThat(predicate.test(42)).isTrue();
+        @Test
+        void shouldDiscardFalse() {
+            assertThat(FunctionalUtils.identityPredicate().test(false)).isFalse();
         }
     }
 }
\ No newline at end of file
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
index c01f9d3..2c866ba 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/sieve/cassandra/CassandraSieveRepository.java
@@ -46,6 +46,7 @@ import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.apache.james.util.FunctionalUtils;
 
 import com.github.steveash.guavate.Guavate;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
@@ -167,7 +168,7 @@ public class CassandraSieveRepository implements SieveRepository {
         Mono<Boolean> activateNewScript =
             unactivateOldScript(user)
                 .then(updateScriptActivation(user, name, true))
-                .filter(FunctionalUtils.toPredicate(Function.identity()))
+                .filter(FunctionalUtils.identityPredicate())
                 .flatMap(any -> cassandraActiveScriptDAO.activate(user, name).thenReturn(any));
 
         if (!activateNewScript.blockOptional().isPresent()) {


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