JAMES-2127 MailboxAPI: Stream instead of FluentIterable.from
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b3864f35 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b3864f35 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b3864f35 Branch: refs/heads/master Commit: b3864f352323c4bf273d392f55d710226637cfd1 Parents: 4ce918b Author: quynhn <qngu...@linagora.com> Authored: Fri Aug 25 15:46:05 2017 +0700 Committer: quynhn <qngu...@linagora.com> Committed: Wed Aug 30 11:08:48 2017 +0700 ---------------------------------------------------------------------- .../cassandra/mail/CassandraModSeqProvider.java | 4 +- .../mailbox/jpa/mail/JPAAnnotationMapper.java | 44 ++++---- .../lucene/search/LuceneMessageSearchIndex.java | 16 +-- .../inmemory/InMemoryMessageIdManager.java | 18 ++-- .../inmemory/mail/InMemoryAnnotationMapper.java | 21 ++-- .../mailbox/store/StoreMailboxManager.java | 3 +- .../mailbox/store/StoreMessageManager.java | 3 +- .../store/mail/model/impl/PropertyBuilder.java | 3 +- .../mail/utils/ApplicableFlagCalculator.java | 11 +- .../mailbox/store/search/MessageSearches.java | 12 +-- .../james/mailbox/store/search/SearchUtil.java | 5 +- .../store/search/SimpleMessageSearchIndex.java | 54 +++++----- .../search/comparator/CombinedComparator.java | 13 +-- .../store/AbstractCombinationManagerTest.java | 17 ++-- .../AbstractMessageIdManagerStorageTest.java | 102 ++++++++----------- .../store/TestMailboxSessionMapperFactory.java | 34 +++---- .../store/mail/model/ListMailboxAssert.java | 9 +- .../store/mail/model/ListMessageAssert.java | 26 ++--- .../mail/model/ListMessagePropertiesAssert.java | 12 +-- 19 files changed, 195 insertions(+), 212 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java ---------------------------------------------------------------------- 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 1959d01..d07a607 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 @@ -28,11 +28,10 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.update; import static org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable.MAILBOX_ID; import static org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable.NEXT_MODSEQ; import static org.apache.james.mailbox.cassandra.table.CassandraMessageModseqTable.TABLE_NAME; - import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; - +import java.util.function.Supplier; import javax.inject.Inject; import org.apache.james.backends.cassandra.CassandraConfiguration; @@ -48,7 +47,6 @@ import org.apache.james.mailbox.store.mail.model.Mailbox; import com.datastax.driver.core.PreparedStatement; import com.datastax.driver.core.Session; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Supplier; public class CassandraModSeqProvider implements ModSeqProvider { http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAAnnotationMapper.java ---------------------------------------------------------------------- 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 b0ce1ed..08566a1 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 @@ -22,6 +22,8 @@ package org.apache.james.mailbox.jpa.mail; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.function.Function; +import java.util.function.Predicate; import javax.persistence.EntityManagerFactory; import javax.persistence.NoResultException; import javax.persistence.PersistenceException; @@ -37,14 +39,12 @@ import org.apache.james.mailbox.store.mail.AnnotationMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Function; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; public class JPAAnnotationMapper extends JPATransactionalMapper implements AnnotationMapper { @@ -60,9 +60,12 @@ public class JPAAnnotationMapper extends JPATransactionalMapper implements Annot @Override public List<MailboxAnnotation> getAllAnnotations(MailboxId mailboxId) { JPAId jpaId = (JPAId) mailboxId; - return Lists.transform(getEntityManager().createNamedQuery("retrieveAllAnnotations", JPAMailboxAnnotation.class) - .setParameter("idParam", jpaId.getRawId()).getResultList(), - READ_ROW); + return getEntityManager().createNamedQuery("retrieveAllAnnotations", JPAMailboxAnnotation.class) + .setParameter("idParam", jpaId.getRawId()) + .getResultList() + .stream() + .map(READ_ROW) + .collect(Guavate.toImmutableList()); } @Override @@ -100,30 +103,21 @@ public class JPAAnnotationMapper extends JPATransactionalMapper implements Annot private List<MailboxAnnotation> getFilteredLikes(final JPAId jpaId, Set<MailboxAnnotationKey> keys, final Function<MailboxAnnotationKey, Predicate<MailboxAnnotation>> predicateFunction) { try { - return flatMapToList(Iterables.transform(keys, - key -> ImmutableList.copyOf( - Iterables.filter( - Iterables.transform( - getEntityManager() - .createNamedQuery("retrieveByKeyLike", JPAMailboxAnnotation.class) - .setParameter("idParam", jpaId.getRawId()) - .setParameter("keyParam", key.asString() + '%') - .getResultList(), - READ_ROW), - predicateFunction.apply(key))))); + return keys.stream() + .flatMap(key -> getEntityManager() + .createNamedQuery("retrieveByKeyLike", JPAMailboxAnnotation.class) + .setParameter("idParam", jpaId.getRawId()) + .setParameter("keyParam", key.asString() + '%') + .getResultList() + .stream() + .map(READ_ROW) + .filter(predicateFunction.apply(key))) + .collect(Guavate.toImmutableList()); } catch (NoResultException e) { return ImmutableList.of(); } } - private List<MailboxAnnotation> flatMapToList(Iterable<List<MailboxAnnotation>> likes) { - ImmutableList.Builder<MailboxAnnotation> resultBuilder = ImmutableList.builder(); - for (List<MailboxAnnotation> mailboxAnnotations: likes) { - resultBuilder.addAll(mailboxAnnotations); - } - return resultBuilder.build(); - } - @Override public void deleteAnnotation(MailboxId mailboxId, MailboxAnnotationKey key) { try { http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java index 99fab8d..dcf9abc 100644 --- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java +++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java @@ -122,8 +122,8 @@ import org.apache.lucene.util.Version; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Preconditions; -import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -465,19 +465,21 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex { .inMailboxes(mailboxId) .build(); - return FluentIterable.from(searchMultimap(multimailboxesSearchQuery, session)) - .transform(SearchResult::getMessageUid) + return searchMultimap(multimailboxesSearchQuery, session) + .stream() + .map(SearchResult::getMessageUid) .iterator(); } @Override public List<MessageId> search(MailboxSession session, MultimailboxesSearchQuery searchQuery, long limit) throws MailboxException { Preconditions.checkArgument(session != null, "'session' is mandatory"); - return FluentIterable.from(searchMultimap(searchQuery, session)) - .transform(searchResult -> searchResult.getMessageId().get()) + return searchMultimap(searchQuery, session) + .stream() + .map(searchResult -> searchResult.getMessageId().get()) .filter(SearchUtil.distinct()) .limit(Long.valueOf(limit).intValue()) - .toList(); + .collect(Guavate.toImmutableList()); } private List<SearchResult> searchMultimap(MultimailboxesSearchQuery searchQuery, MailboxSession session) throws MailboxException { @@ -758,7 +760,7 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex { } private static boolean hasAttachment(MailboxMessage membership) { - return FluentIterable.from(membership.getProperties()) + return membership.getProperties().stream() .anyMatch(PropertyBuilder.isHasAttachmentProperty()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java index 6246af9..6d63a64 100644 --- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java +++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java @@ -43,7 +43,7 @@ import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.MessageResult; import org.apache.james.mailbox.model.MessageResult.FetchGroup; -import com.google.common.collect.FluentIterable; +import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; @@ -100,7 +100,9 @@ public class InMemoryMessageIdManager implements MessageIdManager { filterOnMailboxSession(mailboxIds, mailboxSession); if (!messages.isEmpty()) { - ImmutableSet<MailboxId> currentMailboxes = currentMailboxes(messages).toSet(); + ImmutableSet<MailboxId> currentMailboxes = messages.stream() + .map(MessageResult::getMailboxId) + .collect(Guavate.toImmutableSet()); HashSet<MailboxId> targetMailboxes = Sets.newHashSet(mailboxIds); List<MailboxId> mailboxesToRemove = ImmutableList.copyOf(Sets.difference(currentMailboxes, targetMailboxes)); @@ -121,9 +123,10 @@ public class InMemoryMessageIdManager implements MessageIdManager { } private List<MailboxId> getUsersMailboxIds(final MailboxSession mailboxSession) throws MailboxException { - return FluentIterable.from(mailboxManager.search(userMailboxes(mailboxSession), mailboxSession)) - .transform(MailboxMetaData::getId) - .toList(); + return mailboxManager.search(userMailboxes(mailboxSession), mailboxSession) + .stream() + .map(MailboxMetaData::getId) + .collect(Guavate.toImmutableList()); } private MailboxQuery userMailboxes(MailboxSession mailboxSession) { @@ -164,11 +167,6 @@ public class InMemoryMessageIdManager implements MessageIdManager { }; } - private FluentIterable<MailboxId> currentMailboxes(List<MessageResult> messages) { - return FluentIterable.from(messages) - .transform(MessageResult::getMailboxId); - } - private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException { return retrieveAllMessages(mailboxId, fetchGroup, mailboxSession) .stream() http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryAnnotationMapper.java ---------------------------------------------------------------------- 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 514578e..fe3b41c 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 @@ -23,17 +23,19 @@ import java.util.List; import java.util.Set; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import java.util.function.Predicate; +import java.util.stream.StreamSupport; -import org.apache.commons.lang.StringUtils; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.inmemory.InMemoryId; 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.commons.lang.StringUtils; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.collect.HashBasedTable; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; @@ -82,20 +84,27 @@ public class InMemoryAnnotationMapper implements AnnotationMapper { @Override public List<MailboxAnnotation> getAnnotationsByKeysWithAllDepth(MailboxId mailboxId, final Set<MailboxAnnotationKey> keys) { - return ImmutableList.copyOf(Iterables.filter(retrieveAllAnnotations((InMemoryId)mailboxId), getPredicateFilterByAll(keys))); + boolean parallel = true; + + return StreamSupport.stream(retrieveAllAnnotations((InMemoryId)mailboxId).spliterator(), parallel) + .filter(getPredicateFilterByAll(keys)) + .collect(Guavate.toImmutableList()); } @Override public List<MailboxAnnotation> getAnnotationsByKeysWithOneDepth(MailboxId mailboxId, final Set<MailboxAnnotationKey> keys) { - return ImmutableList.copyOf(Iterables.filter(getAnnotationsByKeysWithAllDepth(mailboxId, keys), getPredicateFilterByOne(keys))); + return getAnnotationsByKeysWithAllDepth(mailboxId, keys) + .stream() + .filter(getPredicateFilterByOne(keys)) + .collect(Guavate.toImmutableList()); } private Predicate<MailboxAnnotation> getPredicateFilterByAll(final Set<MailboxAnnotationKey> keys) { - return input -> Iterables.tryFind(keys, filterAnnotationsByPrefix(input)).isPresent(); + return input -> keys.stream().anyMatch(filterAnnotationsByPrefix(input)); } private Predicate<MailboxAnnotation> getPredicateFilterByOne(final Set<MailboxAnnotationKey> keys) { - return input -> Iterables.tryFind(keys, filterAnnotationsByParentKey(input.getKey())).isPresent(); + return input -> keys.stream().anyMatch(filterAnnotationsByParentKey(input.getKey())); } private Predicate<MailboxAnnotationKey> filterAnnotationsByParentKey(final MailboxAnnotationKey input) { http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java index dff2799..8bdebb2 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java @@ -85,7 +85,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.steveash.guavate.Guavate; -import com.google.common.collect.FluentIterable; import com.google.common.collect.Iterables; /** @@ -720,7 +719,7 @@ public class StoreMailboxManager implements MailboxManager { } private boolean hasChildIn(Mailbox parentMailbox, List<Mailbox> mailboxesWithPathLike, MailboxSession mailboxSession) { - return FluentIterable.from(mailboxesWithPathLike) + return mailboxesWithPathLike.stream() .anyMatch(mailbox -> mailbox.isChildOf(parentMailbox, mailboxSession)); } http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index 6d4fbde..85a1282 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -93,7 +93,6 @@ import org.apache.commons.io.input.TeeInputStream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -443,7 +442,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } private boolean hasNonInlinedAttachment(List<MessageAttachment> attachments) { - return FluentIterable.from(attachments) + return attachments.stream() .anyMatch(messageAttachment -> !messageAttachment.isInlinedWithCid()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java index 6667a37..33ee262 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/PropertyBuilder.java @@ -39,7 +39,6 @@ import static org.apache.james.mailbox.store.mail.model.StandardNames.MIME_CONTE import static org.apache.james.mailbox.store.mail.model.StandardNames.MIME_MEDIA_TYPE_NAME; import static org.apache.james.mailbox.store.mail.model.StandardNames.MIME_MIME_TYPE_SPACE; import static org.apache.james.mailbox.store.mail.model.StandardNames.MIME_SUB_TYPE_NAME; - import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -47,11 +46,11 @@ import java.util.Locale; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; +import java.util.function.Predicate; import org.apache.james.mailbox.store.mail.model.Property; import com.github.steveash.guavate.Guavate; -import com.google.common.base.Predicate; /** * Builds properties http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java index b95e153..ef21d47 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/utils/ApplicableFlagCalculator.java @@ -19,13 +19,14 @@ package org.apache.james.mailbox.store.mail.utils; +import java.util.stream.StreamSupport; import javax.mail.Flags; import org.apache.james.mailbox.ApplicableFlagBuilder; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import com.google.common.base.Preconditions; -import com.google.common.collect.FluentIterable; + public class ApplicableFlagCalculator { @@ -37,10 +38,12 @@ public class ApplicableFlagCalculator { } public Flags computeApplicableFlags() { + boolean isParallel = true; + return ApplicableFlagBuilder.builder() - .add(FluentIterable.from(mailboxMessages) - .transform(MailboxMessage::createFlags) - .toArray(Flags.class)) + .add(StreamSupport.stream(mailboxMessages.spliterator(), isParallel) + .map(MailboxMessage::createFlags) + .toArray(Flags[]::new)) .build(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java index 47a8f2f..87e6c24 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearches.java @@ -72,7 +72,6 @@ import org.apache.james.mime4j.utils.search.MessageMatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; @@ -118,10 +117,10 @@ public class MessageSearches implements Iterable<SimpleMessageSearchIndex.Search LOGGER.error("Unable to search message " + m.getUid(), e); } } - List<MailboxMessage> sortedResults = FluentIterable.from(builder.build()) - .toSortedList(CombinedComparator.create(query.getSorts())); - return FluentIterable.from(sortedResults) - .transform(mailboxMessage -> new SimpleMessageSearchIndex.SearchResult( + return builder.build() + .stream() + .sorted(CombinedComparator.create(query.getSorts())) + .map(mailboxMessage -> new SimpleMessageSearchIndex.SearchResult( Optional.of(mailboxMessage.getMessageId()), mailboxMessage.getMailboxId(), mailboxMessage.getUid())) @@ -498,7 +497,8 @@ public class MessageSearches implements Iterable<SimpleMessageSearchIndex.Search private boolean matches(SearchQuery.AttachmentCriterion criterion, MailboxMessage message) throws UnsupportedSearchException { - boolean mailHasAttachments = FluentIterable.from(message.getProperties()) + boolean mailHasAttachments = message.getProperties() + .stream() .anyMatch(PropertyBuilder.isHasAttachmentProperty()); return mailHasAttachments == criterion.getOperator().isSet(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java index a51a7ff..1b7249a 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SearchUtil.java @@ -22,6 +22,7 @@ import java.nio.charset.Charset; import java.util.HashSet; import java.util.Locale; import java.util.Set; +import java.util.function.Predicate; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.MailboxMessage; @@ -35,8 +36,6 @@ import org.apache.james.mime4j.dom.address.MailboxList; import org.apache.james.mime4j.field.address.LenientAddressParser; import org.apache.james.mime4j.util.MimeUtil; -import com.google.common.base.Predicate; - /** * Utility class which helps with extracting of data for searches * @@ -478,7 +477,7 @@ public class SearchUtil { private final Set<MessageId> set = new HashSet<>(); @Override - public boolean apply(MessageId input) { + public boolean test(MessageId input) { return set.add(input); } }; http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java index a716105..bc9a931 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndex.java @@ -18,13 +18,12 @@ ****************************************************************/ package org.apache.james.mailbox.store.search; -import java.util.ArrayList; import java.util.EnumSet; import java.util.Iterator; import java.util.List; import java.util.SortedSet; import java.util.TreeSet; - +import java.util.stream.Stream; import javax.inject.Inject; import org.apache.james.mailbox.MailboxManager.SearchCapabilities; @@ -47,8 +46,9 @@ import org.apache.james.mailbox.store.mail.MessageMapperFactory; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Preconditions; -import com.google.common.collect.FluentIterable; +import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; /** @@ -98,21 +98,13 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex { @Override public Iterator<MessageUid> search(MailboxSession session, final Mailbox mailbox, SearchQuery query) throws MailboxException { Preconditions.checkArgument(session != null, "'session' is mandatory"); - return FluentIterable.from(searchResults(session, ImmutableList.of(mailbox), query)) - .filter(searchResult -> searchResult.getMailboxId().equals(mailbox.getMailboxId())) - .transform(SearchResult::getMessageUid) - .iterator(); + return searchResults(session, ImmutableList.of(mailbox).stream(), query) + .stream() + .filter(searchResult -> searchResult.getMailboxId().equals(mailbox.getMailboxId())) + .map(SearchResult::getMessageUid) + .iterator(); } - private List<SearchResult> searchResults(MailboxSession session, Iterable<Mailbox> mailboxes, SearchQuery query) throws MailboxException { - ImmutableList.Builder<SearchResult> builder = ImmutableList.builder(); - for (Mailbox mailbox: mailboxes) { - builder.addAll(searchResults(session, mailbox, query)); - } - return builder.build(); - - } - private List<SearchResult> searchResults(MailboxSession session, Mailbox mailbox, SearchQuery query) throws MailboxException { if (!isMatchingUser(session, mailbox)) { return ImmutableList.of(); @@ -151,27 +143,35 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex { public List<MessageId> search(MailboxSession session, final MultimailboxesSearchQuery searchQuery, long limit) throws MailboxException { List<Mailbox> allUserMailboxes = mailboxMapperFactory.getMailboxMapper(session) .findMailboxWithPathLike(new MailboxPath(session.getPersonalSpace(), session.getUser().getUserName(), WILDCARD)); - FluentIterable<Mailbox> filteredMailboxes = FluentIterable - .from(allUserMailboxes) + Stream<Mailbox> filteredMailboxes = allUserMailboxes.stream() .filter(mailbox -> !searchQuery.getNotInMailboxes().contains(mailbox.getMailboxId())); + if (searchQuery.getInMailboxes().isEmpty()) { return getAsMessageIds(searchResults(session, filteredMailboxes, searchQuery.getSearchQuery()), limit); } - List<Mailbox> queriedMailboxes = new ArrayList<>(); - for (Mailbox mailbox: filteredMailboxes) { - if (searchQuery.getInMailboxes().contains(mailbox.getMailboxId())) { - queriedMailboxes.add(mailbox); + List<Mailbox> queriedMailboxes = filteredMailboxes + .filter(mailbox -> searchQuery.getInMailboxes().contains(mailbox.getMailboxId())) + .collect(Guavate.toImmutableList()); + + return getAsMessageIds(searchResults(session, queriedMailboxes.stream(), searchQuery.getSearchQuery()), limit); + } + + private List<SearchResult> searchResults(MailboxSession session, Stream<Mailbox> mailboxes, SearchQuery query) throws MailboxException { + return mailboxes.flatMap(mailbox -> { + try { + return searchResults(session, mailbox, query).stream(); + } catch (MailboxException e) { + throw Throwables.propagate(e); } - } - return getAsMessageIds(searchResults(session, queriedMailboxes, searchQuery.getSearchQuery()), limit); + }).collect(Guavate.toImmutableList()); } private List<MessageId> getAsMessageIds(List<SearchResult> temp, long limit) { - return FluentIterable.from(temp) - .transform(searchResult -> searchResult.getMessageId().get()) + return temp.stream() + .map(searchResult -> searchResult.getMessageId().get()) .filter(SearchUtil.distinct()) .limit(Long.valueOf(limit).intValue()) - .toList(); + .collect(Guavate.toImmutableList()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java index 53d270f..bb98fb7 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/CombinedComparator.java @@ -20,14 +20,15 @@ package org.apache.james.mailbox.store.search.comparator; import java.util.Comparator; import java.util.List; +import java.util.function.Function; -import org.apache.commons.lang.NotImplementedException; import org.apache.james.mailbox.model.SearchQuery.Sort; import org.apache.james.mailbox.store.mail.model.MailboxMessage; +import org.apache.commons.lang.NotImplementedException; -import com.google.common.base.Function; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Preconditions; -import com.google.common.collect.FluentIterable; + /** * {@link Comparator} which takes a Array of other {@link Comparator}'s and use them to compare two {@link MailboxMessage} instances till one of them @@ -38,9 +39,9 @@ public class CombinedComparator implements Comparator<MailboxMessage>{ public static CombinedComparator create(List<Sort> sorts) { Preconditions.checkNotNull(sorts); Preconditions.checkArgument(!sorts.isEmpty()); - return new CombinedComparator(FluentIterable.from(sorts) - .transform(toComparator()) - .toList()); + return new CombinedComparator(sorts.stream() + .map(toComparator()) + .collect(Guavate.toImmutableList())); } private static Function<Sort, Comparator<MailboxMessage>> toComparator() { http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java index a78e7c0..61b51e6 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java @@ -20,11 +20,10 @@ package org.apache.james.mailbox.store; import static org.assertj.core.api.Assertions.assertThat; - import java.io.ByteArrayInputStream; import java.util.Date; import java.util.List; - +import java.util.function.Predicate; import javax.mail.Flags; import javax.mail.Flags.Flag; @@ -52,8 +51,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.google.common.base.Predicate; -import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; public abstract class AbstractCombinationManagerTest { @@ -287,9 +284,10 @@ public abstract class AbstractCombinationManagerTest { List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId.getMessageId()), FetchGroupImpl.MINIMAL, session); - long uid2 = FluentIterable.from(listMessages) + long uid2 = listMessages.stream() .filter(messageInMailbox2()) - .get(0) + .findFirst() + .get() .getUid() .asLong(); @@ -450,10 +448,11 @@ public abstract class AbstractCombinationManagerTest { messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); - List<MessageResult> listMessages = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session); - MessageUid uid2 = FluentIterable.from(listMessages) + MessageUid uid2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session) + .stream() .filter(messageInMailbox2()) - .get(0) + .findFirst() + .get() .getUid(); SearchQuery searchQuery = new SearchQuery(SearchQuery.all()); http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java index 0e6bdd8..626c9a7 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java @@ -20,11 +20,9 @@ package org.apache.james.mailbox.store; import static org.assertj.core.api.Assertions.assertThat; - -import java.util.AbstractMap; import java.util.List; import java.util.Map; - +import java.util.function.Predicate; import javax.mail.Flags; import org.apache.james.mailbox.MailboxSession; @@ -46,11 +44,8 @@ import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.FluentIterable; +import com.github.steveash.guavate.Guavate; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; public abstract class AbstractMessageIdManagerStorageTest { public static final Flags FLAGS = new Flags(); @@ -58,11 +53,6 @@ public abstract class AbstractMessageIdManagerStorageTest { private static final MessageUid messageUid1 = MessageUid.of(111); private static final MessageUid messageUid2 = MessageUid.of(222); - private static final Function<MessageResult, Map.Entry<MessageId, Flags>> toMapEntryOfFlags() { - return messageResult -> new AbstractMap.SimpleEntry<>(messageResult.getMessageId(), messageResult.getFlags()); - } - - private MessageIdManagerTestSystem testingData; private MessageIdManager messageIdManager; private Mailbox mailbox1; @@ -172,11 +162,11 @@ public abstract class AbstractMessageIdManagerStorageTest { MessageUid uidMessage1Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session) .get(0) .getUid(); - MessageUid uidMessage2Mailbox1 = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, session)) + MessageUid uidMessage2Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, session) + .stream() .filter(inMailbox(mailbox1.getMailboxId())) - .toList() - .get(0) + .findFirst() + .get() .getUid(); assertThat(uidMessage2Mailbox1).isGreaterThan(uidMessage1Mailbox1); @@ -192,11 +182,11 @@ public abstract class AbstractMessageIdManagerStorageTest { long modSeqMessage1Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session) .get(0) .getModSeq(); - long modSeqMessage2Mailbox1 = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, session)) + long modSeqMessage2Mailbox1 = messageIdManager.getMessages(ImmutableList.of(messageId2), FetchGroupImpl.MINIMAL, session) + .stream() .filter(inMailbox(mailbox1.getMailboxId())) - .toList() - .get(0) + .findFirst() + .get() .getModSeq(); assertThat(modSeqMessage2Mailbox1).isGreaterThan(modSeqMessage1Mailbox1); @@ -211,11 +201,11 @@ public abstract class AbstractMessageIdManagerStorageTest { messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); - MessageResult messageResult2 = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)) + MessageResult messageResult2 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session) + .stream() .filter(inMailbox(mailbox1.getMailboxId())) - .toList() - .get(0); + .findFirst() + .get(); MessageUid messageUid2 = messageResult2.getUid(); long modSeq2 = messageResult2.getModSeq(); @@ -229,9 +219,10 @@ public abstract class AbstractMessageIdManagerStorageTest { messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session); - List<MailboxId> messageMailboxIds = FluentIterable.from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)) - .transform(MessageResult::getMailboxId) - .toList(); + List<MailboxId> messageMailboxIds = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session) + .stream() + .map(MessageResult::getMailboxId) + .collect(Guavate.toImmutableList()); assertThat(messageMailboxIds).containsOnly(mailbox1.getMailboxId(), mailbox3.getMailboxId()); } @@ -245,11 +236,11 @@ public abstract class AbstractMessageIdManagerStorageTest { messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session); - MessageResult messageResult3 = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)) + MessageResult messageResult3 = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session) + .stream() .filter(inMailbox(mailbox3.getMailboxId())) - .toList() - .get(0); + .findFirst() + .get(); assertThat(messageResult3.getFlags()).isEqualTo(newFlags); } @@ -389,11 +380,11 @@ public abstract class AbstractMessageIdManagerStorageTest { messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); - - List<Flags> flags = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session)) - .transform(MessageResult::getFlags) - .toList(); + + List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session) + .stream() + .map(MessageResult::getFlags) + .collect(Guavate.toImmutableList()); assertThat(flags).hasSize(2); assertThat(flags.get(0)).isEqualTo(newFlags); @@ -407,11 +398,11 @@ public abstract class AbstractMessageIdManagerStorageTest { MessageId messageId2 = testingData.persist(mailbox1.getMailboxId(), messageUid2, FLAGS, session); messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId2, ImmutableList.of(mailbox1.getMailboxId()), session); - - List<Flags> flags = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session)) - .transform(MessageResult::getFlags) - .toList(); + + List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session) + .stream() + .map(MessageResult::getFlags) + .collect(Guavate.toImmutableList()); assertThat(flags).hasSize(1); assertThat(flags.get(0)).isEqualTo(FLAGS); @@ -422,12 +413,12 @@ public abstract class AbstractMessageIdManagerStorageTest { Flags newFlags = new Flags(Flags.Flag.SEEN); MessageId messageId1 = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session); - messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.<MailboxId>of(), session); + messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(), session); - List<Flags> flags = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session)) - .transform(MessageResult::getFlags) - .toList(); + List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session) + .stream() + .map(MessageResult::getFlags) + .collect(Guavate.toImmutableList()); assertThat(flags).hasSize(1); assertThat(flags.get(0)).isEqualTo(FLAGS); @@ -440,10 +431,10 @@ public abstract class AbstractMessageIdManagerStorageTest { messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(mailbox2.getMailboxId()), session); - List<Flags> flags = FluentIterable - .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session)) - .transform(MessageResult::getFlags) - .toList(); + List<Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session) + .stream() + .map(MessageResult::getFlags) + .collect(Guavate.toImmutableList()); assertThat(flags).hasSize(1); assertThat(flags.get(0)).isEqualTo(FLAGS); @@ -457,14 +448,9 @@ public abstract class AbstractMessageIdManagerStorageTest { messageIdManager.setFlags(newFlags, MessageManager.FlagsUpdateMode.ADD, messageId1, ImmutableList.of(mailbox1.getMailboxId(), mailbox2.getMailboxId()), session); - final List<Map.Entry<MessageId, Flags>> entries = FluentIterable.from(messageIdManager.getMessages(ImmutableList.of(messageId1, messageId2), FetchGroupImpl.MINIMAL, session)) - .transform(toMapEntryOfFlags()) - .toList(); - ImmutableMap.Builder<MessageId, Flags> builder = ImmutableMap.builder(); - for (Map.Entry<MessageId, Flags> entry : entries) { - builder.put(entry); - } - Map<MessageId, Flags> flags = builder.build(); + Map<MessageId, Flags> flags = messageIdManager.getMessages(ImmutableList.of(messageId1, messageId2), FetchGroupImpl.MINIMAL, session) + .stream() + .collect(Guavate.toImmutableMap(MessageResult::getMessageId, MessageResult::getFlags)); assertThat(flags).hasSize(2); assertThat(flags.get(messageId1)).isEqualTo(newFlags); http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java index bd86c44..7a93597 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java @@ -22,15 +22,14 @@ package org.apache.james.mailbox.store; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - import java.util.AbstractMap; import java.util.ArrayList; import java.util.List; import java.util.Map; - +import java.util.function.Function; +import java.util.function.Predicate; import javax.mail.Flags; -import org.apache.commons.lang.NotImplementedException; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageUid; @@ -55,12 +54,11 @@ import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; import org.apache.james.mailbox.store.user.SubscriptionMapper; +import org.apache.commons.lang.NotImplementedException; -import com.google.common.base.Function; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; import com.google.common.base.Throwables; -import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableMap; public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory { @@ -162,17 +160,17 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory @Override public List<MailboxMessage> find(final List<MessageId> messageIds, MessageMapper.FetchType fetchType) { - return FluentIterable.from(messages) + return messages.stream() .filter(withMessageIdOneOf(messageIds)) - .toList(); + .collect(Guavate.toImmutableList()); } @Override public List<MailboxId> findMailboxes(final MessageId messageId) { - return FluentIterable.from(messages) + return messages.stream() .filter(withMessageId(messageId)) - .transform(MailboxMessage::getMailboxId) - .toList(); + .map(MailboxMessage::getMailboxId) + .collect(Guavate.toImmutableList()); } @Override @@ -188,28 +186,28 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory @Override public void delete(final MessageId messageId) { messages.removeAll( - FluentIterable.from(messages) + messages.stream() .filter(withMessageId(messageId)) - .toList()); + .collect(Guavate.toImmutableList())); } @Override public void delete(final MessageId messageId, final List<MailboxId> mailboxIds) { messages.removeAll( - FluentIterable.from(messages) + messages.stream() .filter(withMessageId(messageId)) .filter(inMailboxes(mailboxIds)) - .toList()); + .collect(Guavate.toImmutableList())); } @Override public Map<MailboxId, UpdatedFlags> setFlags(MessageId messageId, List<MailboxId> mailboxIds, Flags newState, MessageManager.FlagsUpdateMode updateMode) throws MailboxException { - final List<Map.Entry<MailboxId, UpdatedFlags>> entries = FluentIterable.from(messages) + final List<Map.Entry<MailboxId, UpdatedFlags>> entries = messages.stream() .filter(withMessageId(messageId)) .filter(inMailboxes(mailboxIds)) - .transform(toMapEntryOfUpdatedFlags(newState, updateMode)) + .map(toMapEntryOfUpdatedFlags(newState, updateMode)) .filter(isChanged()) - .toList(); + .collect(Guavate.toImmutableList()); ImmutableMap.Builder<MailboxId, UpdatedFlags> builder = ImmutableMap.builder(); for (Map.Entry<MailboxId, UpdatedFlags> entry : entries) { builder.put(entry); http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java index 74c6e85..69439ca 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMailboxAssert.java @@ -20,13 +20,12 @@ package org.apache.james.mailbox.store.mail.model; import static org.assertj.core.api.Assertions.assertThat; - import java.util.List; import org.apache.james.mailbox.model.MailboxId; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Objects; -import com.google.common.collect.FluentIterable; import com.google.common.collect.Lists; public class ListMailboxAssert { @@ -34,10 +33,10 @@ public class ListMailboxAssert { private final List<Mailbox> actual; private final List<InnerMailbox> mailboxtoInnerMailbox(List<Mailbox> mailboxes) { - return FluentIterable.from(mailboxes) - .transform(mailbox -> + return mailboxes.stream() + .map(mailbox -> new InnerMailbox(mailbox.getMailboxId(), mailbox.getUser(), mailbox.getName(), mailbox.getNamespace())) - .toList(); + .collect(Guavate.toImmutableList()); } private ListMailboxAssert(List<Mailbox> actual) { http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java index b54b423..215b8c1 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessageAssert.java @@ -20,35 +20,35 @@ package org.apache.james.mailbox.store.mail.model; import static org.assertj.core.api.Assertions.assertThat; - import java.io.IOException; import java.util.Date; import java.util.List; -import org.apache.commons.io.IOUtils; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageId; +import org.apache.commons.io.IOUtils; -import com.google.common.base.Charsets; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Objects; import com.google.common.base.Throwables; -import com.google.common.collect.FluentIterable; import com.google.common.collect.Lists; public class ListMessageAssert { private final List<MailboxMessage> actual; private final List<InnerMessage> messageToInnerMessage(List<MailboxMessage> messages) { - return FluentIterable.from(messages).transform(message -> { - try { - return new InnerMessage(message.getMessageId(), message.getUid(), message.getMailboxId(), message.getInternalDate(), message.getBodyOctets(), - message.getFullContentOctets(), message.getMediaType(), message.getSubType(), IOUtils.toString(message.getFullContent(), Charsets.UTF_8)); - } catch (IOException e) { - Throwables.propagate(e); - return null; - } - }).toList(); + return messages.stream() + .map(message -> { + try { + return new InnerMessage(message.getMessageId(), message.getUid(), message.getMailboxId(), message.getInternalDate(), message.getBodyOctets(), + message.getFullContentOctets(), message.getMediaType(), message.getSubType(), IOUtils.toString(message.getFullContent())); + } catch (IOException e) { + Throwables.propagate(e); + return null; + } + }) + .collect(Guavate.toImmutableList()); } private ListMessageAssert(List<MailboxMessage> actual) { http://git-wip-us.apache.org/repos/asf/james-project/blob/b3864f35/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java index 7d974ff..11153b8 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/ListMessagePropertiesAssert.java @@ -20,18 +20,18 @@ package org.apache.james.mailbox.store.mail.model; import static org.assertj.core.api.Assertions.assertThat; - import java.util.List; +import java.util.function.Function; -import com.google.common.base.Function; +import com.github.steveash.guavate.Guavate; import com.google.common.base.Objects; -import com.google.common.collect.FluentIterable; + public class ListMessagePropertiesAssert { private final List<InnerProperty> propertiesToInnerProperties(List<Property> properties) { - return FluentIterable.from(properties) - .transform(propertyToInnerProperty()) - .toList(); + return properties.stream() + .map(propertyToInnerProperty()) + .collect(Guavate.toImmutableList()); } private final Function<Property, InnerProperty> propertyToInnerProperty() { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org