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 rc...@apache.org on 2020/03/17 04:52:35 UTC

[james-project] 08/08: [Refactoring] replace old-school Guava FP with Java 8 Streams

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

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

commit d3eb619e3a702705b280ab6a0a4861a6a7c32ac0
Author: Matthieu Baechler <ma...@apache.org>
AuthorDate: Fri Feb 28 18:20:32 2020 +0100

    [Refactoring] replace old-school Guava FP with Java 8 Streams
---
 .../mailbox/jpa/mail/JPAAnnotationMapper.java      | 16 ++++++-------
 .../inmemory/mail/InMemoryAnnotationMapper.java    | 26 ++++++++++++----------
 .../james/managesieve/core/CoreProcessor.java      | 18 +++++++++------
 .../transport/mailets/jsieve/SieveMailAdapter.java |  7 +++---
 .../transport/mailets/jsieve/VacationAction.java   | 12 +++++-----
 5 files changed, 44 insertions(+), 35 deletions(-)

diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java
index 3f194ab..031d14b 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java
@@ -44,7 +44,6 @@ import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
 
 public class JPAAnnotationMapper extends JPATransactionalMapper implements AnnotationMapper {
 
@@ -72,13 +71,14 @@ public class JPAAnnotationMapper extends JPATransactionalMapper implements Annot
     public List<MailboxAnnotation> getAnnotationsByKeys(MailboxId mailboxId, Set<MailboxAnnotationKey> keys) {
         try {
             final JPAId jpaId = (JPAId) mailboxId;
-            return ImmutableList.copyOf(Iterables.transform(keys,
-                input -> READ_ROW.apply(
-                    getEntityManager()
-                        .createNamedQuery("retrieveByKey", JPAMailboxAnnotation.class)
-                        .setParameter("idParam", jpaId.getRawId())
-                        .setParameter("keyParam", input.asString())
-                        .getSingleResult())));
+            return keys.stream()
+                .map(input -> READ_ROW.apply(
+                        getEntityManager()
+                            .createNamedQuery("retrieveByKey", JPAMailboxAnnotation.class)
+                            .setParameter("idParam", jpaId.getRawId())
+                            .setParameter("keyParam", input.asString())
+                            .getSingleResult()))
+                .collect(Guavate.toImmutableList());
         } catch (NoResultException e) {
             return ImmutableList.of();
         }
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java
index 62e8288..c4001c8 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java
@@ -32,13 +32,10 @@ import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.util.streams.Iterators;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.HashBasedTable;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Table;
 
 public class InMemoryAnnotationMapper implements AnnotationMapper {
@@ -59,12 +56,15 @@ public class InMemoryAnnotationMapper implements AnnotationMapper {
         return transaction.run();
     }
 
-    private Iterable<MailboxAnnotation> retrieveAllAnnotations(InMemoryId mailboxId) {
+    private List<MailboxAnnotation> retrieveAllAnnotations(InMemoryId mailboxId) {
         lock.readLock().lock();
         try {
-            return Iterables.transform(
-                mailboxesAnnotations.row(mailboxId).entrySet(),
-                input -> MailboxAnnotation.newInstance(new MailboxAnnotationKey(input.getKey()), input.getValue()));
+            return mailboxesAnnotations
+                .row(mailboxId)
+                .entrySet()
+                .stream()
+                .map(input -> MailboxAnnotation.newInstance(new MailboxAnnotationKey(input.getKey()), input.getValue()))
+                .collect(Guavate.toImmutableList());
         } finally {
             lock.readLock().unlock();
         }
@@ -72,19 +72,21 @@ public class InMemoryAnnotationMapper implements AnnotationMapper {
     
     @Override
     public List<MailboxAnnotation> getAllAnnotations(MailboxId mailboxId) {
-        return ImmutableList.copyOf(retrieveAllAnnotations((InMemoryId) mailboxId));
+        return retrieveAllAnnotations((InMemoryId) mailboxId);
     }
 
     @Override
     public List<MailboxAnnotation> getAnnotationsByKeys(MailboxId mailboxId, final Set<MailboxAnnotationKey> keys) {
-        return ImmutableList.copyOf(
-            Iterables.filter(retrieveAllAnnotations((InMemoryId) mailboxId),
-                input -> keys.contains(input.getKey())));
+        return retrieveAllAnnotations((InMemoryId) mailboxId)
+            .stream()
+            .filter(input -> keys.contains(input.getKey()))
+            .collect(Guavate.toImmutableList());
     }
 
     @Override
     public List<MailboxAnnotation> getAnnotationsByKeysWithAllDepth(MailboxId mailboxId, final Set<MailboxAnnotationKey> keys) {
-        return Iterators.toStream(retrieveAllAnnotations((InMemoryId) mailboxId).iterator())
+        return retrieveAllAnnotations((InMemoryId) mailboxId)
+            .stream()
             .filter(getPredicateFilterByAll(keys))
             .collect(Guavate.toImmutableList());
     }
diff --git a/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java b/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
index ef1e78e..bf28ac8 100644
--- a/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
+++ b/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
@@ -26,6 +26,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
@@ -56,7 +57,6 @@ import org.apache.james.user.api.UsersRepository;
 import com.google.common.base.Joiner;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
@@ -94,8 +94,11 @@ public class CoreProcessor implements CoreCommands {
     }
 
     private String convertCapabilityMapToString(Map<Capabilities, String> capabilitiesStringMap) {
-        return Joiner.on("\r\n").join(
-            Iterables.transform(capabilitiesStringMap.entrySet(), this::computeCapabilityEntryString));
+        return capabilitiesStringMap
+            .entrySet()
+            .stream()
+            .map(this::computeCapabilityEntryString)
+            .collect(Collectors.joining("\r\n"));
     }
 
     private Map<Capabilities, String> computeCapabilityMap(Session session) {
@@ -121,7 +124,7 @@ public class CoreProcessor implements CoreCommands {
 
     private String manageWarnings(List<String> warnings) {
         if (!warnings.isEmpty()) {
-            return "OK (WARNINGS) " + Joiner.on(' ').join(Iterables.transform(warnings, s -> '\"' + s + '"'));
+            return "OK (WARNINGS) " + warnings.stream().map(s -> '\"' + s + '"').collect(Collectors.joining(" "));
         } else {
             return "OK";
         }
@@ -161,9 +164,10 @@ public class CoreProcessor implements CoreCommands {
 
     private String listScriptsInternals(Session session) throws AuthenticationRequiredException, StorageException {
         authenticationCheck(session);
-        String list = Joiner.on("\r\n").join(
-            Iterables.transform(sieveRepository.listScripts(session.getUser()),
-                scriptSummary -> '"' + scriptSummary.getName().getValue() + '"' + (scriptSummary.isActive() ? " ACTIVE" : "")));
+        String list = sieveRepository.listScripts(session.getUser())
+            .stream()
+            .map(scriptSummary -> '"' + scriptSummary.getName().getValue() + '"' + (scriptSummary.isActive() ? " ACTIVE" : ""))
+            .collect(Collectors.joining("\r\n"));
         if (Strings.isNullOrEmpty(list)) {
             return "OK";
         } else {
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
index 03a4a66..7728a05 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/SieveMailAdapter.java
@@ -54,6 +54,7 @@ import org.apache.mailet.MailetContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 
 /**
@@ -383,7 +384,7 @@ public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionC
                 .contentTypes(Lists.newArrayList("text/plain"))
                 .includeHeaders(false)
                 .caseInsensitive(false)
-                .searchContents(Lists.transform(phrasesCaseInsensitive, s -> s)).build()
+                .searchContents(ImmutableList.copyOf(phrasesCaseInsensitive)).build()
                 .messageMatches(getMail().getMessage().getInputStream());
         } catch (Exception e) {
             throw new SieveMailException("Error searching in the mail content", e);
@@ -397,7 +398,7 @@ public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionC
                 .includeHeaders(false)
                 .caseInsensitive(false)
                 .ignoringMime(true)
-                .searchContents(Lists.transform(phrasesCaseInsensitive, s -> s)).build()
+                .searchContents(ImmutableList.copyOf(phrasesCaseInsensitive)).build()
                 .messageMatches(getMail().getMessage().getInputStream());
         } catch (Exception e) {
             throw new SieveMailException("Error searching in the mail content", e);
@@ -411,7 +412,7 @@ public class SieveMailAdapter implements MailAdapter, EnvelopeAccessors, ActionC
                 .contentTypes(contentTypes)
                 .includeHeaders(false)
                 .caseInsensitive(false)
-                .searchContents(Lists.transform(phrasesCaseInsensitive, s -> s)).build()
+                .searchContents(ImmutableList.copyOf(phrasesCaseInsensitive)).build()
                 .messageMatches(getMail().getMessage().getInputStream());
         } catch (Exception e) {
             throw new SieveMailException("Error searching in the mail content", e);
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
index cc66005..35321a3 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationAction.java
@@ -22,6 +22,7 @@ package org.apache.james.transport.mailets.jsieve;
 import java.time.temporal.ChronoUnit;
 import java.util.Enumeration;
 import java.util.Set;
+import java.util.stream.Stream;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
@@ -34,8 +35,8 @@ import org.apache.mailet.Mail;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 
 public class VacationAction implements MailAction {
@@ -80,10 +81,11 @@ public class VacationAction implements MailAction {
 
     private boolean isValidForReply(final Mail mail, ActionVacation actionVacation, final ActionContext context) {
         Set<MailAddress> currentMailAddresses = ImmutableSet.copyOf(mail.getRecipients());
-        Set<MailAddress> allowedMailAddresses = ImmutableSet.<MailAddress>builder().addAll(
-            Lists.transform(actionVacation.getAddresses(), s -> retrieveAddressFromString(s, context)))
-            .add(context.getRecipient())
-            .build();
+        Set<MailAddress> allowedMailAddresses = Stream
+            .concat(
+                actionVacation.getAddresses().stream().map(s -> retrieveAddressFromString(s, context)),
+                Stream.of(context.getRecipient()))
+            .collect(Guavate.toImmutableSet());
         return !Sets.intersection(currentMailAddresses, allowedMailAddresses).isEmpty();
     }
 


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