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 2017/08/31 01:32:15 UTC

[03/22] james-project git commit: JAMES-2127 MailboxAPI: Stream instead of FluentIterable.from

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 <qn...@linagora.com>
Authored: Fri Aug 25 15:46:05 2017 +0700
Committer: quynhn <qn...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org