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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
