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