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:13 UTC

[01/22] james-project git commit: JAMES-2127 MailboxAPI: Replaced guava's Optional by java.util.Optional and it's related

Repository: james-project
Updated Branches:
  refs/heads/master 4b334fc14 -> 6553f4b50


http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/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 03d45bd..6d4fbde 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
@@ -30,14 +30,11 @@ import java.util.List;
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
-
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 import javax.mail.internet.SharedInputStream;
 import javax.mail.util.SharedFileInputStream;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.io.input.TeeInputStream;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
@@ -91,6 +88,8 @@ import org.apache.james.mime4j.stream.MimeConfig;
 import org.apache.james.mime4j.stream.MimeTokenStream;
 import org.apache.james.mime4j.stream.RecursionMode;
 import org.apache.james.util.IteratorWrapper;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.io.input.TeeInputStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -483,8 +482,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
         final Flags permanentFlags = getPermanentFlags(mailboxSession);
         final long uidValidity = getMailboxEntity().getUidValidity();
         MessageUid uidNext = mapperFactory.getMessageMapper(mailboxSession).getLastUid(mailbox)
-                .transform(MessageUid::next)
-                .or(MessageUid.MIN_VALUE);
+                .map(MessageUid::next)
+                .orElse(MessageUid.MIN_VALUE);
         final long highestModSeq = mapperFactory.getMessageMapper(mailboxSession).getHighestModSeq(mailbox);
         final long messageCount;
         final long unseenCount;

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
index 88dea75..bf3b980 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.store.mail;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxSession;
@@ -36,7 +36,6 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.transaction.TransactionalMapper;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Iterators;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
index 22a938a..dc3ee27 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.store.mail;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MessageUid;
@@ -36,8 +36,6 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.Property;
 import org.apache.james.mailbox.store.transaction.Mapper;
 
-import com.google.common.base.Optional;
-
 /**
  * Maps {@link MailboxMessage} in a {@link org.apache.james.mailbox.MessageManager}. A {@link MessageMapper} has a lifecycle from the start of a request
  * to the end of the request.

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageUtils.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageUtils.java
index 9e1d958..44f385d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageUtils.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.store.mail;
 
 import java.util.Iterator;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxSession;
@@ -32,7 +32,6 @@ import org.apache.james.mailbox.store.FlagsUpdateCalculator;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java
index 6138b3c..47537a7 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java
@@ -18,14 +18,14 @@
  ****************************************************************/
 package org.apache.james.mailbox.store.mail;
 
+import java.util.Optional;
+
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Optional;
-
 /**
  * Take care of provide uids for a given {@link Mailbox}. Be aware that implementations
  * need to be thread-safe!

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java
index f4c624c..2431b43 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java
@@ -23,12 +23,11 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Flags;
 import javax.mail.internet.SharedInputStream;
 import javax.mail.util.SharedByteArrayInputStream;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
@@ -38,10 +37,10 @@ import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.DelegatingMailboxMessage;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.commons.io.IOUtils;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Ints;
@@ -61,8 +60,8 @@ public class SimpleMailboxMessage extends DelegatingMailboxMessage {
         private Flags flags;
         private PropertyBuilder propertyBuilder;
         private MailboxId mailboxId;
-        private Optional<MessageUid> uid = Optional.absent();
-        private Optional<Long> modseq = Optional.absent();
+        private Optional<MessageUid> uid = Optional.empty();
+        private Optional<Long> modseq = Optional.empty();
         private ImmutableList.Builder<MessageAttachment> attachments = ImmutableList.builder();
 
         public Builder messageId(MessageId messageId) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
index 13155e7..64d8473 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java
@@ -19,6 +19,7 @@
 package org.apache.james.mailbox.store.search;
 
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
@@ -34,8 +35,6 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 /**
  * {@link MessageSearchIndex} which needs to get registered as global {@link MailboxListener} and so get
  * notified about message changes. This will then allow to update the underlying index.
@@ -113,7 +112,7 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
     }
 
     private Optional<MailboxMessage> retrieveMailboxMessage(MailboxSession session, EventFactory.AddedImpl added, Mailbox mailbox, MessageUid next) {
-        Optional<MailboxMessage> firstChoice = Optional.fromNullable(added.getAvailableMessages().get(next));
+        Optional<MailboxMessage> firstChoice = Optional.ofNullable(added.getAvailableMessages().get(next));
         if (firstChoice.isPresent()) {
             return firstChoice;
         } else {
@@ -124,7 +123,7 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex,
             } catch (Exception e) {
                 LOGGER.error(String.format("Could not retrieve message %d in mailbox %s",
                     next, mailbox.getMailboxId().serialize()), e);
-                return Optional.absent();
+                return Optional.empty();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
index 08adfd3..496f481 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.store.search;
 import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
@@ -33,8 +34,6 @@ import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Optional;
-
 /**
  * An index which can be used to search for MailboxMessage UID's that match a {@link SearchQuery}.
  * 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/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 7f99d34..47a8f2f 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
@@ -33,8 +33,8 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Optional;
 import java.util.TimeZone;
-
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MessageUid;
@@ -72,7 +72,6 @@ import org.apache.james.mime4j.utils.search.MessageMatcher;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
index 899e6f1..a20217b 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
@@ -20,13 +20,12 @@
 package org.apache.james.mailbox.store;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
@@ -48,8 +47,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public abstract class AbstractMailboxManagerAttachmentTest {
     private static final String USERNAME = "user@domain.tld";
     private static final Date SUN_SEP_9TH_2001 = new Date(1000000000000L);

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
index 5feb68f..9661c43 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxMessageResultIteratorTest.java
@@ -20,19 +20,17 @@
 package org.apache.james.mailbox.store;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Optional;
 import java.util.Set;
-
 import javax.mail.Flags;
 import javax.mail.util.SharedByteArrayInputStream;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxCounters;
@@ -47,9 +45,9 @@ 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.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.apache.commons.lang.NotImplementedException;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Iterables;
 
 public class StoreMailboxMessageResultIteratorTest {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 29c5591..3cfc96d 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -23,13 +23,12 @@ import static org.apache.james.mailbox.store.mail.model.ListMessageAssert.assert
 import static org.apache.james.mailbox.store.mail.model.ListMessagePropertiesAssert.assertProperties;
 import static org.apache.james.mailbox.store.mail.model.MessageAssert.assertThat;
 import static org.assertj.core.api.Assertions.assertThat;
-
 import java.io.IOException;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
-
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 import javax.mail.util.SharedByteArrayInputStream;
@@ -59,7 +58,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 
 public abstract class MessageMapperTest {
@@ -478,14 +476,14 @@ public abstract class MessageMapperTest {
 
     @Test
     public void getLastUidShouldReturnEmptyOnEmptyMailbox() throws MailboxException {
-        assertThat(messageMapper.getLastUid(benwaInboxMailbox)).isEqualTo(Optional.absent());
+        assertThat(messageMapper.getLastUid(benwaInboxMailbox)).isEqualTo(Optional.empty());
     }
 
     @Test
     public void insertingAMessageShouldIncrementLastUid() throws MailboxException {
         messageMapper.add(benwaInboxMailbox, message1);
         Optional<MessageUid> uid = messageMapper.getLastUid(benwaInboxMailbox);
-        assertThat(uid).isNotEqualTo(Optional.absent());
+        assertThat(uid).isNotEqualTo(Optional.empty());
         messageMapper.add(benwaInboxMailbox, message2);
         assertThat(messageMapper.getLastUid(benwaInboxMailbox).get()).isGreaterThan(uid.get());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
index ff2f0f3..581a2df 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/MessageParserTest.java
@@ -20,9 +20,8 @@
 package org.apache.james.mailbox.store.mail.model.impl;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.Cid;
@@ -30,8 +29,6 @@ import org.apache.james.mailbox.model.MessageAttachment;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class MessageParserTest {
 
     private MessageParser testee;
@@ -76,7 +73,7 @@ public class MessageParserTest {
         List<MessageAttachment> attachments = testee.retrieveAttachments(ClassLoader.getSystemResourceAsStream("eml/oneAttachmentWithoutName.eml"));
 
         assertThat(attachments).hasSize(1);
-        assertThat(attachments.get(0).getName()).isEqualTo(Optional.absent());
+        assertThat(attachments.get(0).getName()).isEqualTo(Optional.empty());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/ReIndexerImpl.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/ReIndexerImpl.java b/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/ReIndexerImpl.java
index 48e7367..6f68663 100644
--- a/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/ReIndexerImpl.java
+++ b/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/ReIndexerImpl.java
@@ -22,7 +22,7 @@ package org.apache.james.mailbox.indexer;
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-
+import java.util.Optional;
 import javax.inject.Inject;
 
 import org.apache.james.mailbox.MailboxManager;
@@ -43,7 +43,6 @@ import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Iterables;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistration.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistration.java b/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistration.java
index eec1716..9e9a105 100644
--- a/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistration.java
+++ b/mailbox/tool/src/main/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistration.java
@@ -19,13 +19,12 @@
 
 package org.apache.james.mailbox.indexer.registrations;
 
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.model.MailboxPath;
 
-import com.google.common.base.Optional;
-
 public class GlobalRegistration implements MailboxListener {
 
     private final ConcurrentHashMap<MailboxPath, Boolean> isPathDeleted;
@@ -38,10 +37,10 @@ public class GlobalRegistration implements MailboxListener {
 
     public Optional<MailboxPath> getPathToIndex(MailboxPath mailboxPath) {
         if (isPathDeleted.get(mailboxPath) != null) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(
-            Optional.fromNullable(nameCorrespondence.get(mailboxPath)).or(mailboxPath));
+            Optional.ofNullable(nameCorrespondence.get(mailboxPath)).orElse(mailboxPath));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
index fddd82f..1fbda99 100644
--- a/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
+++ b/mailbox/tool/src/test/java/org/apache/james/mailbox/indexer/registrations/GlobalRegistrationTest.java
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.indexer.registrations;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
 
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.mock.MockMailboxSession;
@@ -29,8 +30,6 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class GlobalRegistrationTest {
     public static final MailboxPath INBOX = new MailboxPath("#private", "btellier@apache.org", "INBOX");
     public static final MailboxPath NEW_PATH = new MailboxPath("#private", "btellier@apache.org", "INBOX.new");
@@ -65,7 +64,7 @@ public class GlobalRegistrationTest {
     public void pathToIndexShouldBeNullifiedByDeletedEvents() {
         MailboxListener.Event event = eventFactory.mailboxDeleted(session, MAILBOX);
         globalRegistration.event(event);
-        assertThat(globalRegistration.getPathToIndex(INBOX)).isEqualTo(Optional.absent());
+        assertThat(globalRegistration.getPathToIndex(INBOX)).isEqualTo(Optional.empty());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java b/mailbox/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java
index d3df0d1..d2bfb49 100644
--- a/mailbox/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java
+++ b/mailbox/zoo-seq-provider/src/main/java/org/apache/james/mailbox/store/mail/ZooUidProvider.java
@@ -18,14 +18,15 @@
  ****************************************************************/
 package org.apache.james.mailbox.store.mail;
 
-import org.apache.commons.lang.NotImplementedException;
+import java.util.Optional;
+
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.commons.lang.NotImplementedException;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.netflix.curator.RetryPolicy;
 import com.netflix.curator.framework.CuratorFramework;
@@ -81,7 +82,7 @@ public class ZooUidProvider implements UidProvider {
                 if (value.succeeded()) {
                     Long postValue = value.postValue();
                     if (postValue == 0) {
-                        return Optional.absent();
+                        return Optional.empty();
                     }
                     return Optional.of(MessageUid.of(value.postValue()));
                 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java b/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
index 26028b5..a9dfa23 100644
--- a/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
+++ b/mailbox/zoo-seq-provider/src/test/java/org/apache/james/mailbox/store/mail/ZooUidProviderTest.java
@@ -19,7 +19,7 @@
 package org.apache.james.mailbox.store.mail;
 
 import static org.junit.Assert.assertEquals;
-
+import java.util.Optional;
 import java.util.UUID;
 
 import org.apache.james.mailbox.MessageUid;
@@ -30,7 +30,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
 import com.netflix.curator.RetryPolicy;
 import com.netflix.curator.framework.CuratorFramework;
 import com.netflix.curator.framework.CuratorFrameworkFactory;
@@ -178,7 +177,7 @@ public class ZooUidProviderTest {
 	    public void testLastUid() throws Exception {
 	        System.out.println("Testing lastUid");
 	        Optional<MessageUid> result = uuidProvider.lastUid(null, mailboxUUID);
-	        assertEquals("Next UID is empty", Optional.absent(), result);
+	        assertEquals("Next UID is empty", Optional.empty(), result);
 	        MessageUid nextResult = uuidProvider.nextUid(null, mailboxUUID);
 	        assertEquals("Next UID is 1", 1, nextResult.asLong());
 	    }
@@ -190,7 +189,7 @@ public class ZooUidProviderTest {
 	    public void testLongLastUid() throws Exception {
 	        System.out.println("Testing long lastUid");
 	        Optional<MessageUid> result = longProvider.lastUid(null, mailboxLong);
-	        assertEquals("Next UID is empty", Optional.absent(), result);
+	        assertEquals("Next UID is empty", Optional.empty(), result);
 	        MessageUid nextResult = longProvider.nextUid(null, mailboxLong);
 	        assertEquals("Next UID is 1", 1, nextResult.asLong());
 	    }


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


[21/22] james-project git commit: JAMES-2131 Document additional metrics

Posted by bt...@apache.org.
JAMES-2131 Document additional metrics


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c4aafc1e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c4aafc1e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c4aafc1e

Branch: refs/heads/master
Commit: c4aafc1e0d95d1e86480599dc90477f978985ac4
Parents: edf29e3
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 30 11:49:58 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:45 2017 +0700

----------------------------------------------------------------------
 src/site/xdoc/server/metrics.xml | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c4aafc1e/src/site/xdoc/server/metrics.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/server/metrics.xml b/src/site/xdoc/server/metrics.xml
index 189c3b7..de777aa 100644
--- a/src/site/xdoc/server/metrics.xml
+++ b/src/site/xdoc/server/metrics.xml
@@ -40,6 +40,7 @@
             <p>
                 Here are the available metrics :
                 <ul>
+                    <li>James JVM metrics</li>
                     <li>Number of active SMTP connections</li>
                     <li>Number of SMTP commands received</li>
                     <li>Number of active IMAP connections</li>
@@ -56,6 +57,7 @@
                     <li>Diverse Response time percentiles, counts and rates for each JMS message queue</li>
                     <li>Per mailet and per matcher Response time percentiles</li>
                     <li>Diverse Response time percentiles, counts and rates for DNS</li>
+                    <li>Cassandra Java driver metrics</li>
                 </ul>
             </p>
 


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


[22/22] james-project git commit: JAMES-2131 Add new boards to README

Posted by bt...@apache.org.
JAMES-2131 Add new boards to README


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d6cfa25d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d6cfa25d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d6cfa25d

Branch: refs/heads/master
Commit: d6cfa25df5b381f77237661211c321223fc8eb1d
Parents: 085a416
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 30 11:55:44 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:45 2017 +0700

----------------------------------------------------------------------
 grafana-reporting/README.md | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d6cfa25d/grafana-reporting/README.md
----------------------------------------------------------------------
diff --git a/grafana-reporting/README.md b/grafana-reporting/README.md
index 78a9d27..d9c4786 100644
--- a/grafana-reporting/README.md
+++ b/grafana-reporting/README.md
@@ -24,9 +24,11 @@ Note that you need to run a guice/cassandra version of James.
 
 ## Presentation of the different boards
 
+ - JVM statistics
  - Percentiles for IMAP / JMAP / SMTP commands
  - Requests counts for IMAP / JMAP / SMTP commands
  - Statistics about Mailet / Matcher execution times
  - Statistics about Mail queues
  - Statistics about DNS calls
  - Some other, diverse informations on the James server internals
+ - Cassandra driver statistics


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


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

Posted by bt...@apache.org.
JAMES-2127 Protocol: 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/a93201e6
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a93201e6
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a93201e6

Branch: refs/heads/master
Commit: a93201e6b6566c0ddbf42eeb9401900c66a04edd
Parents: 0c2ae45
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 16:16:30 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:02 2017 +0700

----------------------------------------------------------------------
 .../apache/james/imap/api/ImapConfiguration.java    |  8 ++++----
 .../imap/processor/GetAnnotationProcessor.java      | 16 +++++++++-------
 .../smtp/AllButStartTlsDelimiterChannelHandler.java |  6 +++---
 3 files changed, 16 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a93201e6/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java b/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
index 48295e4..792b579 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
@@ -24,10 +24,10 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.lang.StringUtils;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableSet;
 
 public class ImapConfiguration {
@@ -97,10 +97,10 @@ public class ImapConfiguration {
         }
 
         public ImapConfiguration build() {
-            ImmutableSet<String> normalizeDisableCaps = FluentIterable.from(disabledCaps)
+            ImmutableSet<String> normalizeDisableCaps = disabledCaps.stream()
                     .filter(Builder::noBlankString)
-                    .transform(StringUtils::normalizeSpace)
-                    .toSet();
+                    .map(StringUtils::normalizeSpace)
+                    .collect(Guavate.toImmutableSet());
             return new ImapConfiguration(
                     enableIdle.orElse(DEFAULT_ENABLE_IDLE),
                     idleTimeInterval.orElse(DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS),

http://git-wip-us.apache.org/repos/asf/james-project/blob/a93201e6/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
index d194632..99f58d4 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
@@ -24,6 +24,7 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.function.Predicate;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
@@ -45,12 +46,11 @@ import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.util.MDCBuilder;
+import org.apache.commons.lang.NotImplementedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.commons.lang.NotImplementedException;
 
-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.ImmutableSortedSet;
 
@@ -113,7 +113,9 @@ public class GetAnnotationProcessor extends AbstractMailboxProcessor<GetAnnotati
             .map(maxSizeInput -> (annotation.size() <= maxSizeInput))
             .orElse(true);
 
-        return FluentIterable.from(mailboxAnnotations).filter(lowerPredicate).toList();
+        return mailboxAnnotations.stream()
+            .filter(lowerPredicate)
+            .collect(Guavate.toImmutableList());
     }
 
     private List<MailboxAnnotation> getMailboxAnnotations(ImapSession session, Set<MailboxAnnotationKey> keys, GetAnnotationRequest.Depth depth, MailboxPath mailboxPath) throws MailboxException {
@@ -141,10 +143,10 @@ public class GetAnnotationProcessor extends AbstractMailboxProcessor<GetAnnotati
     private Optional<Integer> getMaxSizeOfOversizedItems(List<MailboxAnnotation> mailboxAnnotations, final Integer maxsize) {
         Predicate<MailboxAnnotation> filterOverSizedAnnotation = annotation -> annotation.size() > maxsize;
 
-        ImmutableSortedSet<Integer> overLimitSizes = FluentIterable.from(mailboxAnnotations)
+        ImmutableSortedSet<Integer> overLimitSizes = mailboxAnnotations.stream()
             .filter(filterOverSizedAnnotation)
-            .transform(MailboxAnnotation::size)
-            .toSortedSet(Comparator.reverseOrder());
+            .map(MailboxAnnotation::size)
+            .collect(Guavate.toImmutableSortedSet(Comparator.reverseOrder()));
 
         if (overLimitSizes.isEmpty()) {
             return Optional.empty();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a93201e6/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsDelimiterChannelHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsDelimiterChannelHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsDelimiterChannelHandler.java
index 268a9c1..b2439c5 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsDelimiterChannelHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/AllButStartTlsDelimiterChannelHandler.java
@@ -31,7 +31,7 @@ import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
 import com.google.common.base.CharMatcher;
 import com.google.common.base.Charsets;
 import com.google.common.base.Splitter;
-import com.google.common.collect.FluentIterable;
+
 
 public class AllButStartTlsDelimiterChannelHandler extends DelimiterBasedFrameDecoder {
 
@@ -68,12 +68,12 @@ public class AllButStartTlsDelimiterChannelHandler extends DelimiterBasedFrameDe
     }
 
     private boolean multiPartsAndOneStartTls(List<String> parts) {
-        return FluentIterable.from(parts)
+        return parts.stream()
             .anyMatch(line -> line.startsWith(STARTTLS)) && parts.size() > 1;
     }
 
     private boolean hasInvalidStartTlsPart(List<String> parts) {
-        return FluentIterable.from(parts)
+        return parts.stream()
             .anyMatch(line -> line.startsWith(STARTTLS) && !line.endsWith(STARTTLS));
     }
 }


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


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

Posted by bt...@apache.org.
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


[08/22] james-project git commit: JAMES-2127 Server: Replaced guava's Optional by java.util.Optional and it's related

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
index dc86e09..5e68d80 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SpecialAddressesUtils.java
@@ -20,8 +20,8 @@ package org.apache.james.transport.util;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
-
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
@@ -37,8 +37,6 @@ import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
@@ -95,7 +93,9 @@ public class SpecialAddressesUtils {
             case SENDER:
             case FROM:
             case REVERSE_PATH:
-                return Optional.fromNullable(mail.getSender()).asSet();
+                return Optional.ofNullable(mail.getSender())
+                    .map(sender -> ImmutableSet.of(sender))
+                    .orElse(ImmutableSet.of());
             case REPLY_TO:
                 return getReplyTosFromMail(mail);
             case RECIPIENTS:
@@ -184,7 +184,9 @@ public class SpecialAddressesUtils {
         switch (specialAddressKind) {
             case SENDER:
             case REVERSE_PATH:
-                return Optional.fromNullable(mail.getSender()).asSet();
+                return Optional.ofNullable(mail.getSender())
+                    .map(ImmutableSet::of)
+                    .orElse(ImmutableSet.of());
             case FROM:
                 try {
                     InternetAddress[] fromArray = (InternetAddress[]) mail.getMessage().getFrom();
@@ -254,6 +256,7 @@ public class SpecialAddressesUtils {
                 .withContext(mailet.getMailetContext())
                 .allowedSpecials(allowedSpecials)
                 .extract(givenAddress);
-        return FluentIterable.from(extractAddresses).first();
+        return extractAddresses.stream()
+            .findFirst();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ForwardTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ForwardTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ForwardTest.java
index 8e7f193..bc2b318 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ForwardTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ForwardTest.java
@@ -20,14 +20,11 @@
 package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
-
 import java.net.UnknownHostException;
 import java.util.Collection;
 import java.util.Properties;
-
 import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
@@ -143,17 +140,17 @@ public class ForwardTest {
 
     @Test
     public void getReplyToShouldReturnNull() throws Exception {
-        assertThat(forward.getReplyTo()).isAbsent();
+        assertThat(forward.getReplyTo()).isEmpty();
     }
 
     @Test
     public void getReversePathShouldReturnAbsent() throws Exception {
-        assertThat(forward.getReversePath()).isAbsent();
+        assertThat(forward.getReversePath()).isEmpty();
     }
 
     @Test
     public void getSenderShouldReturnAbsent() throws Exception {
-        assertThat(forward.getSender()).isAbsent();
+        assertThat(forward.getSender()).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
index 1d6b2aa..3c99341 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/RedirectTest.java
@@ -20,13 +20,10 @@
 package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
-
 import java.net.UnknownHostException;
 import java.util.Properties;
-
 import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
@@ -233,7 +230,7 @@ public class RedirectTest {
                 .build();
         redirect.init(mailetConfig);
 
-        assertThat(redirect.getReversePath()).isAbsent();
+        assertThat(redirect.getReversePath()).isEmpty();
     }
 
     @Test
@@ -286,7 +283,7 @@ public class RedirectTest {
         message.setText("This is a fake mail");
         FakeMail mail = FakeMail.from(message);
 
-        assertThat(redirect.getReversePath(mail)).isAbsent();
+        assertThat(redirect.getReversePath(mail)).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AddressExtractorTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AddressExtractorTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AddressExtractorTest.java
index 8303a9e..f9db7eb 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AddressExtractorTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/AddressExtractorTest.java
@@ -20,12 +20,10 @@
 package org.apache.james.transport.mailets.redirect;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
-
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.MailAddress;
@@ -35,7 +33,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 public class AddressExtractorTest {
@@ -103,7 +100,7 @@ public class AddressExtractorTest {
     public void extractShouldReturnEmptyWhenAddressListIsAbsent() throws Exception {
         List<MailAddress> extract = AddressExtractor.withContext(mailetContext)
                 .allowedSpecials(ImmutableList.<String> of())
-                .extract(Optional.<String> absent());
+                .extract(Optional.empty());
 
         assertThat(extract).isEmpty();;
     }
@@ -141,7 +138,7 @@ public class AddressExtractorTest {
         Optional<MailAddress> specialAddress = AddressExtractor.withContext(mailetContext)
                 .allowedSpecials(ImmutableList.<String> of())
                 .getSpecialAddress(null);
-        assertThat(specialAddress).isAbsent();
+        assertThat(specialAddress).isEmpty();
     }
 
     @Test
@@ -149,7 +146,7 @@ public class AddressExtractorTest {
         Optional<MailAddress> specialAddress = AddressExtractor.withContext(mailetContext)
                 .allowedSpecials(ImmutableList.<String> of())
                 .getSpecialAddress("");
-        assertThat(specialAddress).isAbsent();
+        assertThat(specialAddress).isEmpty();
     }
 
     @Test
@@ -157,7 +154,7 @@ public class AddressExtractorTest {
         Optional<MailAddress> specialAddress = AddressExtractor.withContext(mailetContext)
                 .allowedSpecials(ImmutableList.<String> of())
                 .getSpecialAddress("user@james.org");
-        assertThat(specialAddress).isAbsent();
+        assertThat(specialAddress).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParametersTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParametersTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParametersTest.java
index 5fa59b0..7e23e47 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParametersTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParametersTest.java
@@ -20,11 +20,10 @@
 package org.apache.james.transport.mailets.redirect;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
 
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class LoadedOnceInitParametersTest {
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParametersTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParametersTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParametersTest.java
index 874fa61..b36608d 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParametersTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParametersTest.java
@@ -20,8 +20,7 @@
 package org.apache.james.transport.mailets.redirect;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
@@ -30,8 +29,6 @@ import org.apache.mailet.base.test.FakeMailetConfig;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class NotifyMailetInitParametersTest {
 
     private GenericMailet mailet;
@@ -320,7 +317,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> recipients = testee.getRecipients();
-        assertThat(recipients).isAbsent();
+        assertThat(recipients).isEmpty();
     }
 
     @Test
@@ -332,7 +329,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> recipients = testee.getRecipients();
-        assertThat(recipients).isAbsent();
+        assertThat(recipients).isEmpty();
     }
 
     @Test
@@ -358,7 +355,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> to = testee.getTo();
-        assertThat(to).isAbsent();
+        assertThat(to).isEmpty();
     }
 
     @Test
@@ -370,7 +367,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> to = testee.getTo();
-        assertThat(to).isAbsent();
+        assertThat(to).isEmpty();
     }
 
     @Test
@@ -396,7 +393,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> reversePath = testee.getReversePath();
-        assertThat(reversePath).isAbsent();
+        assertThat(reversePath).isEmpty();
     }
 
     @Test
@@ -408,7 +405,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> reversePath = testee.getReversePath();
-        assertThat(reversePath).isAbsent();
+        assertThat(reversePath).isEmpty();
     }
 
     @Test
@@ -434,7 +431,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> sender = testee.getSender();
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test
@@ -446,7 +443,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> sender = testee.getSender();
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test
@@ -485,7 +482,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> replyTo = testee.getReplyTo();
-        assertThat(replyTo).isAbsent();
+        assertThat(replyTo).isEmpty();
     }
 
     @Test
@@ -497,7 +494,7 @@ public class NotifyMailetInitParametersTest {
         InitParameters testee = NotifyMailetInitParameters.from(mailet);
 
         Optional<String> replyTo = testee.getReplyTo();
-        assertThat(replyTo).isAbsent();
+        assertThat(replyTo).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParametersTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParametersTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParametersTest.java
index 7134935..039e5da 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParametersTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParametersTest.java
@@ -20,8 +20,7 @@
 package org.apache.james.transport.mailets.redirect;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
@@ -30,8 +29,6 @@ import org.apache.mailet.base.test.FakeMailetConfig;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class RedirectMailetInitParametersTest {
 
     private GenericMailet mailet;
@@ -346,7 +343,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> recipients = testee.getRecipients();
-        assertThat(recipients).isAbsent();
+        assertThat(recipients).isEmpty();
     }
 
     @Test
@@ -358,7 +355,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> recipients = testee.getRecipients();
-        assertThat(recipients).isAbsent();
+        assertThat(recipients).isEmpty();
     }
 
     @Test
@@ -384,7 +381,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> to = testee.getTo();
-        assertThat(to).isAbsent();
+        assertThat(to).isEmpty();
     }
 
     @Test
@@ -396,7 +393,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> to = testee.getTo();
-        assertThat(to).isAbsent();
+        assertThat(to).isEmpty();
     }
 
     @Test
@@ -422,7 +419,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> reversePath = testee.getReversePath();
-        assertThat(reversePath).isAbsent();
+        assertThat(reversePath).isEmpty();
     }
 
     @Test
@@ -434,7 +431,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> reversePath = testee.getReversePath();
-        assertThat(reversePath).isAbsent();
+        assertThat(reversePath).isEmpty();
     }
 
     @Test
@@ -460,7 +457,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> sender = testee.getSender();
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test
@@ -472,7 +469,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> sender = testee.getSender();
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test
@@ -511,7 +508,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> replyTo = testee.getReplyTo();
-        assertThat(replyTo).isAbsent();
+        assertThat(replyTo).isEmpty();
     }
 
     @Test
@@ -523,7 +520,7 @@ public class RedirectMailetInitParametersTest {
         InitParameters testee = RedirectMailetInitParameters.from(mailet);
 
         Optional<String> replyTo = testee.getReplyTo();
-        assertThat(replyTo).isAbsent();
+        assertThat(replyTo).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java
index b2b325b..4066c5f 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/BouncerTest.java
@@ -22,17 +22,15 @@ package org.apache.james.transport.mailets.remoteDelivery;
 import static org.apache.james.transport.mailets.remoteDelivery.Bouncer.DELIVERY_ERROR;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
-
 import java.net.ConnectException;
 import java.net.SocketException;
 import java.net.UnknownHostException;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.SendFailedException;
 
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
@@ -40,8 +38,6 @@ import org.apache.mailet.base.test.FakeMailetConfig;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class BouncerTest {
     public static final String HELLO_NAME = "hello_name";
     public static final String BOUNCE_PROCESSOR = "bounce_processor";
@@ -74,7 +70,7 @@ public class BouncerTest {
                 "This is a permanent error; I've given up. Sorry it didn't work out. Below\n" +
                 "I include the list of recipients and the reason why I was unable to deliver\n" +
                 "your message.\n\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -103,7 +99,7 @@ public class BouncerTest {
                 "your message.\n" +
                 "\n" +
                 exceptionMessage + "\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -132,7 +128,7 @@ public class BouncerTest {
                 "your message.\n" +
                 "\n" +
                 "Remote mail server told me: " + exceptionMessage + "\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -162,7 +158,7 @@ public class BouncerTest {
                 "\n" +
                 "Unknown host: " + exceptionMessage + "\n" +
                 "This could be a DNS server error, a typo, or a problem with the recipient's mail server.\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -191,7 +187,7 @@ public class BouncerTest {
                 "your message.\n" +
                 "\n" +
                 exceptionMessage + "\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -220,7 +216,7 @@ public class BouncerTest {
                 "your message.\n" +
                 "\n" +
                 "Socket exception: " + exceptionMessage + "\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -249,7 +245,7 @@ public class BouncerTest {
                 "your message.\n" +
                 "\n" +
                 exceptionMessage + "\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -294,7 +290,7 @@ public class BouncerTest {
                 "This is a permanent error; I've given up. Sorry it didn't work out. Below\n" +
                 "I include the list of recipients and the reason why I was unable to deliver\n" +
                 "your message.\n\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -320,7 +316,7 @@ public class BouncerTest {
                 "This is a permanent error; I've given up. Sorry it didn't work out. Below\n" +
                 "I include the list of recipients and the reason why I was unable to deliver\n" +
                 "your message.\n\nnull\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -394,7 +390,7 @@ public class BouncerTest {
                 "I include the list of recipients and the reason why I was unable to deliver\n" +
                 "your message.\n\n" +
                 MailAddressFixture.ANY_AT_JAMES2.asString() + "\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }
@@ -423,7 +419,7 @@ public class BouncerTest {
                 "your message.\n\n" +
                 MailAddressFixture.ANY_AT_JAMES2.asString() + "\n" +
                 MailAddressFixture.OTHER_AT_JAMES2.asString() + "\n\n",
-            Optional.<MailAddress>absent());
+            Optional.empty());
         assertThat(mailetContext.getSentMails()).isEmpty();
         assertThat(mailetContext.getBouncedMails()).containsOnly(expected);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReplyToUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReplyToUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReplyToUtilsTest.java
index 8b5502f..77ad785 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReplyToUtilsTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/ReplyToUtilsTest.java
@@ -18,15 +18,14 @@
  ****************************************************************/
 package org.apache.james.transport.util;
 
-import static org.assertj.guava.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
 
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class ReplyToUtilsTest {
 
     @Test
@@ -37,7 +36,7 @@ public class ReplyToUtilsTest {
 
         Optional<MailAddress> replyTo = testee.getReplyTo(fakeMail);
 
-        assertThat(replyTo).isAbsent();
+        assertThat(replyTo).isEmpty();
     }
 
     @Test
@@ -48,7 +47,7 @@ public class ReplyToUtilsTest {
 
         Optional<MailAddress> replyTo = testee.getReplyTo(fakeMail);
 
-        assertThat(replyTo).isAbsent();
+        assertThat(replyTo).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
index ac12cf8..12994c3 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SenderUtilsTest.java
@@ -18,26 +18,25 @@
  ****************************************************************/
 package org.apache.james.transport.util;
 
-import static org.assertj.guava.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
 
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.test.FakeMail;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class SenderUtilsTest {
 
     @Test
     public void getSenderShouldReturnAbsentWhenSenderIsAbsent() throws Exception {
-        SenderUtils testee = SenderUtils.from(Optional.<MailAddress> absent());
+        SenderUtils testee = SenderUtils.from(Optional.empty());
 
         FakeMail fakeMail = FakeMail.defaultFakeMail();
 
         Optional<MailAddress> sender = testee.getSender(fakeMail);
 
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test
@@ -48,7 +47,7 @@ public class SenderUtilsTest {
 
         Optional<MailAddress> sender = testee.getSender(fakeMail);
 
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test
@@ -59,7 +58,7 @@ public class SenderUtilsTest {
 
         Optional<MailAddress> sender = testee.getSender(fakeMail);
 
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
index 52d9e68..550fdb3 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/util/SpecialAddressesUtilsTest.java
@@ -19,14 +19,12 @@
 package org.apache.james.transport.util;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
-
 import java.util.Collection;
 import java.util.List;
+import java.util.Optional;
 import java.util.Properties;
-
 import javax.mail.Session;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
@@ -43,7 +41,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 public class SpecialAddressesUtilsTest {
@@ -461,16 +458,16 @@ public class SpecialAddressesUtilsTest {
 
     @Test
     public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnAbsentWhenSenderInitParameterIsAbsent() throws Exception {
-        Optional<MailAddress> sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress(Optional.<String> absent(), ImmutableList.of("postmaster", "sender", "unaltered"));
+        Optional<MailAddress> sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress(Optional.empty(), ImmutableList.of("postmaster", "sender", "unaltered"));
 
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test
     public void getFirstSpecialAddressIfMatchingOrGivenAddressShouldReturnAbsentWhenSenderInitParameterIsEmpty() throws Exception {
         Optional<MailAddress> sender = testee.getFirstSpecialAddressIfMatchingOrGivenAddress(Optional.of(""), ImmutableList.of("postmaster", "sender", "unaltered"));
 
-        assertThat(sender).isAbsent();
+        assertThat(sender).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
index a84085b..9c03d3f 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
@@ -219,8 +219,8 @@ public class MessageFactory {
                     .blobId(BlobId.of(attachment.getAttachmentId().getId()))
                     .type(attachment.getAttachment().getType())
                     .size(attachment.getAttachment().getSize())
-                    .name(attachment.getName().orNull())
-                    .cid(attachment.getCid().transform(Cid::getValue).orNull())
+                    .name(attachment.getName().orElse(null))
+                    .cid(attachment.getCid().map(Cid::getValue).orElse(null))
                     .isInline(attachment.isInline())
                     .build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java
index 5a572de..2f0dd8b 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterThreadTest.java
@@ -20,6 +20,7 @@ package org.apache.james.jmap;
 
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.james.mailbox.MailboxListener;
@@ -46,7 +47,6 @@ import org.apache.james.mailbox.model.TestId;
 import org.apache.james.metrics.api.NoopMetricFactory;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
 import com.google.testing.threadtester.AnnotatedTestRunner;
 import com.google.testing.threadtester.ThreadedAfter;
 import com.google.testing.threadtester.ThreadedBefore;


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


[06/22] james-project git commit: JAMES-2127 Mailet: Replaced guava's Optional by java.util.Optional and it's related

Posted by bt...@apache.org.
JAMES-2127 Mailet: Replaced guava's Optional by java.util.Optional and it's related


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a50cd623
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a50cd623
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a50cd623

Branch: refs/heads/master
Commit: a50cd623157d737e9e3f09f3c50e79c60cd300ca
Parents: aa1920b
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 15:23:05 2017 +0700
Committer: quynhn <qn...@linagora.com>
Committed: Wed Aug 30 11:08:48 2017 +0700

----------------------------------------------------------------------
 .../org/apache/mailet/base/GenericMailet.java   |  7 ++---
 .../java/org/apache/mailet/base/MailetUtil.java | 17 ++++++-----
 .../org/apache/mailet/base/MailetUtilTest.java  |  6 ++--
 .../org/apache/mailet/base/test/FakeMail.java   | 27 ++++++++---------
 .../mailet/base/test/FakeMailContext.java       | 29 +++++++++---------
 .../mailet/base/test/FakeMailetConfig.java      | 15 +++++-----
 .../mailet/base/test/FakeMatcherConfig.java     | 13 ++++----
 .../mailet/base/test/MimeMessageBuilder.java    | 31 ++++++++++----------
 .../james/transport/mailets/AddFooter.java      |  6 ++--
 .../transport/mailets/ContentReplacer.java      |  3 +-
 .../transport/mailets/MimeDecodingMailet.java   |  9 +++---
 .../transport/mailets/PatternExtractor.java     |  6 ++--
 .../james/transport/mailets/ReplaceContent.java |  4 +--
 .../transport/mailets/StripAttachment.java      | 19 ++++++------
 .../james/transport/mailets/ToProcessor.java    |  5 ++--
 .../mailets/utils/MimeMessageModifier.java      |  2 +-
 .../mailets/utils/MimeMessageUtils.java         |  7 ++---
 .../transport/mailets/ContentReplacerTest.java  |  7 ++---
 .../transport/mailets/StripAttachmentTest.java  | 11 +++----
 .../mailets/utils/MimeMessageModifierTest.java  |  7 ++---
 .../mailets/utils/MimeMessageUtilsTest.java     | 10 ++-----
 21 files changed, 108 insertions(+), 133 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java b/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
index 53933fc..58d0d41 100644
--- a/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
+++ b/mailet/base/src/main/java/org/apache/mailet/base/GenericMailet.java
@@ -25,7 +25,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.commons.lang.StringUtils;
@@ -36,7 +36,6 @@ import org.apache.mailet.MailetContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 
 /**
@@ -84,13 +83,13 @@ public abstract class GenericMailet implements Mailet, MailetConfig {
         if (config == null) {
             throw new NullPointerException("Mailet configuration must be set before getInitParameter is called.");
         }
-        return MailetUtil.getInitParameter(config, name).or(defaultValue);
+        return MailetUtil.getInitParameter(config, name).orElse(defaultValue);
     }
 
     public Optional<String> getInitParameterAsOptional(String name) {
         String value = getInitParameter(name);
         if (Strings.isNullOrEmpty(value)) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(value);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java b/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
index ae16f7c..dc8ec27 100644
--- a/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
+++ b/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
@@ -21,11 +21,11 @@
 
 package org.apache.mailet.base;
 
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.MailetConfig;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 
 
@@ -108,7 +108,7 @@ public class MailetUtil {
         if ("false".equalsIgnoreCase(value)){
             return Optional.of(false);
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     public static int getInitParameterAsStrictlyPositiveInteger(String condition, int defaultValue) throws MessagingException {
@@ -117,21 +117,22 @@ public class MailetUtil {
     }
 
     public static int getInitParameterAsStrictlyPositiveInteger(String condition) throws MessagingException {
-        return getInitParameterAsStrictlyPositiveInteger(condition, Optional.<String>absent());
+        return getInitParameterAsStrictlyPositiveInteger(condition, Optional.empty());
     }
 
     public static int getInitParameterAsStrictlyPositiveInteger(String condition, Optional<String> defaultValue) throws MessagingException {
-        Optional<String> value = Optional.fromNullable(condition)
-            .or(defaultValue);
+        String value = Optional.ofNullable(condition)
+            .filter(Strings::isNullOrEmpty)
+            .orElse(defaultValue.orElse(null));
 
-        if (Strings.isNullOrEmpty(value.orNull())) {
+        if (Strings.isNullOrEmpty(value)) {
             throw new MessagingException("Condition is required. It should be a strictly positive integer");
         }
 
-        int valueAsInt = tryParseInteger(value.orNull());
+        int valueAsInt = tryParseInteger(value);
 
         if (valueAsInt < 1) {
-            throw new MessagingException("Expecting condition to be a strictly positive integer. Got " + value.get());
+            throw new MessagingException("Expecting condition to be a strictly positive integer. Got " + value);
         }
         return valueAsInt;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/test/java/org/apache/mailet/base/MailetUtilTest.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/MailetUtilTest.java b/mailet/base/src/test/java/org/apache/mailet/base/MailetUtilTest.java
index be11e15..e9981a3 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/MailetUtilTest.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/MailetUtilTest.java
@@ -20,8 +20,6 @@
 package org.apache.mailet.base;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
 import javax.mail.MessagingException;
 
 import org.apache.mailet.base.test.FakeMailetConfig;
@@ -89,7 +87,7 @@ public class MailetUtilTest {
     public void getInitParameterShouldReturnAbsentWhenNull() {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
                 .build();
-        assertThat(MailetUtil.getInitParameter(mailetConfig, A_PARAMETER)).isAbsent();
+        assertThat(MailetUtil.getInitParameter(mailetConfig, A_PARAMETER)).isEmpty();
     }
 
     @Test
@@ -177,6 +175,6 @@ public class MailetUtilTest {
         FakeMailetConfig mailetConfig = FakeMailetConfig.builder()
             .setProperty(A_PARAMETER, value)
             .build();
-        return MailetUtil.getInitParameter(mailetConfig, A_PARAMETER).or(defaultValue);
+        return MailetUtil.getInitParameter(mailetConfig, A_PARAMETER).orElse(defaultValue);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
index 7c462c4..98c7579 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMail.java
@@ -28,8 +28,8 @@ import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Properties;
-
 import javax.mail.MessagingException;
 import javax.mail.Session;
 import javax.mail.internet.InternetAddress;
@@ -42,7 +42,6 @@ import org.apache.mailet.PerRecipientHeaders.Header;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -99,17 +98,17 @@ public class FakeMail implements Mail {
         private Optional<String> remoteAddr;
 
         private Builder() {
-            fileName = Optional.absent();
-            mimeMessage = Optional.absent();
+            fileName = Optional.empty();
+            mimeMessage = Optional.empty();
             recipients = Lists.newArrayList();
-            name = Optional.absent();
-            sender = Optional.absent();
-            state = Optional.absent();
-            errorMessage = Optional.absent();
-            lastUpdated = Optional.absent();
+            name = Optional.empty();
+            sender = Optional.empty();
+            state = Optional.empty();
+            errorMessage = Optional.empty();
+            lastUpdated = Optional.empty();
             attributes = Maps.newHashMap();
-            size = Optional.absent();
-            remoteAddr = Optional.absent();
+            size = Optional.empty();
+            remoteAddr = Optional.empty();
         }
 
         public Builder size(long size) {
@@ -183,8 +182,8 @@ public class FakeMail implements Mail {
         }
 
         public FakeMail build() throws MessagingException {
-            return new FakeMail(getMimeMessage(), recipients, name.orNull(), sender.orNull(), state.orNull(), errorMessage.orNull(), lastUpdated.orNull(),
-                    attributes, size.or(0l), remoteAddr.or("127.0.0.1"));
+            return new FakeMail(getMimeMessage(), recipients, name.orElse(null), sender.orElse(null), state.orElse(null), errorMessage.orElse(null), lastUpdated.orElse(null),
+                    attributes, size.orElse(0l), remoteAddr.orElse("127.0.0.1"));
         }
 
         private MimeMessage getMimeMessage() throws MessagingException {
@@ -192,7 +191,7 @@ public class FakeMail implements Mail {
             if (fileName.isPresent()) {
                 return new MimeMessage(Session.getInstance(new Properties()), ClassLoader.getSystemResourceAsStream(fileName.get()));
             }
-            return mimeMessage.orNull();
+            return mimeMessage.orElse(null);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
index 38ffad6..14409fb 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailContext.java
@@ -26,7 +26,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
@@ -39,7 +39,6 @@ import org.slf4j.Logger;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -86,7 +85,7 @@ public class FakeMailContext implements MailetContext {
         private Optional<MailAddress> postmaster;
 
         private Builder() {
-            postmaster = Optional.absent();
+            postmaster = Optional.empty();
         }
 
         public Builder logger(Logger logger) {
@@ -100,7 +99,7 @@ public class FakeMailContext implements MailetContext {
         }
 
         public FakeMailContext build() {
-            return new FakeMailContext(Optional.fromNullable(logger), postmaster.orNull());
+            return new FakeMailContext(Optional.ofNullable(logger), postmaster.orElse(null));
         }
     }
 
@@ -108,11 +107,11 @@ public class FakeMailContext implements MailetContext {
 
         public static class Builder {
             private MailAddress sender;
-            private Optional<Collection<MailAddress>> recipients = Optional.absent();
+            private Optional<Collection<MailAddress>> recipients = Optional.empty();
             private MimeMessage msg;
             private Map<String, Serializable> attributes = new HashMap<>();
-            private Optional<String> state = Optional.absent();
-            private Optional<Boolean> fromMailet = Optional.absent();
+            private Optional<String> state = Optional.empty();
+            private Optional<Boolean> fromMailet = Optional.empty();
 
             public Builder sender(MailAddress sender) {
                 this.sender = sender;
@@ -160,11 +159,11 @@ public class FakeMailContext implements MailetContext {
             }
 
             public SentMail build() {
-                if (fromMailet.or(false)) {
+                if (fromMailet.orElse(false)) {
                     this.attribute(Mail.SENT_BY_MAILET, "true");
                 }
-                return new SentMail(sender, recipients.or(ImmutableList.<MailAddress>of()), msg,
-                    ImmutableMap.copyOf(attributes), state.or(Mail.DEFAULT));
+                return new SentMail(sender, recipients.orElse(ImmutableList.<MailAddress>of()), msg,
+                    ImmutableMap.copyOf(attributes), state.orElse(Mail.DEFAULT));
             }
         }
 
@@ -186,9 +185,9 @@ public class FakeMailContext implements MailetContext {
 
         private Optional<String> getSubject(MimeMessage msg) {
             try {
-                return Optional.fromNullable(msg.getSubject());
+                return Optional.ofNullable(msg.getSubject());
             } catch (Exception e) {
-                return Optional.absent();
+                return Optional.empty();
             }
         }
 
@@ -306,11 +305,11 @@ public class FakeMailContext implements MailetContext {
     }
 
     public void bounce(Mail mail, String message) throws MessagingException {
-        bouncedMails.add(new BouncedMail(fromMail(mail), message, Optional.<MailAddress>absent()));
+        bouncedMails.add(new BouncedMail(fromMail(mail), message, Optional.empty()));
     }
 
     public void bounce(Mail mail, String message, MailAddress bouncer) throws MessagingException {
-        bouncedMails.add(new BouncedMail(fromMail(mail), message, Optional.fromNullable(bouncer)));
+        bouncedMails.add(new BouncedMail(fromMail(mail), message, Optional.ofNullable(bouncer)));
     }
 
     /**
@@ -482,6 +481,6 @@ public class FakeMailContext implements MailetContext {
 
     @Override
     public Logger getLogger() {
-        return logger.orNull();
+        return logger.orElse(null);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailetConfig.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailetConfig.java b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailetConfig.java
index 03d741c..f0598e5 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailetConfig.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMailetConfig.java
@@ -20,13 +20,12 @@
 package org.apache.mailet.base.test;
 
 import java.util.Iterator;
+import java.util.Optional;
 import java.util.Properties;
 
 import org.apache.mailet.MailetConfig;
 import org.apache.mailet.MailetContext;
 
-import com.google.common.base.Optional;
-
 /**
  * MailetConfig over Properties
  */
@@ -44,18 +43,18 @@ public class FakeMailetConfig implements MailetConfig {
         private Properties properties;
 
         private Builder() {
-            mailetName = Optional.absent();
-            mailetContext = Optional.absent();
+            mailetName = Optional.empty();
+            mailetContext = Optional.empty();
             properties = new Properties();
         }
 
         public Builder mailetName(String mailetName) {
-            this.mailetName = Optional.fromNullable(mailetName);
+            this.mailetName = Optional.ofNullable(mailetName);
             return this;
         }
 
         public Builder mailetContext(MailetContext mailetContext) {
-            this.mailetContext = Optional.fromNullable(mailetContext);
+            this.mailetContext = Optional.ofNullable(mailetContext);
             return this;
         }
 
@@ -65,8 +64,8 @@ public class FakeMailetConfig implements MailetConfig {
         }
 
         public FakeMailetConfig build() {
-            return new FakeMailetConfig(mailetName.or(DEFAULT_MAILET_NAME), 
-                    mailetContext.or(FakeMailContext.defaultContext()), 
+            return new FakeMailetConfig(mailetName.orElse(DEFAULT_MAILET_NAME),
+                    mailetContext.orElse(FakeMailContext.defaultContext()),
                     properties);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMatcherConfig.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMatcherConfig.java b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMatcherConfig.java
index ef1376f..1917c3d 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMatcherConfig.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/FakeMatcherConfig.java
@@ -19,10 +19,11 @@
 
 package org.apache.mailet.base.test;
 
+import java.util.Optional;
+
 import org.apache.mailet.MailetContext;
 import org.apache.mailet.MatcherConfig;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 /**
@@ -41,8 +42,8 @@ public class FakeMatcherConfig implements MatcherConfig {
         private Optional<String> condition;
 
         private Builder() {
-            condition = Optional.absent();
-            mailetContext = Optional.absent();
+            condition = Optional.empty();
+            mailetContext = Optional.empty();
         }
 
         public Builder matcherName(String matcherName) {
@@ -57,13 +58,13 @@ public class FakeMatcherConfig implements MatcherConfig {
         }
 
         public Builder condition(String condition) {
-            this.condition = Optional.fromNullable(condition);
+            this.condition = Optional.ofNullable(condition);
             return this;
         }
 
         public FakeMatcherConfig build() {
             Preconditions.checkNotNull(matcherName, "'matcherName' is mandatory");
-            return new FakeMatcherConfig(matcherName, mailetContext.or(FakeMailContext.defaultContext()), condition);
+            return new FakeMatcherConfig(matcherName, mailetContext.orElse(FakeMailContext.defaultContext()), condition);
         }
     }
 
@@ -89,6 +90,6 @@ public class FakeMatcherConfig implements MatcherConfig {
 
     @Override
     public String getCondition() {
-        return condition.orNull();
+        return condition.orElse(null);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
index 043aa1a..f83cd6f 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
@@ -25,8 +25,8 @@ import java.io.InputStream;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.Optional;
 import java.util.Properties;
-
 import javax.activation.DataHandler;
 import javax.mail.BodyPart;
 import javax.mail.Message;
@@ -44,7 +44,6 @@ import org.apache.commons.io.IOUtils;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
 import com.google.common.collect.FluentIterable;
@@ -89,13 +88,13 @@ public class MimeMessageBuilder {
         public static final String DEFAULT_TEXT_PLAIN_UTF8_TYPE = "text/plain; charset=UTF-8";
         public static final String DEFAULT_VALUE = "";
 
-        private Optional<String> cid = Optional.absent();
-        private Optional<String> filename = Optional.absent();
+        private Optional<String> cid = Optional.empty();
+        private Optional<String> filename = Optional.empty();
         private ImmutableList.Builder<Header> headers = ImmutableList.builder();
-        private Optional<String> disposition = Optional.absent();
-        private Optional<String> dataAsString = Optional.absent();
-        private Optional<byte[]> dataAsBytes = Optional.absent();
-        private Optional<String> type = Optional.absent();
+        private Optional<String> disposition = Optional.empty();
+        private Optional<String> dataAsString = Optional.empty();
+        private Optional<byte[]> dataAsBytes = Optional.empty();
+        private Optional<String> type = Optional.empty();
 
         public BodyPartBuilder cid(String cid) {
             this.cid = Optional.of(cid);
@@ -149,14 +148,14 @@ public class MimeMessageBuilder {
                     new DataHandler(
                         new ByteArrayDataSource(
                             dataAsBytes.get(),
-                            type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+                            type.orElse(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
                     ));
             } else {
                 bodyPart.setDataHandler(
                     new DataHandler(
                         new ByteArrayDataSource(
-                            dataAsString.or(DEFAULT_VALUE),
-                            type.or(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
+                            dataAsString.orElse(DEFAULT_VALUE),
+                            type.orElse(DEFAULT_TEXT_PLAIN_UTF8_TYPE))
                     ));
             }
             if (filename.isPresent()) {
@@ -208,10 +207,10 @@ public class MimeMessageBuilder {
         return new MimeBodyPart(new ByteArrayInputStream(bytes));
     }
 
-    private Optional<String> text = Optional.absent();
-    private Optional<String> subject = Optional.absent();
-    private Optional<InternetAddress> sender = Optional.absent();
-    private Optional<MimeMultipart> content = Optional.absent();
+    private Optional<String> text = Optional.empty();
+    private Optional<String> subject = Optional.empty();
+    private Optional<InternetAddress> sender = Optional.empty();
+    private Optional<MimeMultipart> content = Optional.empty();
     private ImmutableList.Builder<InternetAddress> from = ImmutableList.builder();
     private ImmutableList.Builder<InternetAddress> cc = ImmutableList.builder();
     private ImmutableList.Builder<InternetAddress> to = ImmutableList.builder();
@@ -229,7 +228,7 @@ public class MimeMessageBuilder {
     }
 
     public MimeMessageBuilder setSubject(String subject) {
-        this.subject = Optional.fromNullable(subject);
+        this.subject = Optional.ofNullable(subject);
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddFooter.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddFooter.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddFooter.java
index 52b006a..c0cc1b1 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddFooter.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/AddFooter.java
@@ -23,9 +23,9 @@ package org.apache.james.transport.mailets;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
@@ -38,8 +38,6 @@ import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 /**
  * Takes the message and attaches a footer message to it.  Right now, it only
  * supports simple messages.  Needs to have additions to make it support
@@ -154,7 +152,7 @@ public class AddFooter extends GenericMailet {
         } else if (part.isMimeType("text/html")) {
             return Optional.of(attachFooterToHTML(content));
         }
-        return Optional.absent();
+        return Optional.empty();
     }
     
     private boolean attachFooterToFirstPart(MimeMultipart multipart) throws MessagingException, IOException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
index a8cf514..22424e4 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
@@ -22,8 +22,8 @@ package org.apache.james.transport.mailets;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.List;
+import java.util.Optional;
 import java.util.regex.Matcher;
-
 import javax.mail.MessagingException;
 import javax.mail.internet.ContentType;
 import javax.mail.internet.ParseException;
@@ -33,7 +33,6 @@ import org.apache.mailet.MailetException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 
 public class ContentReplacer {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/MimeDecodingMailet.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/MimeDecodingMailet.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/MimeDecodingMailet.java
index 20db4cc..c4fc0a4 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/MimeDecodingMailet.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/MimeDecodingMailet.java
@@ -22,7 +22,7 @@ import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.Serializable;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 
@@ -33,7 +33,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableMap;
 
@@ -95,13 +94,13 @@ public class MimeDecodingMailet extends GenericMailet {
     private Optional<byte[]> extractContent(Object rawMime) throws MessagingException {
         try {
             MimeBodyPart mimeBodyPart = new MimeBodyPart(new ByteArrayInputStream((byte[]) rawMime));
-            return Optional.fromNullable(IOUtils.toByteArray(mimeBodyPart.getInputStream()));
+            return Optional.ofNullable(IOUtils.toByteArray(mimeBodyPart.getInputStream()));
         } catch (IOException e) {
             LOGGER.error("Error while extracting content from mime part", e);
-            return Optional.absent();
+            return Optional.empty();
         } catch (ClassCastException e) {
             LOGGER.error("Invalid map attribute types.", e);
-            return Optional.absent();
+            return Optional.empty();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/PatternExtractor.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/PatternExtractor.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/PatternExtractor.java
index dbeb42c..090a9f6 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/PatternExtractor.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/PatternExtractor.java
@@ -26,13 +26,13 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.Charset;
 import java.util.List;
+import java.util.Optional;
 import java.util.regex.Pattern;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.mailet.MailetException;
 import org.apache.mailet.base.StringUtils;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
@@ -135,7 +135,7 @@ public class PatternExtractor {
             if (charsetOffset >= 0) {
                 return Optional.of(charsetOffset);
             }
-            return Optional.absent();
+            return Optional.empty();
         }
 
         private static Charset charset(String fileName, int charsetOffset) {
@@ -183,6 +183,6 @@ public class PatternExtractor {
         if (file.isFile()) {
             return Optional.of(new FileInputStream(file));
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
index cdfe963..6926aa8 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
@@ -22,13 +22,13 @@ package org.apache.james.transport.mailets;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailetException;
 import org.apache.mailet.base.GenericMailet;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
@@ -108,7 +108,7 @@ public class ReplaceContent extends GenericMailet {
     private Optional<Charset> initCharset() {
         String charsetName = getInitParameter(PARAMETER_NAME_CHARSET);
         if (Strings.isNullOrEmpty(charsetName)) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(Charset.forName(charsetName));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
index b481680..8e87239 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/StripAttachment.java
@@ -31,9 +31,9 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Optional;
 import java.util.UUID;
 import java.util.regex.Pattern;
-
 import javax.mail.BodyPart;
 import javax.mail.Message;
 import javax.mail.MessagingException;
@@ -42,10 +42,10 @@ import javax.mail.Part;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeUtility;
 
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
 import org.apache.james.mime4j.codec.DecodeMonitor;
 import org.apache.james.mime4j.codec.DecoderUtil;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailetException;
 import org.apache.mailet.base.GenericMailet;
@@ -53,7 +53,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
@@ -409,8 +408,8 @@ public class StripAttachment extends GenericMailet {
         if (patternsAreEquals()) {
             return false;
         }
-        boolean result = isMatchingPattern(name, regExPattern).or(false) 
-                || !isMatchingPattern(name, notRegExPattern).or(true);
+        boolean result = isMatchingPattern(name, regExPattern).orElse(false)
+                || !isMatchingPattern(name, notRegExPattern).orElse(true);
 
         LOGGER.debug("attachment " + name + " " + ((result) ? "matches" : "does not match"));
         return result;
@@ -425,7 +424,7 @@ public class StripAttachment extends GenericMailet {
         if (pattern != null) {
             return Optional.of(pattern.matcher(name).matches());
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     /**
@@ -447,13 +446,13 @@ public class StripAttachment extends GenericMailet {
             return Optional.of(outputFile.getName());
         } catch (Exception e) {
             LOGGER.error("Error while saving contents of", e);
-            return Optional.absent();
+            return Optional.empty();
         }
     }
 
     private File outputFile(Part part, Optional<String> fileName) throws MessagingException, IOException {
-        Optional<String> maybePartFileName = Optional.fromNullable(part.getFileName());
-        return createTempFile(fileName.or(maybePartFileName).orNull());
+        Optional<String> maybePartFileName = Optional.ofNullable(part.getFileName());
+        return createTempFile(fileName.orElse(maybePartFileName.orElse(null)));
     }
 
     private File createTempFile(String originalFileName) throws IOException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/ToProcessor.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ToProcessor.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ToProcessor.java
index 1c6b3fa..e23d210 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ToProcessor.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ToProcessor.java
@@ -21,6 +21,7 @@
 
 package org.apache.james.transport.mailets;
 
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
@@ -29,8 +30,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 /**
  * <p>This mailet redirects the mail to the named processor</p>
  *
@@ -58,7 +57,7 @@ public class ToProcessor extends GenericMailet {
         if (processor == null) {
             throw new MailetException("processor parameter is required");
         }
-        noticeText = Optional.fromNullable(getInitParameter("notice"));
+        noticeText = Optional.ofNullable(getInitParameter("notice"));
     }
 
     private boolean isDebug() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
index f9ea826..b3c9b8d 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageModifier.java
@@ -19,11 +19,11 @@
 
 package org.apache.james.transport.mailets.utils;
 
+import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
 import com.google.common.base.Charsets;
-import com.google.common.base.Optional;
 
 public class MimeMessageModifier {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
index 5ae1360..bdd5518 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/utils/MimeMessageUtils.java
@@ -20,7 +20,7 @@ package org.apache.james.transport.mailets.utils;
 
 import java.util.Enumeration;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Header;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
@@ -29,7 +29,6 @@ import org.apache.mailet.Mail;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Joiner;
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
@@ -60,7 +59,7 @@ public class MimeMessageUtils {
     @VisibleForTesting Optional<String> buildNewSubject(String subjectPrefix, String originalSubject, String subject) throws MessagingException {
         String nullablePrefix = Strings.emptyToNull(subjectPrefix);
         if (nullablePrefix == null && subject == null) {
-            return Optional.absent();
+            return Optional.empty();
         }
         if (nullablePrefix == null) {
             return Optional.of(subject);
@@ -70,7 +69,7 @@ public class MimeMessageUtils {
     }
 
     private String chooseSubject(String newSubject, String originalSubject) {
-        return Optional.fromNullable(newSubject).or(originalSubject);
+        return Optional.ofNullable(newSubject).orElse(originalSubject);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContentReplacerTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContentReplacerTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContentReplacerTest.java
index 479bfd4..0ee2419 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContentReplacerTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/ContentReplacerTest.java
@@ -23,17 +23,14 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-
-import java.nio.charset.Charset;
+import java.util.Optional;
 import java.util.regex.Pattern;
-
 import javax.mail.internet.MimeMessage;
 
 import org.apache.mailet.Mail;
 import org.junit.Test;
 
 import com.google.common.base.Charsets;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 public class ContentReplacerTest {
@@ -137,7 +134,7 @@ public class ContentReplacerTest {
         ReplaceConfig replaceConfig = ReplaceConfig.builder()
                 .addAllSubjectReplacingUnits(patterns)
                 .build();
-        testee.replaceMailContentAndSubject(mail, replaceConfig, Optional.<Charset> absent());
+        testee.replaceMailContentAndSubject(mail, replaceConfig, Optional.empty());
 
         verify(mimeMessage).setSubject("TEST ee o", Charsets.UTF_8.name());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index 7d6fd69..dd53140 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -20,17 +20,15 @@
 package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
-
 import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.BodyPart;
 import javax.mail.MessagingException;
 import javax.mail.Part;
@@ -38,8 +36,8 @@ import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 
-import org.apache.commons.io.IOUtils;
 import org.apache.james.transport.mailets.StripAttachment.OutputFileName;
+import org.apache.commons.io.IOUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.MailetException;
@@ -54,13 +52,12 @@ import org.junit.rules.ExpectedException;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
-import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 
 public class StripAttachmentTest {
 
     private static final String EXPECTED_ATTACHMENT_CONTENT = "\u0023\u00A4\u00E3\u00E0\u00E9";
-    private static final Optional<String> ABSENT_MIME_TYPE = Optional.absent();
+    private static final Optional<String> ABSENT_MIME_TYPE = Optional.empty();
     private static final String CONTENT_TRANSFER_ENCODING_VALUE ="8bit";
 
     public static final String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
@@ -828,7 +825,7 @@ public class StripAttachmentTest {
         Part part = MimeMessageBuilder.bodyPartBuilder().build();
 
         Optional<String> maybeFilename = mailet.saveAttachmentToFile(part, ABSENT_MIME_TYPE);
-        assertThat(maybeFilename).isAbsent();
+        assertThat(maybeFilename).isEmpty();
     }
     
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
index 446d8c2..9baa698 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageModifierTest.java
@@ -20,16 +20,13 @@
 package org.apache.james.transport.mailets.utils;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
+import java.util.Optional;
 import java.util.Properties;
-
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class MimeMessageModifierTest {
 
     @Test
@@ -49,7 +46,7 @@ public class MimeMessageModifierTest {
         String expectedSubject = "subject";
         message.setSubject(expectedSubject);
 
-        new MimeMessageModifier(message).replaceSubject(Optional.<String> absent());
+        new MimeMessageModifier(message).replaceSubject(Optional.empty());
 
         assertThat(message.getSubject()).isEqualTo(expectedSubject);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a50cd623/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
index 87b53e0..baf3da1 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/utils/MimeMessageUtilsTest.java
@@ -20,10 +20,8 @@
 package org.apache.james.transport.mailets.utils;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
+import java.util.Optional;
 import java.util.Properties;
-
 import javax.mail.Session;
 import javax.mail.internet.MimeMessage;
 
@@ -31,8 +29,6 @@ import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.MimeMessageBuilder;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class MimeMessageUtilsTest {
 
     @Test
@@ -64,7 +60,7 @@ public class MimeMessageUtilsTest {
 
         Optional<String> subjectWithPrefix = new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, oldMail, subject);
 
-        assertThat(subjectWithPrefix).isAbsent();
+        assertThat(subjectWithPrefix).isEmpty();
     }
 
     @Test
@@ -77,7 +73,7 @@ public class MimeMessageUtilsTest {
 
         Optional<String> subjectWithPrefix = new MimeMessageUtils(message).subjectWithPrefix(subjectPrefix, oldMail, subject);
 
-        assertThat(subjectWithPrefix).isAbsent();
+        assertThat(subjectWithPrefix).isEmpty();
     }
 
 


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


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

Posted by bt...@apache.org.
JAMES-2127 MPT: 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/9c3bd034
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9c3bd034
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9c3bd034

Branch: refs/heads/master
Commit: 9c3bd034caf8a7582d2ee636e7fc506b7d1a247c
Parents: a93201e
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 16:17:14 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:02 2017 +0700

----------------------------------------------------------------------
 .../src/main/java/org/apache/james/mpt/api/ImapFeatures.java    | 5 ++---
 .../james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java       | 4 ++--
 .../external/james/host/ExternalJamesHostSystem.java            | 4 ++--
 3 files changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9c3bd034/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java b/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
index 4e4fec9..11b12bf 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/api/ImapFeatures.java
@@ -21,8 +21,6 @@ package org.apache.james.mpt.api;
 import java.util.Set;
 
 import com.google.common.base.Preconditions;
-import com.google.common.base.Predicates;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableSet;
 
 public class ImapFeatures {
@@ -52,7 +50,8 @@ public class ImapFeatures {
     public boolean supports(Feature... features) {
         Preconditions.checkNotNull(features);
         ImmutableSet<Feature> requestedFeatures = ImmutableSet.copyOf(features);
-        return FluentIterable.from(requestedFeatures).allMatch(Predicates.in(supportedFeatures));
+        return requestedFeatures.stream()
+            .allMatch(feature -> supportedFeatures.contains(feature));
     }
     
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c3bd034/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
index 2af65be..2c09ac8 100644
--- a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
+++ b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/CyrusHostSystem.java
@@ -19,8 +19,8 @@
 package org.apache.james.mpt.imapmailbox.cyrus.host;
 
 import java.net.InetSocketAddress;
+import java.util.function.Supplier;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mpt.api.ImapFeatures;
@@ -30,10 +30,10 @@ import org.apache.james.mpt.api.UserAdder;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.monitor.NullMonitor;
 import org.apache.james.mpt.protocol.ProtocolSession;
+import org.apache.commons.lang.NotImplementedException;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Strings;
-import com.google.common.base.Supplier;
 import com.google.common.base.Throwables;
 import com.google.inject.Inject;
 import com.google.inject.Provider;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9c3bd034/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
index 1f82887..65853eb 100644
--- a/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
+++ b/mpt/impl/imap-mailbox/external-james/src/test/java/org/apache/james/mpt/imapmailbox/external/james/host/ExternalJamesHostSystem.java
@@ -19,16 +19,16 @@
 package org.apache.james.mpt.imapmailbox.external.james.host;
 
 import java.net.InetSocketAddress;
+import java.util.function.Supplier;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mpt.api.ImapFeatures;
 import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.ExternalHostSystem;
 import org.apache.james.mpt.monitor.NullMonitor;
+import org.apache.commons.lang.NotImplementedException;
 
 import com.google.common.base.Preconditions;
-import com.google.common.base.Supplier;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
 


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


[05/22] james-project git commit: JAMES-2127 No more OptionalConverter

Posted by bt...@apache.org.
JAMES-2127 No more OptionalConverter


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4ce918b8
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4ce918b8
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4ce918b8

Branch: refs/heads/master
Commit: 4ce918b8857b2065042115ca51a4592acf777b59
Parents: 1629c5a
Author: quynhn <qn...@linagora.com>
Authored: Wed Aug 23 10:58:21 2017 +0700
Committer: quynhn <qn...@linagora.com>
Committed: Wed Aug 30 11:08:48 2017 +0700

----------------------------------------------------------------------
 .../cassandra/mail/AttachmentLoader.java        |   5 +-
 .../mail/CassandraAttachmentMapper.java         |  12 +-
 .../cassandra/mail/CassandraBlobsDAO.java       |  14 +-
 .../cassandra/mail/CassandraMailboxMapper.java  |  11 +-
 .../cassandra/mail/CassandraMessageDAO.java     |   4 +-
 .../cassandra/mail/CassandraMessageMapper.java  |   4 +-
 .../cassandra/mail/CassandraUidProvider.java    |   3 +-
 .../mail/MessageAttachmentRepresentation.java   |   3 +-
 .../cassandra/mail/AttachmentLoaderTest.java    |  17 +--
 .../search/ElasticSearchSearcher.java           |   5 +-
 .../mailbox/store/StoreMessageIdManager.java    |  22 ++--
 .../store/mail/model/impl/MessageParser.java    |   3 +-
 .../apache/james/util/FluentFutureStream.java   |   2 +-
 .../apache/james/util/OptionalConverter.java    |  50 --------
 .../org/apache/james/util/OptionalUtils.java    |  42 ++++++
 .../james/util/OptionalConverterTest.java       | 127 -------------------
 .../apache/james/util/OptionalUtilsTest.java    |  85 +++++++++++++
 .../james/jmap/methods/GetMailboxesMethod.java  |   7 +-
 .../methods/SetMailboxesCreationProcessor.java  |   9 +-
 .../methods/SetMessagesCreationProcessor.java   |   4 +-
 .../SetMessagesCreationProcessorTest.java       |   9 +-
 21 files changed, 180 insertions(+), 258 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java
index 17c4539..c7eeb46 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoader.java
@@ -25,14 +25,13 @@ import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
 import java.util.stream.Stream;
 
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.util.FluentFutureStream;
-import org.apache.james.util.OptionalConverter;
+import org.apache.commons.lang3.tuple.Pair;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
@@ -80,7 +79,7 @@ public class AttachmentLoader {
         return MessageAttachment.builder()
                 .attachment(attachment)
                 .name(messageAttachmentRepresentation.getName().orElse(null))
-                .cid(OptionalConverter.toGuava(messageAttachmentRepresentation.getCid()))
+                .cid(messageAttachmentRepresentation.getCid())
                 .isInline(messageAttachmentRepresentation.isInline())
                 .build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
index 6c15999..f1e79d5 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapper.java
@@ -28,7 +28,6 @@ import static org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable.
 import static org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable.SIZE;
 import static org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable.TABLE_NAME;
 import static org.apache.james.mailbox.cassandra.table.CassandraAttachmentTable.TYPE;
-
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.Collection;
@@ -36,7 +35,6 @@ import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Stream;
-
 import javax.inject.Inject;
 
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
@@ -46,9 +44,7 @@ import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.util.FluentFutureStream;
-import org.apache.james.util.OptionalConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.james.util.OptionalUtils;
 
 import com.datastax.driver.core.Row;
 import com.datastax.driver.core.Session;
@@ -56,6 +52,8 @@ import com.github.fge.lambdas.Throwing;
 import com.github.fge.lambdas.ThrownByLambdaException;
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class CassandraAttachmentMapper implements AttachmentMapper {
 
@@ -111,7 +109,7 @@ public class CassandraAttachmentMapper implements AttachmentMapper {
 
         return FluentFutureStream
             .of(attachments)
-            .flatMap(OptionalConverter::toStream)
+            .flatMap(OptionalUtils::toStream)
             .completableFuture()
             .thenApply(stream ->
                 stream.collect(Guavate.toImmutableList()));
@@ -125,7 +123,7 @@ public class CassandraAttachmentMapper implements AttachmentMapper {
                 .from(TABLE_NAME)
                 .where(eq(ID, id)))
             .thenApply(optional ->
-                OptionalConverter.ifEmpty(
+                OptionalUtils.ifEmpty(
                     optional.map(this::attachment),
                     () -> LOGGER.warn("Failed retrieving attachment {}", attachmentId)));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
index 819d427..89173a7 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
@@ -23,16 +23,13 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.bindMarker;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.eq;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.insertInto;
 import static com.datastax.driver.core.querybuilder.QueryBuilder.select;
-
 import java.nio.ByteBuffer;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.IntStream;
 import java.util.stream.Stream;
-
 import javax.inject.Inject;
 
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.backends.cassandra.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.BlobId;
@@ -40,9 +37,8 @@ import org.apache.james.mailbox.cassandra.mail.utils.DataChunker;
 import org.apache.james.mailbox.cassandra.table.BlobTable;
 import org.apache.james.mailbox.cassandra.table.BlobTable.BlobParts;
 import org.apache.james.util.FluentFutureStream;
-import org.apache.james.util.OptionalConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.james.util.OptionalUtils;
+import org.apache.commons.lang3.tuple.Pair;
 
 import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.Row;
@@ -52,6 +48,8 @@ import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.primitives.Bytes;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class CassandraBlobsDAO {
     private static final Logger LOGGER = LoggerFactory.getLogger(CassandraBlobsDAO.class);
@@ -169,10 +167,10 @@ public class CassandraBlobsDAO {
 
     private byte[] concatenateDataParts(Stream<BlobPart> blobParts) {
         ImmutableList<byte[]> parts = blobParts
-            .map(blobPart -> OptionalConverter.ifEmpty(
+            .map(blobPart -> OptionalUtils.ifEmpty(
                 blobPart.row,
                 () -> LOGGER.warn("Missing blob part for blobId {} and position {}", blobPart.blobId, blobPart.position)))
-            .flatMap(OptionalConverter::toStream)
+            .flatMap(OptionalUtils::toStream)
             .map(this::rowToData)
             .collect(Guavate.toImmutableList());
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index 13feba8..2e407ec 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -27,10 +27,8 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionException;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-
 import javax.inject.Inject;
 
-import org.apache.commons.lang3.StringUtils;
 import org.apache.james.backends.cassandra.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -46,14 +44,15 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.util.CompletableFutureUtil;
 import org.apache.james.util.FluentFutureStream;
-import org.apache.james.util.OptionalConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.james.util.OptionalUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.exceptions.InvalidQueryException;
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class CassandraMailboxMapper implements MailboxMapper {
 
@@ -128,7 +127,7 @@ public class CassandraMailboxMapper implements MailboxMapper {
 
     private CompletableFuture<Optional<SimpleMailbox>> retrieveMailbox(CassandraMailboxPathDAO.CassandraIdAndPath idAndPath) {
         return mailboxDAO.retrieveMailbox(idAndPath.getCassandraId())
-            .thenApply(optional -> OptionalConverter.ifEmpty(optional,
+            .thenApply(optional -> OptionalUtils.ifEmpty(optional,
                 () -> LOGGER.warn("Could not retrieve mailbox {} with path {} in mailbox table.", idAndPath.getCassandraId(), idAndPath.getMailboxPath())));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
index 2fe0daf..e2a63f4 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
@@ -70,7 +70,6 @@ import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleProperty;
 import org.apache.james.util.CompletableFutureUtil;
 import org.apache.james.util.FluentFutureStream;
-import org.apache.james.util.OptionalConverter;
 import org.apache.james.util.streams.JamesCollectors;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.tuple.Pair;
@@ -292,8 +291,7 @@ public class CassandraMessageDAO {
         return MessageAttachmentRepresentation.builder()
             .attachmentId(AttachmentId.from(udtValue.getString(Attachments.ID)))
             .name(udtValue.getString(Attachments.NAME))
-            .cid(OptionalConverter.fromGuava(
-                cidParser.parse(udtValue.getString(CassandraMessageV2Table.Attachments.CID))))
+            .cid(cidParser.parse(udtValue.getString(CassandraMessageV2Table.Attachments.CID)))
             .isInline(udtValue.getBool(Attachments.IS_INLINE))
             .build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index 445660b..2ae4928 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -53,7 +53,7 @@ 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.SimpleMailboxMessage;
 import org.apache.james.util.FluentFutureStream;
-import org.apache.james.util.OptionalConverter;
+import org.apache.james.util.OptionalUtils;
 import org.apache.james.util.streams.JamesCollectors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -225,7 +225,7 @@ public class CassandraMessageMapper implements MessageMapper {
 
     private CompletableFuture<Optional<ComposedMessageIdWithMetaData>> retrieveComposedId(CassandraId mailboxId, MessageUid uid) {
         return messageIdDAO.retrieve(mailboxId, uid)
-            .thenApply(optional -> OptionalConverter.ifEmpty(optional,
+            .thenApply(optional -> OptionalUtils.ifEmpty(optional,
                 () -> LOGGER.warn("Could not retrieve message {} {}", mailboxId, uid)));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
index 6f3fa25..4f061c2 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
@@ -42,7 +42,6 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.util.OptionalConverter;
 
 import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.Session;
@@ -124,7 +123,7 @@ public class CassandraUidProvider implements UidProvider {
 
     @Override
     public Optional<MessageUid> lastUid(MailboxSession mailboxSession, Mailbox mailbox) throws MailboxException {
-        return OptionalConverter.toGuava(findHighestUid((CassandraId) mailbox.getMailboxId()).join());
+        return findHighestUid((CassandraId) mailbox.getMailboxId()).join();
     }
 
     private CompletableFuture<Optional<MessageUid>> findHighestUid(CassandraId mailboxId) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
index 1eb3f0b..af33569 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
@@ -24,7 +24,6 @@ import java.util.Optional;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.model.Cid;
 import org.apache.james.mailbox.model.MessageAttachment;
-import org.apache.james.util.OptionalConverter;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
@@ -40,7 +39,7 @@ public class MessageAttachmentRepresentation {
     public static MessageAttachmentRepresentation fromAttachment(MessageAttachment attachment) {
         return builder()
             .attachmentId(attachment.getAttachmentId())
-            .cid(OptionalConverter.fromGuava(attachment.getCid()))
+            .cid(attachment.getCid())
             .isInline(attachment.isInline())
             .name(attachment.getName().orElse(null))
             .build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java
index 048ef7b..f667729 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/AttachmentLoaderTest.java
@@ -21,7 +21,6 @@ package org.apache.james.mailbox.cassandra.mail;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
-
 import java.util.Collection;
 import java.util.Map;
 import java.util.Optional;
@@ -32,15 +31,13 @@ import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.model.Cid;
 import org.apache.james.mailbox.model.MessageAttachment;
-import org.apache.james.util.OptionalConverter;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 import org.assertj.core.data.MapEntry;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
 public class AttachmentLoaderTest {
 
     private CassandraAttachmentMapper attachmentMapper;
@@ -73,7 +70,7 @@ public class AttachmentLoaderTest {
         Collection<MessageAttachment> attachments = testee.getAttachments(ImmutableList.of(attachmentRepresentation, attachmentRepresentation))
             .join();
 
-        MessageAttachment expectedAttachment = new MessageAttachment(attachment, OptionalConverter.toGuava(name), OptionalConverter.toGuava(cid), isInlined);
+        MessageAttachment expectedAttachment = new MessageAttachment(attachment, name, cid, isInlined);
         assertThat(attachments).hasSize(2)
             .containsOnly(expectedAttachment, expectedAttachment);
     }
@@ -102,8 +99,8 @@ public class AttachmentLoaderTest {
             .join();
 
         assertThat(attachments).hasSize(2)
-            .containsOnly(new MessageAttachment(attachment, OptionalConverter.toGuava(name1), OptionalConverter.toGuava(cid), isInlined),
-                new MessageAttachment(attachment, OptionalConverter.toGuava(name2), OptionalConverter.toGuava(cid), isInlined));
+            .containsOnly(new MessageAttachment(attachment, name1, cid, isInlined),
+                new MessageAttachment(attachment, name2, cid, isInlined));
     }
 
     @Test
@@ -136,8 +133,8 @@ public class AttachmentLoaderTest {
             .join();
 
         assertThat(attachments).hasSize(2)
-            .containsOnly(new MessageAttachment(attachment1, OptionalConverter.toGuava(name1), OptionalConverter.toGuava(cid), isInlined),
-                new MessageAttachment(attachment2, OptionalConverter.toGuava(name2), OptionalConverter.toGuava(cid), isInlined));
+            .containsOnly(new MessageAttachment(attachment1, name1, cid, isInlined),
+                new MessageAttachment(attachment2, name2, cid, isInlined));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
index 726980c..eb35456 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
@@ -23,7 +23,6 @@ import java.util.List;
 import java.util.Optional;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
-
 import javax.inject.Inject;
 
 import org.apache.james.backends.es.search.ScrollIterable;
@@ -38,7 +37,7 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
-import org.apache.james.util.OptionalConverter;
+
 import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.client.Client;
@@ -114,7 +113,7 @@ public class ElasticSearchSearcher {
             Number uidAsNumber = uid.getValue();
             return Optional.of(
                 new MessageSearchIndex.SearchResult(
-                    OptionalConverter.toGuava(id.map(field -> messageIdFactory.fromString(field.getValue()))),
+                    id.map(field -> messageIdFactory.fromString(field.getValue())),
                     mailboxIdFactory.fromString(mailboxId.getValue()),
                     MessageUid.of(uidAsNumber.longValue())));
         } else {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 16dab9d..46b65bc 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -60,7 +60,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.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
@@ -112,12 +111,12 @@ public class StoreMessageIdManager implements MessageIdManager {
             MessageIdMapper messageIdMapper = mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
             final MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
             List<MailboxMessage> messageList = messageIdMapper.find(messageIds, MessageMapper.FetchType.Full);
-            ImmutableSet<MailboxId> mailboxIds = FluentIterable.from(messageList)
-                .transform(MailboxMessage::getMailboxId)
-                .toSet();
-            final ImmutableSet<MailboxId> allowedMailboxIds = mailboxIds.stream()
+
+            final ImmutableSet<MailboxId> allowedMailboxIds = messageList.stream()
+                .map(MailboxMessage::getMailboxId)
                 .filter(mailboxBelongsToUser(mailboxSession, mailboxMapper))
                 .collect(Guavate.toImmutableSet());
+
             return messageList.stream()
                 .filter(inMailboxes(allowedMailboxIds))
                 .map(messageResultConverter(fetchGroup))
@@ -158,19 +157,14 @@ public class StoreMessageIdManager implements MessageIdManager {
 
         List<MailboxMessage> mailboxMessages = messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Full)
             .stream()
-            .filter(new Predicate<MailboxMessage>() {
-                @Override
-                public boolean test(MailboxMessage message) {
-                    return false;
-                }
-            })
             .filter(messageBelongsToUser(mailboxSession, mailboxMapper))
             .collect(Guavate.toImmutableList());
 
         if (!mailboxMessages.isEmpty()) {
-            ImmutableSet<MailboxId> currentMailboxes = FluentIterable.from(mailboxMessages)
-                .transform(MailboxMessage::getMailboxId)
-                .toSet();
+            ImmutableSet<MailboxId> currentMailboxes = mailboxMessages
+                .stream()
+                .map(MailboxMessage::getMailboxId)
+                .collect(Guavate.toImmutableSet());
             HashSet<MailboxId> targetMailboxes = Sets.newHashSet(mailboxIds);
             List<MailboxId> mailboxesToRemove = ImmutableList.copyOf(Sets.difference(currentMailboxes, targetMailboxes));
             SetView<MailboxId> mailboxesToAdd = Sets.difference(targetMailboxes, currentMailboxes);

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
index 000dc08..529442e 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageParser.java
@@ -46,7 +46,6 @@ import org.apache.james.mime4j.message.DefaultMessageWriter;
 import org.apache.james.mime4j.stream.Field;
 import org.apache.james.mime4j.stream.MimeConfig;
 import org.apache.james.mime4j.util.MimeUtil;
-import org.apache.james.util.OptionalConverter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -188,7 +187,7 @@ public class MessageParser {
     }
 
     private Function<ContentIdField, Optional<Cid>> toCid() {
-        return contentIdField -> OptionalConverter.fromGuava(cidParser.parse(contentIdField.getId()));
+        return contentIdField -> cidParser.parse(contentIdField.getId());
     }
 
     private boolean isMultipart(Entity entity) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/container/util-java8/src/main/java/org/apache/james/util/FluentFutureStream.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/main/java/org/apache/james/util/FluentFutureStream.java b/server/container/util-java8/src/main/java/org/apache/james/util/FluentFutureStream.java
index fbdd1c2..530bc09 100644
--- a/server/container/util-java8/src/main/java/org/apache/james/util/FluentFutureStream.java
+++ b/server/container/util-java8/src/main/java/org/apache/james/util/FluentFutureStream.java
@@ -109,7 +109,7 @@ public class FluentFutureStream<T> {
      */
     public <U> FluentFutureStream<U> flatMapOptional(Function<T, Optional<U>> function) {
         return map(function)
-            .flatMap(OptionalConverter::toStream);
+            .flatMap(OptionalUtils::toStream);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java
deleted file mode 100644
index 528268e..0000000
--- a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.james.util;
-
-import java.util.Optional;
-import java.util.stream.Stream;
-
-public class OptionalConverter {
-
-    @FunctionalInterface
-    public interface Operation {
-        void perform();
-    }
-
-    public static <T> Optional<T> ifEmpty(Optional<T> optional, Operation operation) {
-        if (!optional.isPresent()) {
-            operation.perform();
-        }
-        return optional;
-    }
-
-    public static <T> Optional<T> fromGuava(Optional<T> guava) {
-        return Optional.ofNullable(guava.orElse(null));
-    }
-
-    public static <T> Optional<T> toGuava(Optional<T> java) {
-        return Optional.ofNullable(java.orElse(null));
-    }
-
-    public static <T> Stream<T> toStream(Optional<T> optional) {
-        return optional.map(Stream::of)
-            .orElse(Stream.of());
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
new file mode 100644
index 0000000..709981b
--- /dev/null
+++ b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalUtils.java
@@ -0,0 +1,42 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.util;
+
+import java.util.Optional;
+import java.util.stream.Stream;
+
+public class OptionalUtils {
+
+    @FunctionalInterface
+    public interface Operation {
+        void perform();
+    }
+
+    public static <T> Optional<T> ifEmpty(Optional<T> optional, Operation operation) {
+        if (!optional.isPresent()) {
+            operation.perform();
+        }
+        return optional;
+    }
+
+    public static <T> Stream<T> toStream(Optional<T> optional) {
+        return optional.map(Stream::of)
+            .orElse(Stream.of());
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java
deleted file mode 100644
index 63f68e9..0000000
--- a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-package org.apache.james.util;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import java.util.Optional;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import com.github.steveash.guavate.Guavate;
-
-public class OptionalConverterTest {
-
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
-
-    @Test
-    public void ifEmptyShouldPreserveValueOfEmptyOptionals() {
-        Optional<Object> expected = OptionalConverter.ifEmpty(Optional.empty(), () -> { });
-
-        assertThat(expected).isEmpty();
-    }
-
-    @Test
-    public void ifEmptyShouldPreserveValueOfPresentOptionals() {
-        String value = "value";
-        Optional<String> expected = OptionalConverter.ifEmpty(Optional.of(value), () -> { });
-
-        assertThat(expected).contains(value);
-    }
-
-    @Test
-    public void ifEmptyShouldPerformOperationIfEmpty() {
-        AtomicInteger operationCounter = new AtomicInteger(0);
-
-        OptionalConverter.ifEmpty(Optional.empty(), operationCounter::incrementAndGet);
-
-        assertThat(operationCounter.get()).isEqualTo(1);
-    }
-
-    @Test
-    public void ifEmptyShouldNotPerformOperationIfPresent() {
-        AtomicInteger operationCounter = new AtomicInteger(0);
-
-        OptionalConverter.ifEmpty(Optional.of("value"), operationCounter::incrementAndGet);
-
-        assertThat(operationCounter.get()).isEqualTo(0);
-    }
-
-    @Test
-    public void toStreamShouldConvertEmptyOptionalToEmptyStream() {
-        assertThat(
-            OptionalConverter.toStream(Optional.empty())
-                .collect(Guavate.toImmutableList()))
-            .isEmpty();
-    }
-
-    @Test
-    public void toStreamShouldConvertFullOptionalToStream() {
-        long value = 18L;
-        assertThat(
-            OptionalConverter.toStream(Optional.of(value))
-                .collect(Guavate.toImmutableList()))
-            .containsExactly(value);
-    }
-
-    @Test
-    public void fromGuavaShouldThrowWhenGuavaIsNull() {
-        expectedException.expect(NullPointerException.class);
-        OptionalConverter.fromGuava(null);
-    }
-
-    @Test
-    public void fromGuavaShouldReturnEmptyWhenGuavaIsEmpty() {
-        Optional<String> fromGuava = OptionalConverter.fromGuava(Optional.<String> empty());
-
-        assertThat(fromGuava).isEmpty();
-    }
-
-    @Test
-    public void fromGuavaShouldReturnNonEmptyWhenGuavaIsNonEmpty() {
-        String value = "my string";
-        Optional<String> fromGuava = OptionalConverter.fromGuava(Optional.of(value));
-
-        assertThat(fromGuava).contains(value);
-    }
-
-    @Test
-    public void toGuavaShouldThrowWhenGuavaIsNull() {
-        expectedException.expect(NullPointerException.class);
-        OptionalConverter.toGuava(null);
-    }
-
-    @Test
-    public void toGuavaShouldReturnEmptyWhenGuavaIsEmpty() {
-        Optional<String> toGuava = OptionalConverter.toGuava(Optional.<String> empty());
-
-        assertThat(toGuava.isPresent()).isFalse();
-    }
-
-    @Test
-    public void toGuavaShouldReturnNonEmptyWhenGuavaIsNonEmpty() {
-        String value = "my string";
-        Optional<String> toGuava = OptionalConverter.toGuava(Optional.of(value));
-
-        assertThat(toGuava.get()).isEqualTo(value);
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
new file mode 100644
index 0000000..79b993c
--- /dev/null
+++ b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalUtilsTest.java
@@ -0,0 +1,85 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.util;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.github.steveash.guavate.Guavate;
+
+public class OptionalUtilsTest {
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Test
+    public void ifEmptyShouldPreserveValueOfEmptyOptionals() {
+        Optional<Object> expected = OptionalUtils.ifEmpty(Optional.empty(), () -> { });
+
+        assertThat(expected).isEmpty();
+    }
+
+    @Test
+    public void ifEmptyShouldPreserveValueOfPresentOptionals() {
+        String value = "value";
+        Optional<String> expected = OptionalUtils.ifEmpty(Optional.of(value), () -> { });
+
+        assertThat(expected).contains(value);
+    }
+
+    @Test
+    public void ifEmptyShouldPerformOperationIfEmpty() {
+        AtomicInteger operationCounter = new AtomicInteger(0);
+
+        OptionalUtils.ifEmpty(Optional.empty(), operationCounter::incrementAndGet);
+
+        assertThat(operationCounter.get()).isEqualTo(1);
+    }
+
+    @Test
+    public void ifEmptyShouldNotPerformOperationIfPresent() {
+        AtomicInteger operationCounter = new AtomicInteger(0);
+
+        OptionalUtils.ifEmpty(Optional.of("value"), operationCounter::incrementAndGet);
+
+        assertThat(operationCounter.get()).isEqualTo(0);
+    }
+
+    @Test
+    public void toStreamShouldConvertEmptyOptionalToEmptyStream() {
+        assertThat(
+            OptionalUtils.toStream(Optional.empty())
+                .collect(Guavate.toImmutableList()))
+            .isEmpty();
+    }
+
+    @Test
+    public void toStreamShouldConvertFullOptionalToStream() {
+        long value = 18L;
+        assertThat(
+            OptionalUtils.toStream(Optional.of(value))
+                .collect(Guavate.toImmutableList()))
+            .containsExactly(value);
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
index b15a17e..1b042af 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
@@ -26,7 +26,6 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import java.util.stream.Stream;
-
 import javax.inject.Inject;
 
 import org.apache.james.jmap.model.ClientId;
@@ -44,7 +43,7 @@ import org.apache.james.mailbox.model.MailboxQuery;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
 import org.apache.james.util.MDCBuilder;
-import org.apache.james.util.OptionalConverter;
+import org.apache.james.util.OptionalUtils;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
@@ -128,7 +127,7 @@ public class GetMailboxesMethod implements Method {
                         .id(mailboxId)
                         .session(mailboxSession)
                         .build())
-                .flatMap(OptionalConverter::toStream);
+                .flatMap(OptionalUtils::toStream);
         } else {
             List<MailboxMetaData> userMailboxes = mailboxManager.search(
                 MailboxQuery.builder(mailboxSession).privateUserMailboxes().build(),
@@ -141,7 +140,7 @@ public class GetMailboxesMethod implements Method {
                         .session(mailboxSession)
                         .usingPreloadedMailboxesMetadata(userMailboxes)
                         .build())
-                .flatMap(OptionalConverter::toStream);
+                .flatMap(OptionalUtils::toStream);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
index b88f282..071eefd 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
@@ -20,11 +20,9 @@
 package org.apache.james.jmap.methods;
 
 import static org.apache.james.jmap.methods.Method.JMAP_PREFIX;
-
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
-
 import javax.inject.Inject;
 
 import org.apache.james.jmap.exceptions.MailboxParentNotFoundException;
@@ -50,13 +48,12 @@ import org.apache.james.mailbox.model.MailboxId.Factory;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
-import org.apache.james.util.OptionalConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.github.fge.lambdas.Throwing;
 import com.github.fge.lambdas.functions.ThrowingFunction;
 import com.google.common.annotations.VisibleForTesting;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
 
@@ -115,7 +112,7 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
         try {
             ensureValidMailboxName(mailboxRequest, mailboxSession);
             MailboxPath mailboxPath = getMailboxPath(mailboxRequest, creationIdsToCreatedMailboxId, mailboxSession);
-            Optional<MailboxId> mailboxId = OptionalConverter.fromGuava(mailboxManager.createMailbox(mailboxPath, mailboxSession));
+            Optional<MailboxId> mailboxId = mailboxManager.createMailbox(mailboxPath, mailboxSession);
             Optional<Mailbox> mailbox = mailboxId.flatMap(id -> mailboxFactory.builder()
                     .id(id)
                     .session(mailboxSession)

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
index bb9f189..d89b050 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java
@@ -67,7 +67,7 @@ import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
-import org.apache.james.util.OptionalConverter;
+import org.apache.james.util.OptionalUtils;
 import org.apache.mailet.Mail;
 
 import org.slf4j.Logger;
@@ -315,7 +315,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
         ThrowingFunction<Attachment, Optional<MessageAttachment>> toMessageAttachment = att -> messageAttachment(session, att);
         return attachments.stream()
             .map(Throwing.function(toMessageAttachment).sneakyThrow())
-            .flatMap(OptionalConverter::toStream)
+            .flatMap(OptionalUtils::toStream)
             .collect(Guavate.toImmutableList());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4ce918b8/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
index c2c36e6..84bf14d 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java
@@ -26,13 +26,11 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-
 import java.io.InputStream;
 import java.sql.Date;
 import java.util.Optional;
 import java.util.function.Supplier;
 import java.util.stream.Stream;
-
 import javax.mail.Flags;
 
 import org.apache.james.jmap.exceptions.AttachmentsNotFoundException;
@@ -42,7 +40,6 @@ import org.apache.james.jmap.model.BlobId;
 import org.apache.james.jmap.model.CreationMessage;
 import org.apache.james.jmap.model.CreationMessage.DraftEmailer;
 import org.apache.james.jmap.model.CreationMessageId;
-import org.apache.james.jmap.model.Keyword;
 import org.apache.james.jmap.model.MessageFactory;
 import org.apache.james.jmap.model.MessagePreviewGenerator;
 import org.apache.james.jmap.model.MessageProperties.MessageProperty;
@@ -68,7 +65,7 @@ import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.TestMessageId;
 import org.apache.james.metrics.api.NoopMetricFactory;
-import org.apache.james.util.OptionalConverter;
+import org.apache.james.util.OptionalUtils;
 import org.apache.james.util.mime.MessageContentExtractor;
 import org.apache.mailet.Mail;
 import org.junit.Before;
@@ -360,9 +357,9 @@ public class SetMessagesCreationProcessorTest {
         @Override
         public Stream<MessageManager> getMailboxByRole(Role aRole, MailboxSession session) {
             if (aRole.equals(Role.OUTBOX)) {
-                return OptionalConverter.toStream(outboxSupplier.get());
+                return OptionalUtils.toStream(outboxSupplier.get());
             } else if (aRole.equals(Role.DRAFTS)) {
-                return OptionalConverter.toStream(draftsSupplier.get());
+                return OptionalUtils.toStream(draftsSupplier.get());
             }
             return Stream.empty();
         }


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


[16/22] james-project git commit: JAMES-2127 ApplicationFlagBuilder support list of Flags

Posted by bt...@apache.org.
JAMES-2127 ApplicationFlagBuilder support list of Flags


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c89655f5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c89655f5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c89655f5

Branch: refs/heads/master
Commit: c89655f5bd784cf7c1e4badd6201f72cf6c49c02
Parents: 4eae24a
Author: quynhn <qn...@linagora.com>
Authored: Mon Aug 28 14:16:53 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:02 2017 +0700

----------------------------------------------------------------------
 mailbox/api/pom.xml                                    |  4 ++++
 .../apache/james/mailbox/ApplicableFlagBuilder.java    |  6 ++++++
 .../java/org/apache/james/mailbox/FlagsBuilder.java    | 13 ++++++++++---
 .../james/mailbox/ApplicableFlagBuilderTest.java       | 13 ++++++++++++-
 4 files changed, 32 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c89655f5/mailbox/api/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/api/pom.xml b/mailbox/api/pom.xml
index 58624b5..bca6a33 100644
--- a/mailbox/api/pom.xml
+++ b/mailbox/api/pom.xml
@@ -33,6 +33,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>com.github.steveash.guavate</groupId>
+            <artifactId>guavate</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/c89655f5/mailbox/api/src/main/java/org/apache/james/mailbox/ApplicableFlagBuilder.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/ApplicableFlagBuilder.java b/mailbox/api/src/main/java/org/apache/james/mailbox/ApplicableFlagBuilder.java
index 91496d8..b157309 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/ApplicableFlagBuilder.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/ApplicableFlagBuilder.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox;
 
+import java.util.List;
 import javax.mail.Flags;
 
 import com.google.common.annotations.VisibleForTesting;
@@ -62,6 +63,11 @@ public class ApplicableFlagBuilder {
         return this;
     }
 
+    public ApplicableFlagBuilder add(List<Flags> flags) {
+        builder.add(flags);
+        return this;
+    }
+
     public Flags build() {
         Flags flags = builder.build();
         flags.remove(Flags.Flag.RECENT);

http://git-wip-us.apache.org/repos/asf/james-project/blob/c89655f5/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java b/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
index 25a64dd..7a791ec 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/FlagsBuilder.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox;
 
+import java.util.Arrays;
+import java.util.List;
 import javax.mail.Flags;
 
 public class FlagsBuilder {
@@ -47,13 +49,18 @@ public class FlagsBuilder {
         return this;
     }
 
-    public FlagsBuilder add(Flags... flagsArray) {
-        for (Flags flags: flagsArray) {
-            internalFlags.add(flags);
+    public FlagsBuilder add(List<Flags> flags) {
+        for (Flags flag : flags) {
+            internalFlags.add(flag);
         }
         return this;
     }
 
+    public FlagsBuilder add(Flags... flagsArray) {
+        add(Arrays.asList(flagsArray));
+        return this;
+    }
+
     public Flags build() {
         return new Flags(internalFlags);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/c89655f5/mailbox/api/src/test/java/org/apache/james/mailbox/ApplicableFlagBuilderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/ApplicableFlagBuilderTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/ApplicableFlagBuilderTest.java
index ad2ad76..5f91136 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/ApplicableFlagBuilderTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/ApplicableFlagBuilderTest.java
@@ -19,13 +19,14 @@
 package org.apache.james.mailbox;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import javax.mail.Flags;
 
 import org.assertj.core.api.JUnitSoftAssertions;
 import org.junit.Rule;
 import org.junit.Test;
 
+import com.google.common.collect.ImmutableList;
+
 public class ApplicableFlagBuilderTest {
 
     @Rule
@@ -106,4 +107,14 @@ public class ApplicableFlagBuilderTest {
         softly.assertThat(result.contains("chef")).isTrue();
         softly.assertThat(result.contains("randy")).isTrue();
     }
+
+    @Test
+    public void shouldAcceptListOfFlags() throws Exception {
+        Flags result = ApplicableFlagBuilder.builder()
+            .add(ImmutableList.of(new Flags("cartman"), new Flags("chef")))
+            .build();
+
+        softly.assertThat(result.contains("cartman")).isTrue();
+        softly.assertThat(result.contains("chef")).isTrue();
+    }
 }
\ No newline at end of file


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


[11/22] james-project git commit: JAMES-2127 Guava's functions can be replaced by java 8

Posted by bt...@apache.org.
JAMES-2127 Guava's functions can be replaced by java 8


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9dc495f9
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9dc495f9
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9dc495f9

Branch: refs/heads/master
Commit: 9dc495f91e27bfb7d59b06026d5929e3f50eb2fa
Parents: c89655f
Author: quynhn <qn...@linagora.com>
Authored: Mon Aug 28 14:57:51 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:02 2017 +0700

----------------------------------------------------------------------
 .../james/backends/jpa/JpaTestCluster.java      |  4 +---
 .../james/mailbox/model/MailboxAnnotation.java  |  2 +-
 .../mail/MessageAttachmentRepresentation.java   | 10 ----------
 .../mailbox/store/StoreMessageIdManager.java    |  5 ++---
 .../store/search/SimpleMessageSearchIndex.java  | 17 ++++++++++-------
 .../store/mail/model/ListMessageAssert.java     | 20 +++++++++++---------
 .../transport/mailets/UseHeaderRecipients.java  | 11 ++++++-----
 .../utils/MailAddressCollectionReader.java      | 16 +++++++++-------
 .../imap/processor/AbstractAuthProcessor.java   |  2 +-
 .../CassandraRecipientRewriteTable.java         |  7 ++++---
 .../org/apache/james/rrt/lib/MappingsImpl.java  |  4 +++-
 .../apache/james/transport/mailets/Resend.java  |  8 ++++----
 ...ddressesArrayToMailAddressListConverter.java |  4 ++--
 .../remoteDelivery/DelaysAndMaxRetry.java       |  7 ++-----
 .../james/transport/util/MailAddressUtils.java  |  6 +++---
 ...ssesArrayToMailAddressListConverterTest.java | 11 ++++++++++-
 .../methods/SetMailboxesCreationProcessor.java  |  4 ++--
 .../org/apache/james/jmap/model/Attachment.java | 14 ++++++++++++++
 .../apache/james/jmap/model/MessageFactory.java |  4 ++--
 19 files changed, 87 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
----------------------------------------------------------------------
diff --git a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
index 19e0d86..42604dc 100644
--- a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
+++ b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
@@ -27,7 +27,6 @@ import javax.persistence.EntityManagerFactory;
 
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 
-import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
 
 public class JpaTestCluster {
@@ -48,10 +47,9 @@ public class JpaTestCluster {
         properties.put("openjpa.Log", "JDBC=WARN, SQL=WARN, Runtime=WARN");
         properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72");
         properties.put("openjpa.MetaDataFactory", "jpa(Types=" +
-            Joiner.on(";").join(
                 clazz.stream()
                     .map(Class::getName)
-                    .collect(Collectors.toList()))
+                    .collect(Collectors.joining(";"))
             + ")");
         return new JpaTestCluster(OpenJPAPersistence.getEntityManagerFactory(properties));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
index 94fc839..2f3a7f4 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
@@ -27,7 +27,7 @@ import com.google.common.base.Preconditions;
 
 public class MailboxAnnotation {
     public static MailboxAnnotation nil(MailboxAnnotationKey key) {
-        return new MailboxAnnotation(key, Optional.<String> empty());
+        return new MailboxAnnotation(key, Optional.empty());
     }
 
     public static MailboxAnnotation newInstance(MailboxAnnotationKey key, String value) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
index af33569..838ac56 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
@@ -23,7 +23,6 @@ import java.util.Optional;
 
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.model.Cid;
-import org.apache.james.mailbox.model.MessageAttachment;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
@@ -36,15 +35,6 @@ public class MessageAttachmentRepresentation {
         return new Builder();
     }
 
-    public static MessageAttachmentRepresentation fromAttachment(MessageAttachment attachment) {
-        return builder()
-            .attachmentId(attachment.getAttachmentId())
-            .cid(attachment.getCid())
-            .isInline(attachment.isInline())
-            .name(attachment.getName().orElse(null))
-            .build();
-    }
-
     public static class Builder {
 
         private AttachmentId attachmentId;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index a5c0492..11759cb 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -56,7 +56,6 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.mailbox.store.quota.QuotaChecker;
-import org.apache.james.util.PredicateUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -274,8 +273,8 @@ public class StoreMessageIdManager implements MessageIdManager {
     }
 
     private Predicate<MailboxMessage> messageBelongsToUser(MailboxSession mailboxSession, MailboxMapper mailboxMapper) {
-        return PredicateUtils.compose(mailboxBelongsToUser(mailboxSession, mailboxMapper),
-            MailboxMessage::getMailboxId);
+        return mailboxMessage -> mailboxBelongsToUser(mailboxSession, mailboxMapper)
+            .test(mailboxMessage.getMailboxId());
     }
 
     private void allowOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession, MailboxMapper mailboxMapper) throws MailboxNotFoundException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/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 bc9a931..c2614de 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
@@ -157,13 +157,16 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex {
     }
 
     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);
-            }
-        }).collect(Guavate.toImmutableList());
+        return mailboxes.flatMap(mailbox -> getSearchResultStream(session, query, mailbox))
+            .collect(Guavate.toImmutableList());
+    }
+
+    private Stream<? extends SearchResult> getSearchResultStream(MailboxSession session, SearchQuery query, Mailbox mailbox) {
+        try {
+            return searchResults(session, mailbox, query).stream();
+        } catch (MailboxException e) {
+            throw Throwables.propagate(e);
+        }
     }
 
     private List<MessageId> getAsMessageIds(List<SearchResult> temp, long limit) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/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 215b8c1..1933858 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
@@ -39,18 +39,20 @@ public class ListMessageAssert {
 
     private final List<InnerMessage> messageToInnerMessage(List<MailboxMessage> messages) {
         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;
-                }
-            })
+            .map(message -> getInnerMessage(message))
             .collect(Guavate.toImmutableList());
     }
 
+    private InnerMessage getInnerMessage(MailboxMessage 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;
+        }
+    }
+
     private ListMessageAssert(List<MailboxMessage> actual) {
         this.actual = actual;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
index 7b2b6a6..c562ee8 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
@@ -22,6 +22,7 @@ package org.apache.james.transport.mailets;
 
 import java.io.UnsupportedEncodingException;
 import java.util.Collection;
+import java.util.stream.Stream;
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
@@ -174,7 +175,7 @@ public class UseHeaderRecipients extends GenericMailet {
             .parseAddressList(MimeUtil.unfold(headerPart));
 
         return addressList.stream()
-            .flatMap(address -> convertAddressToMailboxCollection(address).stream())
+            .flatMap(address -> convertAddressToMailboxCollection(address))
             .map(this::toMailAddress)
             .collect(Guavate.toImmutableList());
     }
@@ -187,13 +188,13 @@ public class UseHeaderRecipients extends GenericMailet {
         }
     }
 
-    private Collection<Mailbox> convertAddressToMailboxCollection(Address address) {
+    private Stream<Mailbox> convertAddressToMailboxCollection(Address address) {
         if (address instanceof Mailbox) {
-            return ImmutableList.of((Mailbox) address);
+            return ImmutableList.of((Mailbox) address).stream();
         } else if (address instanceof Group) {
-            return ImmutableList.copyOf(((Group) address).getMailboxes());
+            return ImmutableList.copyOf(((Group) address).getMailboxes()).stream();
         }
-        return ImmutableList.of();
+        return Stream.of();
     }
 
     private String sanitizeHeaderString(String header) throws MessagingException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
index 802e79d..6371d35 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
@@ -38,14 +38,16 @@ public class MailAddressCollectionReader {
         return Splitter.onPattern("(,| |\t)").splitToList(condition)
             .stream()
             .filter(s -> !Strings.isNullOrEmpty(s))
-            .map(s -> {
-                try {
-                    return new MailAddress(s);
-                } catch (AddressException e) {
-                    throw Throwables.propagate(e);
-                }
-            })
+            .map(s -> getMailAddress(s))
             .collect(Guavate.toImmutableSet());
     }
 
+    private static MailAddress getMailAddress(String s) {
+        try {
+            return new MailAddress(s);
+        } catch (AddressException e) {
+            throw Throwables.propagate(e);
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
index 5ff2d9b..7208b3c 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
@@ -170,7 +170,7 @@ public abstract class AbstractAuthProcessor<M extends ImapRequest> extends Abstr
     }
 
     protected static AuthenticationAttempt noDelegation(String authenticationId, String password) {
-        return new AuthenticationAttempt(Optional.<String>empty(), authenticationId, password);
+        return new AuthenticationAttempt(Optional.empty(), authenticationId, password);
     }
 
     protected static class AuthenticationAttempt {

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
index 5a892e3..60642e2 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
@@ -174,9 +174,10 @@ public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTabl
     @Override
     protected String mapAddressInternal(String user, String domain) throws RecipientRewriteTableException {
         Mappings mappings = retrieveMappings(user, domain)
-            .orElse(retrieveMappings(WILDCARD, domain)
-                    .orElse(retrieveMappings(user, WILDCARD)
-                            .orElse(MappingsImpl.empty())));
+            .orElseGet(() -> retrieveMappings(WILDCARD, domain)
+                .orElseGet(() -> retrieveMappings(user, WILDCARD)
+                    .orElseGet(() -> MappingsImpl.empty())));
+
         return !mappings.isEmpty() ? mappings.serialize() : null;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
index ac11e02..eacc55e 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
@@ -31,6 +31,7 @@ import java.util.stream.Stream;
 
 import org.apache.james.rrt.lib.Mapping.Type;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Joiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
@@ -121,7 +122,8 @@ public class MappingsImpl implements Mappings, Serializable {
     @Override
     public Iterable<String> asStrings() {
         return mappings.stream()
-            .map(Mapping::asString)::iterator;
+            .map(Mapping::asString)
+            .collect(Guavate.toImmutableList());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
index 0ee248f..393bd6e 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
@@ -369,8 +369,8 @@ public class Resend extends GenericMailet implements RedirectNotify {
         }
 
         return AddressExtractor.withContext(getMailetContext())
-                .allowedSpecials(ImmutableList.of("postmaster", "sender", "null", "unaltered"))
-                .extract(replyTo)
+            .allowedSpecials(ImmutableList.of("postmaster", "sender", "null", "unaltered"))
+            .extract(replyTo)
             .stream()
             .findFirst();
     }
@@ -384,8 +384,8 @@ public class Resend extends GenericMailet implements RedirectNotify {
     public List<MailAddress> getRecipients() throws MessagingException {
           ImmutableList.Builder<MailAddress> builder = ImmutableList.builder();
           List<MailAddress> mailAddresses = AddressExtractor.withContext(getMailetContext())
-                  .allowedSpecials(ImmutableList.of("postmaster", "sender", "from", "replyTo", "reversePath", "unaltered", "recipients", "to", "null"))
-                  .extract(getInitParameters().getRecipients());
+              .allowedSpecials(ImmutableList.of("postmaster", "sender", "from", "replyTo", "reversePath", "unaltered", "recipients", "to", "null"))
+              .extract(getInitParameters().getRecipients());
           for (MailAddress address : mailAddresses) {
               builder.add(address);
           }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
index 60f8e46..cef6c33 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
@@ -25,6 +25,7 @@ import java.util.Optional;
 import javax.mail.Address;
 import javax.mail.internet.AddressException;
 
+import org.apache.james.util.OptionalUtils;
 import org.apache.mailet.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -42,8 +43,7 @@ public class AddressesArrayToMailAddressListConverter {
         return Arrays.asList(addresses)
             .stream()
             .map(address -> toMailAddress(address))
-            .filter(Optional::isPresent)
-            .map(Optional::get)
+            .flatMap(OptionalUtils::toStream)
             .collect(Guavate.toImmutableList());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
index 11036b3..e627ea0 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
@@ -25,7 +25,6 @@ import javax.mail.MessagingException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Splitter;
@@ -80,11 +79,9 @@ public class DelaysAndMaxRetry {
             return ImmutableList.of(new Delay());
         }
 
-        ImmutableList<String> delayStrings = Splitter.on(',')
+        List<String> delayStrings = Splitter.on(',')
             .omitEmptyStrings()
-            .splitToList(delaysAsString)
-            .stream()
-            .collect(Guavate.toImmutableList());
+            .splitToList(delaysAsString);
 
         ImmutableList.Builder<Delay> builder = ImmutableList.builder();
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
index bce977b..0a19e1f 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
@@ -44,16 +44,16 @@ public class MailAddressUtils {
     }
 
     public static List<InternetAddress> toInternetAddresses(List<MailAddress> mailAddresses) {
-        return iterableOfInternetAddress(mailAddresses)
+        return streamOfInternetAddress(mailAddresses)
             .collect(Guavate.toImmutableList());
     }
 
     public static InternetAddress[] toInternetAddressArray(List<MailAddress> mailAddresses) {
-        return iterableOfInternetAddress(mailAddresses)
+        return streamOfInternetAddress(mailAddresses)
             .toArray(InternetAddress[]::new);
     }
 
-    private static Stream<InternetAddress> iterableOfInternetAddress(List<MailAddress> mailAddresses) {
+    private static Stream<InternetAddress> streamOfInternetAddress(List<MailAddress> mailAddresses) {
         return mailAddresses.stream()
             .map(MailAddress::toInternetAddress);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverterTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverterTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverterTest.java
index 6ec50e4..e706e58 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverterTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverterTest.java
@@ -20,7 +20,6 @@
 package org.apache.james.transport.mailets.remoteDelivery;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import javax.mail.Address;
 import javax.mail.internet.InternetAddress;
 
@@ -29,6 +28,8 @@ import org.junit.Test;
 
 public class AddressesArrayToMailAddressListConverterTest {
 
+    private static final String WRONG_INTERNET_ADDRESS = "!!";
+
     @Test
     public void getAddressesAsMailAddressShouldReturnEmptyOnNull() {
         assertThat(AddressesArrayToMailAddressListConverter.getAddressesAsMailAddress(null)).isEmpty();
@@ -53,4 +54,12 @@ public class AddressesArrayToMailAddressListConverterTest {
             new InternetAddress(MailAddressFixture.OTHER_AT_JAMES.toString())}))
             .containsOnly(MailAddressFixture.ANY_AT_JAMES, MailAddressFixture.OTHER_AT_JAMES);
     }
+
+    @Test
+    public void getAddressesAsMailAddressShouldFilterErrorMailAddress() throws Exception {
+        assertThat(AddressesArrayToMailAddressListConverter.getAddressesAsMailAddress(new Address[]{
+            new InternetAddress(MailAddressFixture.ANY_AT_JAMES.toString()),
+            new InternetAddress(WRONG_INTERNET_ADDRESS)}))
+            .containsOnly(MailAddressFixture.ANY_AT_JAMES);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
index 071eefd..51b9c54 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
@@ -48,12 +48,12 @@ import org.apache.james.mailbox.model.MailboxId.Factory;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.github.fge.lambdas.Throwing;
 import com.github.fge.lambdas.functions.ThrowingFunction;
 import com.google.common.annotations.VisibleForTesting;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
index 68606cc..304acbe 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Attachment.java
@@ -21,6 +21,8 @@ package org.apache.james.jmap.model;
 
 import java.util.Optional;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
 import com.google.common.annotations.VisibleForTesting;
@@ -57,21 +59,33 @@ public class Attachment {
             return this;
         }
 
+        @JsonDeserialize
         public Builder name(String name) {
             this.name = name;
             return this;
         }
 
+        public Builder name(Optional<String> name) {
+            this.name = name.orElse(null);
+            return this;
+        }
+
         public Builder size(long size) {
             this.size = size;
             return this;
         }
 
+        @JsonDeserialize
         public Builder cid(String cid) {
             this.cid = cid;
             return this;
         }
 
+        public Builder cid(Optional<String> cid) {
+            this.cid = cid.orElse(null);
+            return this;
+        }
+
         public Builder isInline(boolean isInline) {
             this.isInline = isInline;
             return this;

http://git-wip-us.apache.org/repos/asf/james-project/blob/9dc495f9/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
index 9c03d3f..1533637 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java
@@ -219,8 +219,8 @@ public class MessageFactory {
                     .blobId(BlobId.of(attachment.getAttachmentId().getId()))
                     .type(attachment.getAttachment().getType())
                     .size(attachment.getAttachment().getSize())
-                    .name(attachment.getName().orElse(null))
-                    .cid(attachment.getCid().map(Cid::getValue).orElse(null))
+                    .name(attachment.getName())
+                    .cid(attachment.getCid().map(Cid::getValue))
                     .isInline(attachment.isInline())
                     .build();
     }


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


[18/22] james-project git commit: JAMES-2131 Metrics page should mention Grafana

Posted by bt...@apache.org.
JAMES-2131 Metrics page should mention Grafana


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/085a416e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/085a416e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/085a416e

Branch: refs/heads/master
Commit: 085a416ee74413c31ea5d51623cd676fb4921911
Parents: ac29dbe
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 30 11:54:32 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:45 2017 +0700

----------------------------------------------------------------------
 src/site/xdoc/server/metrics.xml | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/085a416e/src/site/xdoc/server/metrics.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/server/metrics.xml b/src/site/xdoc/server/metrics.xml
index 2964fed..e4dfda4 100644
--- a/src/site/xdoc/server/metrics.xml
+++ b/src/site/xdoc/server/metrics.xml
@@ -33,6 +33,11 @@
             <p>Such metrics are made available via JMX. You can connect for instance using VisualVM and the associated
             mbean plugins.</p>
 
+            <p>
+                You can also export the metrics to ElasticSearch and visualize them with <a href="https://grafana.com/">Grafana</a>.
+                See <a href="config-elasticsearch.html">elaticseach.properties</a> documentation for more details on how to set this up.
+            </p>
+
         </section>
 
         <section name="Available metrics">


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


[09/22] james-project git commit: JAMES-2127 Server: Replaced guava's Optional by java.util.Optional and it's related

Posted by bt...@apache.org.
JAMES-2127 Server: Replaced guava's Optional by java.util.Optional and it's related


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/3de14014
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/3de14014
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/3de14014

Branch: refs/heads/master
Commit: 3de14014578ab45a42e2e2cf29695ec417cea456
Parents: a50cd62
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 15:23:57 2017 +0700
Committer: quynhn <qn...@linagora.com>
Committed: Wed Aug 30 11:08:48 2017 +0700

----------------------------------------------------------------------
 .../apache/james/core/filesystem/SimpleUrl.java |  6 ++---
 .../apache/james/util/OptionalConverter.java    |  8 +++---
 .../james/util/OptionalConverterTest.java       |  9 +++----
 .../java/org/apache/james/rrt/lib/Mappings.java |  4 +--
 .../CassandraRecipientRewriteTable.java         | 12 ++++-----
 .../rrt/file/XMLRecipientRewriteTableTest.java  |  7 +++--
 .../rrt/hbase/HBaseRecipientRewriteTable.java   | 19 +++++++------
 .../user/ldap/ReadOnlyUsersLDAPRepository.java  | 11 ++++----
 .../org/apache/james/rrt/lib/MappingsImpl.java  |  4 +--
 .../james/user/lib/AbstractUsersRepository.java |  8 +++---
 .../apache/james/rrt/lib/MappingsImplTest.java  |  3 +--
 .../user/lib/AbstractUsersRepositoryTest.java   |  6 ++---
 .../rrt/memory/MemoryRecipientRewriteTable.java | 10 +++----
 .../user/memory/MemoryUsersRepository.java      | 13 +++++----
 .../mailetcontainer/impl/matchers/Not.java      |  5 ++--
 .../mailetcontainer/impl/matchers/Xor.java      |  5 ++--
 .../apache/james/transport/mailets/Bounce.java  |  3 +--
 .../james/transport/mailets/DSNBounce.java      |  5 ++--
 .../apache/james/transport/mailets/Forward.java | 15 +++++------
 .../transport/mailets/NotifyPostmaster.java     |  7 +++--
 .../james/transport/mailets/NotifySender.java   |  7 +++--
 .../mailets/RecipientRewriteTableProcessor.java | 15 +++++------
 .../james/transport/mailets/Redirect.java       | 12 ++++-----
 .../apache/james/transport/mailets/Resend.java  | 15 +++++------
 .../mailets/delivery/MailDispatcher.java        | 11 ++++----
 .../mailets/jsieve/CommonsLoggingAdapter.java   | 11 ++++----
 .../transport/mailets/jsieve/VacationReply.java | 13 +++++----
 .../mailets/redirect/AddressExtractor.java      |  9 +++----
 .../mailets/redirect/InitParameters.java        |  2 +-
 .../redirect/LoadedOnceInitParameters.java      |  2 +-
 .../mailets/redirect/MailModifier.java          |  3 +--
 .../redirect/NotifyMailetInitParameters.java    |  5 ++--
 .../redirect/RedirectMailetInitParameters.java  | 11 ++++----
 .../mailets/redirect/RedirectNotify.java        |  3 +--
 ...ddressesArrayToMailAddressListConverter.java |  5 ++--
 .../remoteDelivery/DeliveryRunnable.java        |  4 +--
 .../EnhancedMessagingException.java             | 19 +++++++------
 .../mailets/remoteDelivery/ExecutionResult.java |  7 ++---
 .../mailets/remoteDelivery/MessageComposer.java |  3 +--
 .../RemoteDeliveryConfiguration.java            | 24 ++++++++---------
 .../james/transport/util/ReplyToUtils.java      | 11 ++++----
 .../james/transport/util/SenderUtils.java       |  5 ++--
 .../transport/util/SpecialAddressesUtils.java   | 15 ++++++-----
 .../james/transport/mailets/ForwardTest.java    |  9 +++----
 .../james/transport/mailets/RedirectTest.java   |  7 ++---
 .../mailets/redirect/AddressExtractorTest.java  | 13 ++++-----
 .../redirect/LoadedOnceInitParametersTest.java  |  3 +--
 .../NotifyMailetInitParametersTest.java         | 25 ++++++++---------
 .../RedirectMailetInitParametersTest.java       | 25 ++++++++---------
 .../mailets/remoteDelivery/BouncerTest.java     | 28 +++++++++-----------
 .../james/transport/util/ReplyToUtilsTest.java  |  9 +++----
 .../james/transport/util/SenderUtilsTest.java   | 13 +++++----
 .../util/SpecialAddressesUtilsTest.java         | 11 +++-----
 .../apache/james/jmap/model/MessageFactory.java |  4 +--
 ...ltMailboxesProvisioningFilterThreadTest.java |  2 +-
 55 files changed, 236 insertions(+), 285 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/container/core/src/main/java/org/apache/james/core/filesystem/SimpleUrl.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/core/filesystem/SimpleUrl.java b/server/container/core/src/main/java/org/apache/james/core/filesystem/SimpleUrl.java
index a91e3dd..18b56bf 100644
--- a/server/container/core/src/main/java/org/apache/james/core/filesystem/SimpleUrl.java
+++ b/server/container/core/src/main/java/org/apache/james/core/filesystem/SimpleUrl.java
@@ -18,12 +18,12 @@
  ****************************************************************/
 package org.apache.james.core.filesystem;
 
+import java.util.Optional;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.CharMatcher;
-import com.google.common.base.Optional;
 import com.google.common.io.Files;
 
 public class SimpleUrl {
@@ -50,8 +50,8 @@ public class SimpleUrl {
     private static void extractComponents(String urlWithUnixSeparators) {
         Matcher m = URL_REGEXP.matcher(urlWithUnixSeparators);
         m.matches();
-        protocol = Optional.fromNullable(m.group(1)).or("");
-        path = Optional.fromNullable(m.group(2)).or("");
+        protocol = Optional.ofNullable(m.group(1)).orElse("");
+        path = Optional.ofNullable(m.group(2)).orElse("");
     }
 
     @VisibleForTesting

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java
index 5150be1..528268e 100644
--- a/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java
+++ b/server/container/util-java8/src/main/java/org/apache/james/util/OptionalConverter.java
@@ -35,12 +35,12 @@ public class OptionalConverter {
         return optional;
     }
 
-    public static <T> Optional<T> fromGuava(com.google.common.base.Optional<T> guava) {
-        return Optional.ofNullable(guava.orNull());
+    public static <T> Optional<T> fromGuava(Optional<T> guava) {
+        return Optional.ofNullable(guava.orElse(null));
     }
 
-    public static <T> com.google.common.base.Optional<T> toGuava(Optional<T> java) {
-        return com.google.common.base.Optional.fromNullable(java.orElse(null));
+    public static <T> Optional<T> toGuava(Optional<T> java) {
+        return Optional.ofNullable(java.orElse(null));
     }
 
     public static <T> Stream<T> toStream(Optional<T> optional) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java
index 000ea2c..63f68e9 100644
--- a/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java
+++ b/server/container/util-java8/src/test/java/org/apache/james/util/OptionalConverterTest.java
@@ -19,7 +19,6 @@
 package org.apache.james.util;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import java.util.Optional;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -92,7 +91,7 @@ public class OptionalConverterTest {
 
     @Test
     public void fromGuavaShouldReturnEmptyWhenGuavaIsEmpty() {
-        Optional<String> fromGuava = OptionalConverter.fromGuava(com.google.common.base.Optional.<String> absent());
+        Optional<String> fromGuava = OptionalConverter.fromGuava(Optional.<String> empty());
 
         assertThat(fromGuava).isEmpty();
     }
@@ -100,7 +99,7 @@ public class OptionalConverterTest {
     @Test
     public void fromGuavaShouldReturnNonEmptyWhenGuavaIsNonEmpty() {
         String value = "my string";
-        Optional<String> fromGuava = OptionalConverter.fromGuava(com.google.common.base.Optional.of(value));
+        Optional<String> fromGuava = OptionalConverter.fromGuava(Optional.of(value));
 
         assertThat(fromGuava).contains(value);
     }
@@ -113,7 +112,7 @@ public class OptionalConverterTest {
 
     @Test
     public void toGuavaShouldReturnEmptyWhenGuavaIsEmpty() {
-        com.google.common.base.Optional<String> toGuava = OptionalConverter.toGuava(Optional.<String> empty());
+        Optional<String> toGuava = OptionalConverter.toGuava(Optional.<String> empty());
 
         assertThat(toGuava.isPresent()).isFalse();
     }
@@ -121,7 +120,7 @@ public class OptionalConverterTest {
     @Test
     public void toGuavaShouldReturnNonEmptyWhenGuavaIsNonEmpty() {
         String value = "my string";
-        com.google.common.base.Optional<String> toGuava = OptionalConverter.toGuava(Optional.of(value));
+        Optional<String> toGuava = OptionalConverter.toGuava(Optional.of(value));
 
         assertThat(toGuava.get()).isEqualTo(value);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java
index a22fdce..21324aa 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/lib/Mappings.java
@@ -20,9 +20,9 @@
 
 package org.apache.james.rrt.lib;
 
-import org.apache.james.rrt.lib.Mapping.Type;
+import java.util.Optional;
 
-import com.google.common.base.Optional;
+import org.apache.james.rrt.lib.Mapping.Type;
 
 public interface Mappings extends Iterable<Mapping> {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
index 86e2b4d..5a892e3 100644
--- a/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
+++ b/server/data/data-cassandra/src/main/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTable.java
@@ -27,10 +27,9 @@ import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTab
 import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable.MAPPING;
 import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable.TABLE_NAME;
 import static org.apache.james.rrt.cassandra.tables.CassandraRecipientRewriteTableTable.USER;
-
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.inject.Inject;
 
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
@@ -43,7 +42,6 @@ import org.apache.james.rrt.lib.MappingsImpl;
 import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.Session;
 import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Optional;
 
 public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTable {
 
@@ -112,7 +110,7 @@ public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTabl
     @Override
     protected Mappings getUserDomainMappingsInternal(String user, String domain) throws RecipientRewriteTableException {
         return retrieveMappings(user, domain)
-            .orNull();
+            .orElse(null);
     }
 
     private Optional<Mappings> retrieveMappings(String user, String domain) {
@@ -176,9 +174,9 @@ public class CassandraRecipientRewriteTable extends AbstractRecipientRewriteTabl
     @Override
     protected String mapAddressInternal(String user, String domain) throws RecipientRewriteTableException {
         Mappings mappings = retrieveMappings(user, domain)
-            .or(() -> retrieveMappings(WILDCARD, domain)
-                    .or(() -> retrieveMappings(user, WILDCARD)
-                            .or(MappingsImpl.empty())));
+            .orElse(retrieveMappings(WILDCARD, domain)
+                    .orElse(retrieveMappings(user, WILDCARD)
+                            .orElse(MappingsImpl.empty())));
         return !mappings.isEmpty() ? mappings.serialize() : null;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
index bac9f98..3d3d900 100644
--- a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
+++ b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
@@ -20,8 +20,8 @@ package org.apache.james.rrt.file;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
@@ -29,10 +29,9 @@ import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
 import org.apache.james.rrt.lib.MappingsImpl.Builder;
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.junit.Before;
 
-import com.google.common.base.Optional;
-
 /**
  * Test the XML Virtual User Table implementation.
  */
@@ -62,7 +61,7 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
             removeMappingsFromConfig(user, domain, mappings);
         }
 
-        Builder builder = MappingsImpl.from(Optional.fromNullable(mappings).or(MappingsImpl.empty()));
+        Builder builder = MappingsImpl.from(Optional.ofNullable(mappings).orElse(MappingsImpl.empty()));
         
         if (type == ERROR_TYPE) {
             builder.add(RecipientRewriteTable.ERROR_PREFIX + mapping);

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java b/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
index 387af04..42731c2 100644
--- a/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
+++ b/server/data/data-hbase/src/main/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTable.java
@@ -22,7 +22,14 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
+import org.apache.james.rrt.api.RecipientRewriteTableException;
+import org.apache.james.rrt.hbase.def.HRecipientRewriteTable;
+import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
+import org.apache.james.rrt.lib.Mappings;
+import org.apache.james.rrt.lib.MappingsImpl;
+import org.apache.james.system.hbase.TablePool;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.client.Delete;
 import org.apache.hadoop.hbase.client.Get;
@@ -32,17 +39,9 @@ import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.client.ResultScanner;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.james.rrt.api.RecipientRewriteTableException;
-import org.apache.james.rrt.hbase.def.HRecipientRewriteTable;
-import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
-import org.apache.james.rrt.lib.Mappings;
-import org.apache.james.rrt.lib.MappingsImpl;
-import org.apache.james.system.hbase.TablePool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 /**
  * Implementation of the RecipientRewriteTable for a HBase persistence.
  */
@@ -134,9 +133,9 @@ public class HBaseRecipientRewriteTable extends AbstractRecipientRewriteTable {
                         }
                         Mappings mappings = 
                                 MappingsImpl.from(
-                                    Optional.fromNullable(
+                                    Optional.ofNullable(
                                         map.get(email))
-                                        .or(MappingsImpl.empty()))
+                                        .orElse(MappingsImpl.empty()))
                                 .add(Bytes.toString(keyValue.getRow()))
                                 .build();
                         map.put(email, mappings);

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
index 25ab0b5..bae64b4 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
@@ -25,9 +25,9 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
-
 import javax.annotation.PostConstruct;
 import javax.naming.Context;
 import javax.naming.NamingEnumeration;
@@ -39,9 +39,6 @@ import javax.naming.directory.SearchResult;
 import javax.naming.ldap.InitialLdapContext;
 import javax.naming.ldap.LdapContext;
 
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.commons.lang.StringUtils;
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
@@ -50,12 +47,14 @@ import org.apache.james.user.ldap.api.LdapConstants;
 import org.apache.james.util.retry.DoublingRetrySchedule;
 import org.apache.james.util.retry.api.RetrySchedule;
 import org.apache.james.util.retry.naming.ldap.RetryingLdapContext;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.lang.StringUtils;
 import org.apache.mailet.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Optional;
 
 /**
  * <p>
@@ -387,7 +386,7 @@ public class ReadOnlyUsersLDAPRepository implements UsersRepository, Configurabl
         //see if there is a filter argument
         filter = configuration.getString("[@filter]");
 
-        administratorId = Optional.fromNullable(configuration.getString("[@administratorId]"));
+        administratorId = Optional.ofNullable(configuration.getString("[@administratorId]"));
 
         checkState();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
index 4a4cb9b..523731e 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
@@ -24,6 +24,7 @@ import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Optional;
 import java.util.StringTokenizer;
 
 import org.apache.james.rrt.lib.Mapping.Type;
@@ -31,7 +32,6 @@ import org.apache.james.rrt.lib.Mapping.Type;
 import com.google.common.base.Joiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
@@ -198,7 +198,7 @@ public class MappingsImpl implements Mappings, Serializable {
     @Override
     public Optional<Mappings> toOptional() {
         if (isEmpty()) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.<Mappings> of(this);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
index edd2585..28f6128 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
@@ -19,20 +19,20 @@
 
 package org.apache.james.user.lib;
 
+import java.util.Optional;
 import javax.inject.Inject;
 
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.api.DomainListException;
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.user.api.AlreadyExistInUsersRepositoryException;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.mailet.MailAddress;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 
 public abstract class AbstractUsersRepository implements UsersRepository, Configurable {
 
@@ -47,7 +47,7 @@ public abstract class AbstractUsersRepository implements UsersRepository, Config
     public void configure(HierarchicalConfiguration configuration) throws ConfigurationException {
 
         virtualHosting = configuration.getBoolean("enableVirtualHosting", getDefaultVirtualHostingValue());
-        administratorId = Optional.fromNullable(configuration.getString("administratorId"));
+        administratorId = Optional.ofNullable(configuration.getString("administratorId"));
 
         doConfigure(configuration);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
index ceb1c4f..85bab7e 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/MappingsImplTest.java
@@ -21,11 +21,10 @@
 package org.apache.james.rrt.lib;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
 
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 
 public class MappingsImplTest {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
index eb0b548..1b8a0e7 100644
--- a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
@@ -19,9 +19,9 @@
 package org.apache.james.user.lib;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.Optional;
 
 import org.apache.james.domainlist.api.mock.SimpleDomainList;
 import org.apache.james.lifecycle.api.LifecycleUtil;
@@ -34,8 +34,6 @@ import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 
 public abstract class AbstractUsersRepositoryTest {
 
@@ -331,7 +329,7 @@ public abstract class AbstractUsersRepositoryTest {
 
     @Test
     public void isAdministratorShouldReturnFalseWhenNotConfigured() throws Exception {
-        usersRepository.setAdministratorId(Optional.<String>absent());
+        usersRepository.setAdministratorId(Optional.empty());
 
         assertThat(usersRepository.isAdministrator(admin)).isFalse();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
index 70890a3..86b07ab 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTable.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
@@ -30,7 +31,6 @@ import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
 
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -103,15 +103,15 @@ public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
     @Override
     protected Mappings getUserDomainMappingsInternal(String user, String domain) throws RecipientRewriteTableException {
         return retrieveMappings(user, domain)
-            .orNull();
+            .orElse(null);
     }
 
     @Override
     protected String mapAddressInternal(String user, String domain) throws RecipientRewriteTableException {
         Mappings mappings = retrieveMappings(user, domain)
-            .or(retrieveMappings(WILDCARD, domain)
-                .or(retrieveMappings(user, WILDCARD)
-                    .or(MappingsImpl.empty())));
+            .orElse(retrieveMappings(WILDCARD, domain)
+                .orElse(retrieveMappings(user, WILDCARD)
+                    .orElse(MappingsImpl.empty())));
 
         return !mappings.isEmpty() ? mappings.serialize() : null;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java b/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
index 97380fa..b24d0ae 100644
--- a/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
+++ b/server/data/data-memory/src/main/java/org/apache/james/user/memory/MemoryUsersRepository.java
@@ -23,15 +23,14 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Optional;
 
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.api.model.User;
 import org.apache.james.user.lib.AbstractUsersRepository;
 import org.apache.james.user.lib.model.DefaultUser;
-
-import com.google.common.base.Optional;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.HierarchicalConfiguration;
 
 public class MemoryUsersRepository extends AbstractUsersRepository {
 
@@ -103,9 +102,9 @@ public class MemoryUsersRepository extends AbstractUsersRepository {
 
     @Override
     public boolean test(String name, final String password) throws UsersRepositoryException {
-        return Optional.fromNullable(userByName.get(name))
-            .transform(user -> user.verifyPassword(password))
-            .or(false);
+        return Optional.ofNullable(userByName.get(name))
+            .map(user -> user.verifyPassword(password))
+            .orElse(false);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Not.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Not.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Not.java
index 8ce5a23..7b46a4f 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Not.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Not.java
@@ -21,14 +21,13 @@ package org.apache.james.mailetcontainer.impl.matchers;
 
 import java.util.ArrayList;
 import java.util.Collection;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.Matcher;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 
 /**
@@ -43,7 +42,7 @@ import com.google.common.collect.Lists;
 public class Not extends GenericCompositeMatcher {
 
     public Collection<MailAddress> match(Mail mail) throws MessagingException {
-        Collection<MailAddress> finalResult = Optional.fromNullable(Lists.newArrayList(mail.getRecipients())).or(new ArrayList<>());
+        Collection<MailAddress> finalResult = Optional.ofNullable(Lists.newArrayList(mail.getRecipients())).orElse(new ArrayList<>());
         for (Matcher matcher : getMatchers()) {
             Collection<MailAddress> matcherResult = matcher.match(mail);
             if (matcherResult != null) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Xor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Xor.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Xor.java
index 87bd63e..32794cc 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Xor.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/matchers/Xor.java
@@ -21,14 +21,13 @@ package org.apache.james.mailetcontainer.impl.matchers;
 
 import java.util.ArrayList;
 import java.util.Collection;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.Matcher;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 
@@ -46,7 +45,7 @@ public class Xor extends GenericCompositeMatcher {
         Collection<MailAddress> finalResult = null;
         boolean first = true;
         for (Matcher matcher: getMatchers()) {
-            Collection<MailAddress> matchedAddresses = Optional.fromNullable(matcher.match(mail)).or(new ArrayList<>());
+            Collection<MailAddress> matchedAddresses = Optional.ofNullable(matcher.match(mail)).orElse(new ArrayList<>());
 
             if (first) {
                 finalResult = matchedAddresses;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
index d431613..2886391 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
@@ -45,7 +45,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
index eb41fcf..8a72e57 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
@@ -23,8 +23,8 @@ import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.util.Date;
 import java.util.List;
+import java.util.Optional;
 import java.util.regex.Pattern;
-
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.Session;
@@ -32,7 +32,6 @@ import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.lang.time.FastDateFormat;
 import org.apache.james.core.MailImpl;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.transport.mailets.managesieve.ManageSieveMailet;
@@ -51,6 +50,7 @@ import org.apache.james.transport.util.ReplyToUtils;
 import org.apache.james.transport.util.SenderUtils;
 import org.apache.james.transport.util.SpecialAddressesUtils;
 import org.apache.james.transport.util.TosUtils;
+import org.apache.commons.lang.time.FastDateFormat;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.DateFormats;
@@ -61,7 +61,6 @@ import org.apache.mailet.base.mail.MimeMultipartReport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
index a07b112..312306f 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Forward.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
@@ -44,7 +44,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 
@@ -114,7 +113,7 @@ public class Forward extends GenericMailet implements RedirectNotify {
 
     @Override
     public InitParameters getInitParameters() {
-        return RedirectMailetInitParameters.from(this, Optional.of(TypeCode.NONE), Optional.<TypeCode> absent());
+        return RedirectMailetInitParameters.from(this, Optional.of(TypeCode.NONE), Optional.empty());
     }
 
     @Override
@@ -205,7 +204,7 @@ public class Forward extends GenericMailet implements RedirectNotify {
 
     @Override
     public Optional<MailAddress> getReplyTo() throws MessagingException {
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override
@@ -215,17 +214,17 @@ public class Forward extends GenericMailet implements RedirectNotify {
 
     @Override
     public Optional<MailAddress> getReversePath() throws MessagingException {
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override
     public Optional<MailAddress> getReversePath(Mail originalMail) throws MessagingException {
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override
     public Optional<MailAddress> getSender() throws MessagingException {
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override
@@ -235,7 +234,7 @@ public class Forward extends GenericMailet implements RedirectNotify {
 
     @Override
     public Optional<String> getSubjectPrefix(Mail newMail, String subjectPrefix, Mail originalMail) throws MessagingException {
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
index 3522a56..ed95c5a 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
@@ -47,7 +47,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 /**
@@ -130,7 +129,7 @@ public class NotifyPostmaster extends GenericMailet implements RedirectNotify {
     private static final List<String> ALLOWED_SPECIALS = ImmutableList.of("postmaster", "unaltered");
 
     private final DNSService dns;
-    private Optional<String> to = Optional.absent();
+    private Optional<String> to = Optional.empty();
 
     @Inject
     public NotifyPostmaster(DNSService dns) {
@@ -140,7 +139,7 @@ public class NotifyPostmaster extends GenericMailet implements RedirectNotify {
     @Override
     public void init(MailetConfig mailetConfig) throws MessagingException {
         super.init(mailetConfig);
-        to = Optional.fromNullable(getInitParameter("to"));
+        to = Optional.ofNullable(getInitParameter("to"));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
index 85cec94..07bc700 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
@@ -47,7 +47,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 /**
@@ -130,7 +129,7 @@ public class NotifySender extends GenericMailet implements RedirectNotify {
     private static final List<String> ALLOWED_SPECIALS = ImmutableList.of("sender", "unaltered", "from");
 
     private final DNSService dns;
-    private Optional<String> to = Optional.absent();
+    private Optional<String> to = Optional.empty();
 
     @Inject
     public NotifySender(DNSService dns) {
@@ -140,7 +139,7 @@ public class NotifySender extends GenericMailet implements RedirectNotify {
     @Override
     public void init(MailetConfig mailetConfig) throws MessagingException {
         super.init(mailetConfig);
-        to = Optional.fromNullable(getInitParameter("to"));
+        to = Optional.ofNullable(getInitParameter("to"));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
index c47b744..6e91e6b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
@@ -40,7 +40,6 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
@@ -55,15 +54,15 @@ public class RecipientRewriteTableProcessor {
 
     private static final Function<RrtExecutionResult, List<MailAddress>> mailAddressesFromMappingData =
         mappingData -> mappingData.getNewRecipients()
-            .or(mappingData.getRecipientWithError()
-                .or(ImmutableList.of()));
+            .orElse(mappingData.getRecipientWithError()
+                .orElse(ImmutableList.of()));
 
     private static final Function<Mapping, Optional<MailAddress>> mailAddressFromMapping =
         addressMapping -> {
             try {
                 return Optional.of(new MailAddress(addressMapping.asString()));
             } catch (AddressException e) {
-                return Optional.absent();
+                return Optional.empty();
             }
         };
 
@@ -116,7 +115,7 @@ public class RecipientRewriteTableProcessor {
 
             if (mappings != null) {
                 List<MailAddress> newMailAddresses = handleMappings(mappings, mail.getSender(), recipient, mail.getMessage());
-                return new RrtExecutionResult(Optional.of(newMailAddresses), Optional.<List<MailAddress>>absent());
+                return new RrtExecutionResult(Optional.of(newMailAddresses), Optional.empty());
             }
             return origin(recipient);
         } catch (ErrorMappingException | RecipientRewriteTableException | MessagingException e) {
@@ -200,11 +199,11 @@ public class RecipientRewriteTableProcessor {
     }
     
     private RrtExecutionResult error(MailAddress mailAddress) {
-        return new RrtExecutionResult(Optional.<List<MailAddress>>absent(), Optional.<List<MailAddress>>of(ImmutableList.of(mailAddress)));
+        return new RrtExecutionResult(Optional.empty(), Optional.<List<MailAddress>>of(ImmutableList.of(mailAddress)));
     }
 
     private RrtExecutionResult origin(MailAddress mailAddress) {
-        return new RrtExecutionResult(Optional.<List<MailAddress>>of(ImmutableList.of(mailAddress)), Optional.<List<MailAddress>>absent());
+        return new RrtExecutionResult(Optional.<List<MailAddress>>of(ImmutableList.of(mailAddress)), Optional.empty());
     }
 
     class RrtExecutionResult {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
index 1167408..616b7a0 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Redirect.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
@@ -47,8 +47,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 /**
@@ -323,7 +321,7 @@ public class Redirect extends GenericMailet implements RedirectNotify {
 
     @Override
     public InitParameters getInitParameters() {
-        return RedirectMailetInitParameters.from(this, Optional.<TypeCode> absent(), Optional.of(TypeCode.BODY));
+        return RedirectMailetInitParameters.from(this, Optional.empty(), Optional.of(TypeCode.BODY));
     }
 
     @Override
@@ -416,8 +414,8 @@ public class Redirect extends GenericMailet implements RedirectNotify {
         List<MailAddress> extractAddresses = AddressExtractor.withContext(getMailetContext())
                 .allowedSpecials(ImmutableList.of("postmaster", "sender", "null", "unaltered"))
                 .extract(replyTo);
-        return FluentIterable.from(extractAddresses)
-                .first();
+        return extractAddresses.stream()
+            .findFirst();
     }
 
     @Override
@@ -444,7 +442,7 @@ public class Redirect extends GenericMailet implements RedirectNotify {
         Optional<MailAddress> reversePath = getReversePath();
         if (reversePath.isPresent()) {
             if (MailAddressUtils.isUnalteredOrReversePathOrSender(reversePath.get())) {
-                return Optional.absent();
+                return Optional.empty();
             }
         }
         return reversePath;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
index 891bd16..0ee248f 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Resend.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
@@ -45,8 +45,6 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 /**
@@ -367,13 +365,14 @@ public class Resend extends GenericMailet implements RedirectNotify {
     public Optional<MailAddress> getReplyTo() throws MessagingException {
         Optional<String> replyTo = getInitParameters().getReplyTo();
         if (!replyTo.isPresent()) {
-            return Optional.absent();
+            return Optional.empty();
         }
 
-        return FluentIterable.from(AddressExtractor.withContext(getMailetContext())
+        return AddressExtractor.withContext(getMailetContext())
                 .allowedSpecials(ImmutableList.of("postmaster", "sender", "null", "unaltered"))
-                .extract(replyTo))
-            .first();
+                .extract(replyTo)
+            .stream()
+            .findFirst();
     }
 
     @Override
@@ -409,7 +408,7 @@ public class Resend extends GenericMailet implements RedirectNotify {
         Optional<MailAddress> reversePath = getReversePath();
         if (reversePath.isPresent()) {
             if (MailAddressUtils.isUnalteredOrReversePathOrSender(reversePath.get())) {
-                return Optional.absent();
+                return Optional.empty();
             }
         }
         return reversePath;

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
index 7125cb1..4257917 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailDispatcher.java
@@ -21,8 +21,8 @@ package org.apache.james.transport.mailets.delivery;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Vector;
-
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
@@ -34,7 +34,6 @@ import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
@@ -50,7 +49,7 @@ public class MailDispatcher {
     public static class Builder {
         public static final boolean CONSUME = true;
         private MailStore mailStore;
-        private Optional<Boolean> consume = Optional.absent();
+        private Optional<Boolean> consume = Optional.empty();
         private MailetContext mailetContext;
 
         public Builder consume(boolean consume) {
@@ -71,7 +70,7 @@ public class MailDispatcher {
         public MailDispatcher build() throws MessagingException {
             Preconditions.checkNotNull(mailStore);
             Preconditions.checkNotNull(mailetContext);
-            return new MailDispatcher(mailStore, consume.or(CONSUME), mailetContext);
+            return new MailDispatcher(mailStore, consume.orElse(CONSUME), mailetContext);
         }
 
     }
@@ -138,8 +137,8 @@ public class MailDispatcher {
         Collection<String> headersToSave = mail.getPerRecipientSpecificHeaders().getHeaderNamesForRecipient(recipient);
         for (String headerName: headersToSave) {
             List<String> values = ImmutableList.copyOf(
-                        Optional.fromNullable(mail.getMessage().getHeader(headerName))
-                            .or(NO_HEADERS));
+                        Optional.ofNullable(mail.getMessage().getHeader(headerName))
+                            .orElse(NO_HEADERS));
             backup.put(headerName, values);
         }
         return backup.build();

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
index 7be17e0..2e7293b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/CommonsLoggingAdapter.java
@@ -18,10 +18,11 @@
  ****************************************************************/
 package org.apache.james.transport.mailets.jsieve;
 
+import java.util.Optional;
+
 import org.apache.commons.logging.Log;
 import org.slf4j.Logger;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 /**
@@ -34,8 +35,8 @@ public class CommonsLoggingAdapter implements Log {
     }
 
     public static class Builder {
-        private Optional<Boolean> verbose = Optional.absent();
-        private Optional<Boolean> quiet = Optional.absent();
+        private Optional<Boolean> verbose = Optional.empty();
+        private Optional<Boolean> quiet = Optional.empty();
         private Logger logger;
 
         public Builder wrappedLogger(Logger logger) {
@@ -55,8 +56,8 @@ public class CommonsLoggingAdapter implements Log {
 
         public CommonsLoggingAdapter build() {
             Preconditions.checkNotNull(logger);
-            Boolean quietParameter = quiet.or(false);
-            Boolean verboseParameter = verbose.or(false);
+            Boolean quietParameter = quiet.orElse(false);
+            Boolean verboseParameter = verbose.orElse(false);
             Preconditions.checkState(!(verboseParameter && quietParameter), "You can not specify a logger both verbose and quiet");
             return new CommonsLoggingAdapter(logger, computeLogLevel(quietParameter, verboseParameter));
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationReply.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationReply.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationReply.java
index 028b0e6..6bb8cba 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationReply.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/VacationReply.java
@@ -21,7 +21,7 @@ package org.apache.james.transport.mailets.jsieve;
 
 import java.io.IOException;
 import java.util.List;
-
+import java.util.Optional;
 import javax.activation.DataHandler;
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
@@ -36,7 +36,6 @@ import org.apache.mailet.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
 
@@ -93,8 +92,8 @@ public class VacationReply {
         }
 
         private String generateNotificationSubject() {
-            return Optional.fromNullable(subject)
-                .or(context.getRecipient() + " is currently in vacation");
+            return Optional.ofNullable(subject)
+                .orElse(context.getRecipient() + " is currently in vacation");
         }
 
         private Multipart generateNotificationContent() throws MessagingException {
@@ -127,9 +126,9 @@ public class VacationReply {
         }
 
         private MailAddress retrieveOriginalSender() throws AddressException {
-            return Optional.fromNullable(from)
-                .transform(address -> retrieveAddressFromString(address, context))
-                .or(context.getRecipient());
+            return Optional.ofNullable(from)
+                .map(address -> retrieveAddressFromString(address, context))
+                .orElse(context.getRecipient());
         }
 
         private MailAddress retrieveAddressFromString(String address, ActionContext context) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java
index 85475ee..43272f9 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/AddressExtractor.java
@@ -21,7 +21,7 @@ package org.apache.james.transport.mailets.redirect;
 
 import java.util.List;
 import java.util.Locale;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
@@ -30,7 +30,6 @@ import org.apache.mailet.MailAddress;
 import org.apache.mailet.MailetContext;
 import org.apache.mailet.base.StringUtils;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
@@ -126,7 +125,7 @@ public class AddressExtractor {
      */
     private Optional<MailAddress> getSpecialAddress(String addressString) throws MessagingException {
         if (Strings.isNullOrEmpty(addressString)) {
-            return Optional.absent();
+            return Optional.empty();
         }
 
         Optional<MailAddress> specialAddress = asSpecialAddress(addressString);
@@ -136,7 +135,7 @@ public class AddressExtractor {
             }
             return specialAddress;
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     private Optional<MailAddress> asSpecialAddress(String addressString) {
@@ -171,7 +170,7 @@ public class AddressExtractor {
         if (lowerCaseTrimed.equals("null")) {
             return Optional.of(SpecialAddress.NULL);
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     private boolean isAllowed(String addressString, List<String> allowedSpecials) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/InitParameters.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/InitParameters.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/InitParameters.java
index 766038c..6570aa7 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/InitParameters.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/InitParameters.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.transport.mailets.redirect;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 public interface InitParameters {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParameters.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParameters.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParameters.java
index 5b7a44c..3490d4d 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParameters.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/LoadedOnceInitParameters.java
@@ -19,7 +19,7 @@
 
 package org.apache.james.transport.mailets.redirect;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 public class LoadedOnceInitParameters implements InitParameters {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
index ff7c6d9..c1e0d2c 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/MailModifier.java
@@ -21,7 +21,7 @@ package org.apache.james.transport.mailets.redirect;
 import java.net.UnknownHostException;
 import java.util.Date;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
@@ -37,7 +37,6 @@ import org.apache.mailet.base.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 public class MailModifier {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParameters.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParameters.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParameters.java
index a9012de..0c2ae70 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParameters.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/NotifyMailetInitParameters.java
@@ -19,9 +19,10 @@
 
 package org.apache.james.transport.mailets.redirect;
 
+import java.util.Optional;
+
 import org.apache.mailet.base.GenericMailet;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 
 public class NotifyMailetInitParameters implements InitParameters {
@@ -110,7 +111,7 @@ public class NotifyMailetInitParameters implements InitParameters {
     public Optional<String> getReplyTo() {
         String recipients = mailet.getInitParameter("replyTo", mailet.getInitParameter("replyto"));
         if (Strings.isNullOrEmpty(recipients)) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(recipients);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParameters.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParameters.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParameters.java
index 45dcc9b..9ba0892 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParameters.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectMailetInitParameters.java
@@ -19,15 +19,16 @@
 
 package org.apache.james.transport.mailets.redirect;
 
+import java.util.Optional;
+
 import org.apache.mailet.base.GenericMailet;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 
 public class RedirectMailetInitParameters implements InitParameters {
 
     public static InitParameters from(GenericMailet mailet) {
-        RedirectMailetInitParameters initParameters = new RedirectMailetInitParameters(mailet, Optional.<TypeCode> absent(), Optional.<TypeCode> absent());
+        RedirectMailetInitParameters initParameters = new RedirectMailetInitParameters(mailet, Optional.empty(), Optional.empty());
         if (initParameters.isStatic()) {
             return LoadedOnceInitParameters.from(initParameters);
         }
@@ -64,12 +65,12 @@ public class RedirectMailetInitParameters implements InitParameters {
 
     @Override
     public TypeCode getInLineType() {
-        return defaultInLineType.or(TypeCode.from(mailet.getInitParameter("inline", "unaltered")));
+        return defaultInLineType.orElse(TypeCode.from(mailet.getInitParameter("inline", "unaltered")));
     }
 
     @Override
     public TypeCode getAttachmentType() {
-        return defaultAttachmentType.or(TypeCode.from(mailet.getInitParameter("attachment", "none")));
+        return defaultAttachmentType.orElse(TypeCode.from(mailet.getInitParameter("attachment", "none")));
     }
 
     @Override
@@ -123,7 +124,7 @@ public class RedirectMailetInitParameters implements InitParameters {
     public Optional<String> getReplyTo() {
         String recipients = mailet.getInitParameter("replyTo", mailet.getInitParameter("replyto"));
         if (Strings.isNullOrEmpty(recipients)) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(recipients);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java
index 4323567..be4fd3f 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/RedirectNotify.java
@@ -20,7 +20,7 @@
 package org.apache.james.transport.mailets.redirect;
 
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
 
@@ -32,7 +32,6 @@ import org.apache.mailet.MailAddress;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.MailetConfig;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
index 928c379..a1cd46b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
@@ -21,7 +21,7 @@ package org.apache.james.transport.mailets.remoteDelivery;
 
 import java.util.Arrays;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Address;
 import javax.mail.internet.AddressException;
 
@@ -29,7 +29,6 @@ import org.apache.mailet.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
@@ -52,7 +51,7 @@ public class AddressesArrayToMailAddressListConverter {
             return Optional.of(new MailAddress(address.toString()));
         } catch (AddressException e) {
             LOGGER.debug("Can't parse unsent address " + address, e);
-            return Optional.absent();
+            return Optional.empty();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
index 4877545..ede8101 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
@@ -137,7 +137,7 @@ public class DeliveryRunnable implements Runnable {
                 handleTemporaryFailure(mail, executionResult);
                 break;
             case PERMANENT_FAILURE:
-                bouncer.bounce(mail, executionResult.getException().orNull());
+                bouncer.bounce(mail, executionResult.getException().orElse(null));
                 break;
         }
     }
@@ -154,7 +154,7 @@ public class DeliveryRunnable implements Runnable {
             reAttemptDelivery(mail, retries);
         } else {
             LOGGER.debug("Bouncing message {} after {} retries", mail.getName(), retries);
-            bouncer.bounce(mail, new Exception("Too many retries failure. Bouncing after " + retries + " retries.", executionResult.getException().orNull()));
+            bouncer.bounce(mail, new Exception("Too many retries failure. Bouncing after " + retries + " retries.", executionResult.getException().orElse(null)));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
index 84d87fc..667aa2d 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
@@ -21,12 +21,11 @@ package org.apache.james.transport.mailets.remoteDelivery;
 
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
-
+import java.util.Optional;
+import java.util.function.Function;
 import javax.mail.MessagingException;
 import javax.mail.internet.InternetAddress;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.sun.mail.smtp.SMTPAddressFailedException;
 import com.sun.mail.smtp.SMTPSendFailedException;
@@ -64,9 +63,9 @@ public class EnhancedMessagingException {
     }
 
     private boolean messageIndicatesServerException() {
-        return Optional.fromNullable(messagingException.getMessage())
-            .transform(startWith5())
-            .or(false);
+        return Optional.ofNullable(messagingException.getMessage())
+            .map(startWith5())
+            .orElse(false);
     }
 
     private Function<String, Boolean> startWith5() {
@@ -95,7 +94,7 @@ public class EnhancedMessagingException {
             } catch (IllegalStateException ise) {
             }
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     public Optional<String> computeCommand() {
@@ -107,7 +106,7 @@ public class EnhancedMessagingException {
             } catch (IllegalStateException ise) {
             }
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     public Optional<InternetAddress> computeAddress() {
@@ -116,7 +115,7 @@ public class EnhancedMessagingException {
                 return Optional.of((InternetAddress) invokeGetter(messagingException, "getAddress"));
             } catch (ClassCastException | IllegalArgumentException | IllegalStateException cce) { }
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     public String computeAction() {
@@ -137,7 +136,7 @@ public class EnhancedMessagingException {
             if (currentMessagingException.hasNestedMessagingException()) {
                 currentMessagingException = currentMessagingException.getNestedMessagingException();
             } else {
-                return Optional.absent();
+                return Optional.empty();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/ExecutionResult.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/ExecutionResult.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/ExecutionResult.java
index b408159..fda36b2 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/ExecutionResult.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/ExecutionResult.java
@@ -19,8 +19,9 @@
 
 package org.apache.james.transport.mailets.remoteDelivery;
 
+import java.util.Optional;
+
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 
 public class ExecutionResult {
 
@@ -31,7 +32,7 @@ public class ExecutionResult {
     }
 
     public static ExecutionResult success() {
-        return new ExecutionResult(ExecutionState.SUCCESS, Optional.<Exception>absent());
+        return new ExecutionResult(ExecutionState.SUCCESS, Optional.empty());
     }
 
     public static ExecutionResult temporaryFailure(Exception e) {
@@ -43,7 +44,7 @@ public class ExecutionResult {
     }
 
     public static ExecutionResult temporaryFailure() {
-        return new ExecutionResult(ExecutionState.TEMPORARY_FAILURE, Optional.<Exception>absent());
+        return new ExecutionResult(ExecutionState.TEMPORARY_FAILURE, Optional.empty());
     }
 
     public static ExecutionResult onFailure(boolean permanent, Exception exeption) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/MessageComposer.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/MessageComposer.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/MessageComposer.java
index 74852e9..86748c1 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/MessageComposer.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/MessageComposer.java
@@ -24,7 +24,6 @@ import java.io.StringWriter;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;
-
 import javax.mail.MessagingException;
 import javax.mail.SendFailedException;
 import javax.mail.internet.InternetAddress;
@@ -103,7 +102,7 @@ public class MessageComposer {
         StringWriter sout = new StringWriter();
         PrintWriter out = new PrintWriter(sout, true);
         out.print(permanentAsString(executionResult.isPermanent()) + " exception delivering mail (" + mail.getName()
-            + ")" + retrieveExceptionLog(executionResult.getException().orNull()) + ": " );
+            + ")" + retrieveExceptionLog(executionResult.getException().orElse(null)) + ": " );
         if (configuration.isDebug()) {
             if (executionResult.getException().isPresent())
                 executionResult.getException().get().printStackTrace(out);

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/RemoteDeliveryConfiguration.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/RemoteDeliveryConfiguration.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/RemoteDeliveryConfiguration.java
index 58173f2..d6c59d8 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/RemoteDeliveryConfiguration.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/RemoteDeliveryConfiguration.java
@@ -21,17 +21,17 @@ package org.apache.james.transport.mailets.remoteDelivery;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Optional;
 import java.util.Properties;
 
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.domainlist.api.DomainList;
+import org.apache.commons.lang3.tuple.Pair;
 import org.apache.mailet.MailetConfig;
 import org.apache.mailet.base.MailetUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
@@ -90,12 +90,12 @@ public class RemoteDeliveryConfiguration {
     private final Properties javaxAdditionalProperties;
 
     public RemoteDeliveryConfiguration(MailetConfig mailetConfig, DomainList domainList) {
-        isDebug = MailetUtil.getInitParameter(mailetConfig, DEBUG).or(false);
-        startTLS = MailetUtil.getInitParameter(mailetConfig, START_TLS).or(false);
-        isSSLEnable = MailetUtil.getInitParameter(mailetConfig, SSL_ENABLE).or(false);
-        usePriority = MailetUtil.getInitParameter(mailetConfig, USE_PRIORITY).or(false);
-        sendPartial = MailetUtil.getInitParameter(mailetConfig, SENDPARTIAL).or(false);
-        outGoingQueueName = Optional.fromNullable(mailetConfig.getInitParameter(OUTGOING)).or(DEFAULT_OUTGOING_QUEUE_NAME);
+        isDebug = MailetUtil.getInitParameter(mailetConfig, DEBUG).orElse(false);
+        startTLS = MailetUtil.getInitParameter(mailetConfig, START_TLS).orElse(false);
+        isSSLEnable = MailetUtil.getInitParameter(mailetConfig, SSL_ENABLE).orElse(false);
+        usePriority = MailetUtil.getInitParameter(mailetConfig, USE_PRIORITY).orElse(false);
+        sendPartial = MailetUtil.getInitParameter(mailetConfig, SENDPARTIAL).orElse(false);
+        outGoingQueueName = Optional.ofNullable(mailetConfig.getInitParameter(OUTGOING)).orElse(DEFAULT_OUTGOING_QUEUE_NAME);
         bounceProcessor = mailetConfig.getInitParameter(BOUNCE_PROCESSOR);
         bindAddress = mailetConfig.getInitParameter(BIND);
 
@@ -146,8 +146,8 @@ public class RemoteDeliveryConfiguration {
     private int computeConnectionTimeout(MailetConfig mailetConfig) {
         try {
             return Integer.valueOf(
-                Optional.fromNullable(mailetConfig.getInitParameter(CONNECTIONTIMEOUT))
-                    .or(String.valueOf(DEFAULT_CONNECTION_TIMEOUT)));
+                Optional.ofNullable(mailetConfig.getInitParameter(CONNECTIONTIMEOUT))
+                    .orElse(String.valueOf(DEFAULT_CONNECTION_TIMEOUT)));
         } catch (Exception e) {
             LOGGER.warn("Invalid timeout setting: {}", mailetConfig.getInitParameter(TIMEOUT));
             return DEFAULT_CONNECTION_TIMEOUT;
@@ -170,8 +170,8 @@ public class RemoteDeliveryConfiguration {
     private DelaysAndMaxRetry computeDelaysAndMaxRetry(MailetConfig mailetConfig) {
         try {
             int intendedMaxRetries = Integer.valueOf(
-                Optional.fromNullable(mailetConfig.getInitParameter(MAX_RETRIES))
-                    .or(String.valueOf(DEFAULT_MAX_RETRY)));
+                Optional.ofNullable(mailetConfig.getInitParameter(MAX_RETRIES))
+                    .orElse(String.valueOf(DEFAULT_MAX_RETRY)));
             return DelaysAndMaxRetry.from(intendedMaxRetries, mailetConfig.getInitParameter(DELAY_TIME));
         } catch (Exception e) {
             LOGGER.warn("Invalid maxRetries setting: {}", mailetConfig.getInitParameter(MAX_RETRIES));

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReplyToUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReplyToUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReplyToUtils.java
index 24a7eb6..58f42fa 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReplyToUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/ReplyToUtils.java
@@ -18,14 +18,13 @@
  ****************************************************************/
 package org.apache.james.transport.util;
 
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
-import com.google.common.base.Optional;
-
 public class ReplyToUtils {
 
     public static ReplyToUtils from(Optional<MailAddress> replyTo) {
@@ -33,7 +32,7 @@ public class ReplyToUtils {
     }
 
     public static ReplyToUtils from(MailAddress replyTo) {
-        return new ReplyToUtils(Optional.fromNullable(replyTo));
+        return new ReplyToUtils(Optional.ofNullable(replyTo));
     }
 
     private final Optional<MailAddress> replyTo;
@@ -45,10 +44,10 @@ public class ReplyToUtils {
     public Optional<MailAddress> getReplyTo(Mail originalMail) throws MessagingException {
         if (replyTo.isPresent()) {
             if (replyTo.get().equals(SpecialAddress.UNALTERED)) {
-                return Optional.absent();
+                return Optional.empty();
             }
-            return Optional.fromNullable(originalMail.getSender());
+            return Optional.ofNullable(originalMail.getSender());
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/3de14014/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
index 40dd1ab..0d33658 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/SenderUtils.java
@@ -18,14 +18,13 @@
  ****************************************************************/
 package org.apache.james.transport.util;
 
+import java.util.Optional;
 import javax.mail.MessagingException;
 
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 
-import com.google.common.base.Optional;
-
 public class SenderUtils {
 
     public static SenderUtils from(Optional<MailAddress> sender) {
@@ -41,7 +40,7 @@ public class SenderUtils {
     public Optional<MailAddress> getSender(Mail originalMail) throws MessagingException {
         if (sender.isPresent()) {
             if (isUnalteredOrSender(sender.get())) {
-                return Optional.absent();
+                return Optional.empty();
             }
         }
         return sender;


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


[02/22] james-project git commit: JAMES-2127 MailboxAPI: Replaced guava's Optional by java.util.Optional and it's related

Posted by bt...@apache.org.
JAMES-2127 MailboxAPI: Replaced guava's Optional by java.util.Optional and it's related


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/aa1920b9
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/aa1920b9
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/aa1920b9

Branch: refs/heads/master
Commit: aa1920b94d31a283239ef3a53e68fdc519c90eed
Parents: 4b334fc
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 15:19:50 2017 +0700
Committer: quynhn <qn...@linagora.com>
Committed: Wed Aug 30 11:08:47 2017 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/MailboxManager.java    |  3 +-
 .../org/apache/james/mailbox/model/Cid.java     | 13 ++--
 .../james/mailbox/model/MailboxAnnotation.java  |  5 +-
 .../james/mailbox/model/MailboxCounters.java    |  7 ++-
 .../james/mailbox/model/MailboxQuery.java       |  8 +--
 .../james/mailbox/model/MessageAttachment.java  | 17 +++---
 .../james/mailbox/model/UpdatedFlags.java       |  5 +-
 .../james/mailbox/MailboxManagerTest.java       |  4 +-
 .../org/apache/james/mailbox/model/CidTest.java | 20 +++---
 .../mailbox/model/MailboxAnnotationTest.java    |  7 +--
 .../mailbox/model/MessageAttachmentTest.java    |  5 +-
 .../mailbox/caching/CachingMessageMapper.java   |  4 +-
 .../mailbox/caching/MailboxMetadataCache.java   |  4 +-
 .../guava/GuavaMailboxMetadataCache.java        |  3 +-
 .../cassandra/mail/CassandraMessageDAO.java     | 10 ++-
 .../cassandra/mail/CassandraMessageMapper.java  |  3 +-
 .../cassandra/mail/CassandraUidProvider.java    |  4 +-
 .../mail/MessageAttachmentRepresentation.java   |  2 +-
 .../mail/CassandraUidProviderTest.java          |  6 +-
 ...lasticSearchListeningMessageSearchIndex.java |  4 +-
 .../mailbox/hbase/mail/HBaseMessageMapper.java  | 30 +++++----
 .../mailbox/hbase/mail/HBaseUidProvider.java    | 16 +++--
 .../mail/HBaseUidAndModSeqProviderTest.java     |  8 +--
 .../james/mailbox/jcr/mail/JCRUidProvider.java  |  5 +-
 .../jcr/JCRMailboxManagerStressTest.java        |  9 ++-
 .../mailbox/jcr/JCRMailboxManagerTest.java      |  9 ++-
 .../mailbox/jpa/mail/JPAAnnotationMapper.java   |  9 ++-
 .../mailbox/jpa/mail/JPAMessageMapper.java      |  3 +-
 .../james/mailbox/jpa/mail/JPAUidProvider.java  |  5 +-
 .../jpa/quota/JpaCurrentQuotaManager.java       | 10 +--
 .../mailbox/jpa/JPAMailboxManagerTest.java      |  6 +-
 .../jpa/JpaMailboxManagerStressTest.java        |  6 +-
 .../jpa/mail/TransactionalMessageMapper.java    |  6 +-
 .../lucene/search/LuceneMessageSearchIndex.java |  7 +--
 .../james/mailbox/maildir/MaildirFolder.java    | 17 +++---
 .../james/mailbox/maildir/MaildirStore.java     |  9 ++-
 .../inmemory/InMemoryMessageIdManager.java      | 15 +++--
 .../inmemory/mail/InMemoryUidProvider.java      |  5 +-
 .../InMemoryMessageIdManagerTestSystem.java     | 13 ++--
 .../apache/james/mailbox/store/BatchSizes.java  | 27 +++++----
 .../james/mailbox/store/FakeAuthorizator.java   |  4 +-
 .../mailbox/store/StoreMailboxManager.java      |  7 +--
 .../mailbox/store/StoreMessageIdManager.java    | 64 ++++++++++++--------
 .../mailbox/store/StoreMessageManager.java      |  9 ++-
 .../store/mail/AbstractMessageMapper.java       |  3 +-
 .../james/mailbox/store/mail/MessageMapper.java |  4 +-
 .../james/mailbox/store/mail/MessageUtils.java  |  3 +-
 .../james/mailbox/store/mail/UidProvider.java   |  4 +-
 .../mail/model/impl/SimpleMailboxMessage.java   |  9 ++-
 .../search/ListeningMessageSearchIndex.java     |  7 +--
 .../store/search/MessageSearchIndex.java        |  3 +-
 .../mailbox/store/search/MessageSearches.java   |  3 +-
 .../AbstractMailboxManagerAttachmentTest.java   |  5 +-
 .../StoreMailboxMessageResultIteratorTest.java  |  6 +-
 .../store/mail/model/MessageMapperTest.java     |  8 +--
 .../mail/model/impl/MessageParserTest.java      |  7 +--
 .../james/mailbox/indexer/ReIndexerImpl.java    |  3 +-
 .../registrations/GlobalRegistration.java       |  7 +--
 .../registrations/GlobalRegistrationTest.java   |  5 +-
 .../mailbox/store/mail/ZooUidProvider.java      |  7 ++-
 .../mailbox/store/mail/ZooUidProviderTest.java  |  7 +--
 61 files changed, 242 insertions(+), 282 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
index f93befa..4e8d2a7 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxManager.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox;
 
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.james.mailbox.exception.AnnotationException;
@@ -41,8 +42,6 @@ import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SimpleMailboxACL;
 
-import com.google.common.base.Optional;
-
 /**
  * <p>
  * Central MailboxManager which creates, lists, provides, renames and deletes

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/main/java/org/apache/james/mailbox/model/Cid.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Cid.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Cid.java
index 612ee32..c6694ce 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/Cid.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/Cid.java
@@ -20,10 +20,11 @@
 package org.apache.james.mailbox.model;
 
 
+import java.util.Optional;
+
 import org.apache.commons.lang.StringUtils;
 
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Strings;
 
@@ -89,8 +90,8 @@ public class Cid {
         private Optional<CidTransformation> transformation;
 
         private CidParser() {
-            validator = Optional.absent();
-            transformation = Optional.absent();
+            validator = Optional.empty();
+            transformation = Optional.empty();
         }
 
         public CidParser relaxed() {
@@ -109,8 +110,8 @@ public class Cid {
         }
 
         public Optional<Cid> parse(String value) {
-            CidValidator cidValidator = validator.or(DEFAULT_VALIDATOR);
-            CidTransformation cidTransformation = transformation.or(new Identity());
+            CidValidator cidValidator = validator.orElse(DEFAULT_VALIDATOR);
+            CidTransformation cidTransformation = transformation.orElse(new Identity());
             return cidTransformation.apply(cidValidator, value);
         }
     }
@@ -134,7 +135,7 @@ public class Cid {
 
     private static Optional<Cid> toCid(String cidAsString) {
         if (Strings.isNullOrEmpty(cidAsString) || StringUtils.isBlank(cidAsString)) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(new Cid(cidAsString));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
index 9150d04..94fc839 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxAnnotation.java
@@ -19,14 +19,15 @@
 
 package org.apache.james.mailbox.model;
 
+import java.util.Optional;
+
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 public class MailboxAnnotation {
     public static MailboxAnnotation nil(MailboxAnnotationKey key) {
-        return new MailboxAnnotation(key, Optional.<String> absent());
+        return new MailboxAnnotation(key, Optional.<String> empty());
     }
 
     public static MailboxAnnotation newInstance(MailboxAnnotationKey key, String value) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java
index d86e14a..324149d 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxCounters.java
@@ -19,15 +19,16 @@
 
 package org.apache.james.mailbox.model;
 
+import java.util.Optional;
+
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 public class MailboxCounters {
 
     public static class Builder {
-        private Optional<Long> count = Optional.absent();
-        private Optional<Long> unseen = Optional.absent();
+        private Optional<Long> count = Optional.empty();
+        private Optional<Long> unseen = Optional.empty();
 
         public Builder count(long count) {
             this.count = Optional.of(count);

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
index ee5c43d..e32c9be 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MailboxQuery.java
@@ -19,13 +19,13 @@
 
 package org.apache.james.mailbox.model;
 
+import java.util.Optional;
 import java.util.StringTokenizer;
 import java.util.regex.Pattern;
 
 import org.apache.james.mailbox.MailboxSession;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 
@@ -71,8 +71,8 @@ public final class MailboxQuery {
         @VisibleForTesting Optional<String> namespace;
         
         private Builder() {
-            this.pathName = Optional.absent();
-            this.namespace = Optional.absent();
+            this.pathName = Optional.empty();
+            this.namespace = Optional.empty();
         }
         
         public Builder base(MailboxPath base) {
@@ -121,7 +121,7 @@ public final class MailboxQuery {
             if (base != null) {
                 return base;
             } else {
-                return new MailboxPath(namespace.or(MailboxConstants.USER_NAMESPACE), username, pathName.or(EMPTY_PATH_NAME));
+                return new MailboxPath(namespace.orElse(MailboxConstants.USER_NAMESPACE), username, pathName.orElse(EMPTY_PATH_NAME));
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachment.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachment.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachment.java
index 770efc7..9dda554 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachment.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageAttachment.java
@@ -19,9 +19,10 @@
 
 package org.apache.james.mailbox.model;
 
+import java.util.Optional;
+
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 public class MessageAttachment {
@@ -35,11 +36,11 @@ public class MessageAttachment {
         private Attachment attachment;
         private Optional<String> name;
         private Optional<Cid> cid;
-        private Optional<Boolean> isInline = Optional.absent();
+        private Optional<Boolean> isInline = Optional.empty();
 
         private Builder() {
-            name = Optional.absent();
-            cid = Optional.absent();
+            name = Optional.empty();
+            cid = Optional.empty();
         }
 
         public Builder attachment(Attachment attachment) {
@@ -49,7 +50,7 @@ public class MessageAttachment {
         }
 
         public Builder name(String name) {
-            this.name = Optional.fromNullable(name);
+            this.name = Optional.ofNullable(name);
             return this;
         }
 
@@ -61,18 +62,18 @@ public class MessageAttachment {
 
         
         public Builder cid(Cid cid) {
-            this.cid = Optional.fromNullable(cid);
+            this.cid = Optional.ofNullable(cid);
             return this;
         }
 
         public Builder isInline(Boolean isInline) {
-            this.isInline = Optional.fromNullable(isInline);
+            this.isInline = Optional.ofNullable(isInline);
             return this;
         }
 
         public MessageAttachment build() {
             Preconditions.checkState(attachment != null, "'attachment' is mandatory");
-            return new MessageAttachment(attachment, name, cid, isInline.or(false));
+            return new MessageAttachment(attachment, name, cid, isInline.orElse(false));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java
index 9b7a7ef..11b94af 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/UpdatedFlags.java
@@ -21,14 +21,13 @@ package org.apache.james.mailbox.model;
 
 import java.util.Arrays;
 import java.util.Iterator;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MessageUid;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 /**
@@ -46,7 +45,7 @@ public class UpdatedFlags {
         private MessageUid uid;
         private Flags oldFlags;
         private Flags newFlags;
-        private Optional<Long> modSeq = Optional.absent();
+        private Optional<Long> modSeq = Optional.empty();
 
         private Builder() {
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 0ccd355..4e9f02d 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -19,12 +19,11 @@
 package org.apache.james.mailbox;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import java.io.ByteArrayInputStream;
 import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.util.List;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxManager.MailboxCapabilities;
@@ -46,7 +45,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/test/java/org/apache/james/mailbox/model/CidTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/CidTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/CidTest.java
index ef05548..81643ef 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/CidTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/CidTest.java
@@ -20,14 +20,12 @@
 package org.apache.james.mailbox.model;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
+import java.util.Optional;
 
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.google.common.base.Optional;
-
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 public class CidTest {
@@ -93,7 +91,7 @@ public class CidTest {
         assertThat(Cid.parser()
             .relaxed()
             .parse(null))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -101,7 +99,7 @@ public class CidTest {
         assertThat(Cid.parser()
             .relaxed()
             .parse(""))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -109,7 +107,7 @@ public class CidTest {
         assertThat(Cid.parser()
             .relaxed()
             .parse("     "))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -170,7 +168,7 @@ public class CidTest {
             .relaxed()
             .unwrap()
             .parse(null))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -179,7 +177,7 @@ public class CidTest {
             .relaxed()
             .unwrap()
             .parse(""))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -188,7 +186,7 @@ public class CidTest {
             .relaxed()
             .unwrap()
             .parse("     "))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -197,7 +195,7 @@ public class CidTest {
             .relaxed()
             .unwrap()
             .parse("<>"))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -206,7 +204,7 @@ public class CidTest {
             .relaxed()
             .unwrap()
             .parse("<   >"))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
index 10d7c62..439d434 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MailboxAnnotationTest.java
@@ -19,10 +19,9 @@
 
 package org.apache.james.mailbox.model;
 
-import org.junit.Test;
-
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
+
+import org.junit.Test;
 
 public class MailboxAnnotationTest {
     private static final MailboxAnnotationKey ANNOTATION_KEY = new MailboxAnnotationKey("/private/comment");
@@ -55,7 +54,7 @@ public class MailboxAnnotationTest {
     public void nilInstanceShouldReturnAbsentValue() throws Exception {
         MailboxAnnotation annotation = MailboxAnnotation.nil(ANNOTATION_KEY);
 
-        assertThat(annotation.getValue()).isAbsent();
+        assertThat(annotation.getValue()).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java
index 949a926..45933e2 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/model/MessageAttachmentTest.java
@@ -20,11 +20,10 @@
 package org.apache.james.mailbox.model;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import java.util.Optional;
 
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class MessageAttachmentTest {
 
     @Test(expected=IllegalStateException.class)
@@ -45,7 +44,7 @@ public class MessageAttachmentTest {
                 .bytes("content".getBytes())
                 .type("type")
                 .build();
-        MessageAttachment expectedMessageAttachment = new MessageAttachment(attachment, Optional.<String> absent(), Optional.<Cid> absent(), false);
+        MessageAttachment expectedMessageAttachment = new MessageAttachment(attachment, Optional.empty(), Optional.empty(), false);
 
         MessageAttachment messageAttachment = MessageAttachment.builder()
             .attachment(attachment)

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMessageMapper.java b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMessageMapper.java
index 0e1f4d5..3224a50 100644
--- a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMessageMapper.java
+++ b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/CachingMessageMapper.java
@@ -3,7 +3,7 @@ package org.apache.james.mailbox.caching;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MessageUid;
@@ -17,8 +17,6 @@ import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 
-import com.google.common.base.Optional;
-
 /**
  * A MessageMapper implementation that uses a MailboxMetadataCache to cache the information
  * from the underlying MessageMapper

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/MailboxMetadataCache.java
----------------------------------------------------------------------
diff --git a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/MailboxMetadataCache.java b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/MailboxMetadataCache.java
index e634ec7..f40e486 100644
--- a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/MailboxMetadataCache.java
+++ b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/MailboxMetadataCache.java
@@ -1,12 +1,12 @@
 package org.apache.james.mailbox.caching;
 
+import java.util.Optional;
+
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Optional;
-
 /**
  * Caches the simple yet possibly expensive to compute metadata info 
  * about a Mailbox like all/unseen messages count and similar

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/guava/GuavaMailboxMetadataCache.java
----------------------------------------------------------------------
diff --git a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/guava/GuavaMailboxMetadataCache.java b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/guava/GuavaMailboxMetadataCache.java
index 42212c4..80728ca 100644
--- a/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/guava/GuavaMailboxMetadataCache.java
+++ b/mailbox/caching/src/main/java/org/apache/james/mailbox/caching/guava/GuavaMailboxMetadataCache.java
@@ -1,5 +1,7 @@
 package org.apache.james.mailbox.caching.guava;
 
+import java.util.Optional;
+
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.caching.MailboxMetadataCache;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -7,7 +9,6 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Optional;
 import com.google.common.cache.Cache;
 /**
  * Guava-based implementation of MailboxMetadataCache.

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
index 5b62ef0..2fe0daf 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
@@ -38,7 +38,6 @@ import static org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.M
 import static org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.PROPERTIES;
 import static org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.TABLE_NAME;
 import static org.apache.james.mailbox.cassandra.table.CassandraMessageV2Table.TEXTUAL_LINE_COUNT;
-
 import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
@@ -47,12 +46,9 @@ import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
-
 import javax.inject.Inject;
 import javax.mail.util.SharedByteArrayInputStream;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.backends.cassandra.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
@@ -76,6 +72,8 @@ import org.apache.james.util.CompletableFutureUtil;
 import org.apache.james.util.FluentFutureStream;
 import org.apache.james.util.OptionalConverter;
 import org.apache.james.util.streams.JamesCollectors;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.tuple.Pair;
 
 import com.datastax.driver.core.BoundStatement;
 import com.datastax.driver.core.PreparedStatement;
@@ -197,8 +195,8 @@ public class CassandraMessageDAO {
         return typesProvider.getDefinedUserType(ATTACHMENTS)
             .newValue()
             .setString(Attachments.ID, messageAttachment.getAttachmentId().getId())
-            .setString(Attachments.NAME, messageAttachment.getName().orNull())
-            .setString(Attachments.CID, messageAttachment.getCid().transform(Cid::getValue).orNull())
+            .setString(Attachments.NAME, messageAttachment.getName().orElse(null))
+            .setString(Attachments.CID, messageAttachment.getCid().map(Cid::getValue).orElse(null))
             .setBool(Attachments.IS_INLINE, messageAttachment.isInline());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index cb3c583..445660b 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -27,7 +27,6 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Stream;
-
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
@@ -349,7 +348,7 @@ public class CassandraMessageMapper implements MessageMapper {
     }
 
     @Override
-    public com.google.common.base.Optional<MessageUid> getLastUid(Mailbox mailbox) throws MailboxException {
+    public Optional<MessageUid> getLastUid(Mailbox mailbox) throws MailboxException {
         return uidProvider.lastUid(mailboxSession, mailbox);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
index e6a854a..6f3fa25 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
@@ -28,10 +28,8 @@ import static com.datastax.driver.core.querybuilder.QueryBuilder.update;
 import static org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable.MAILBOX_ID;
 import static org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable.NEXT_UID;
 import static org.apache.james.mailbox.cassandra.table.CassandraMessageUidTable.TABLE_NAME;
-
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
-
 import javax.inject.Inject;
 
 import org.apache.james.backends.cassandra.CassandraConfiguration;
@@ -125,7 +123,7 @@ public class CassandraUidProvider implements UidProvider {
     }
 
     @Override
-    public com.google.common.base.Optional<MessageUid> lastUid(MailboxSession mailboxSession, Mailbox mailbox) throws MailboxException {
+    public Optional<MessageUid> lastUid(MailboxSession mailboxSession, Mailbox mailbox) throws MailboxException {
         return OptionalConverter.toGuava(findHighestUid((CassandraId) mailbox.getMailboxId()).join());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
index 172c550..1eb3f0b 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/MessageAttachmentRepresentation.java
@@ -42,7 +42,7 @@ public class MessageAttachmentRepresentation {
             .attachmentId(attachment.getAttachmentId())
             .cid(OptionalConverter.fromGuava(attachment.getCid()))
             .isInline(attachment.isInline())
-            .name(attachment.getName().orNull())
+            .name(attachment.getName().orElse(null))
             .build();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index 9faddfb..c6b27d9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -19,8 +19,7 @@
 package org.apache.james.mailbox.cassandra.mail;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
+import java.util.Optional;
 import java.util.stream.LongStream;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
@@ -37,7 +36,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.github.fge.lambdas.Throwing;
-import com.google.common.base.Optional;
 
 public class CassandraUidProviderTest {
 
@@ -72,7 +70,7 @@ public class CassandraUidProviderTest {
     public void lastUidShouldRetrieveValueStoredByNextUid() throws Exception {
         int nbEntries = 100;
         Optional<MessageUid> result = uidProvider.lastUid(null, mailbox);
-        assertThat(result).isAbsent();
+        assertThat(result).isEmpty();
         LongStream.range(0, nbEntries)
             .forEach(Throwing.longConsumer(value -> {
                         MessageUid uid = uidProvider.nextUid(null, mailbox);

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
index aca1dc7..ec9f1b4 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/events/ElasticSearchListeningMessageSearchIndex.java
@@ -19,13 +19,11 @@
 package org.apache.james.mailbox.elasticsearch.events;
 
 import static org.elasticsearch.index.query.QueryBuilders.termQuery;
-
 import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Collectors;
-
 import javax.inject.Inject;
 
 import org.apache.james.backends.es.ElasticSearchIndexer;
@@ -100,7 +98,7 @@ public class ElasticSearchListeningMessageSearchIndex extends ListeningMessageSe
         return searcher.search(ImmutableList.of(session.getUser()), searchQuery, Optional.empty())
             .peek(this::logIfNoMessageId)
             .map(SearchResult::getMessageId)
-            .map(com.google.common.base.Optional::get)
+            .map(Optional::get)
             .distinct()
             .limit(limit)
             .collect(Guavate.toImmutableList());

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
index 326275d..a6a82d4 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
@@ -38,7 +38,6 @@ import static org.apache.james.mailbox.hbase.HBaseUtils.messageMetaFromResult;
 import static org.apache.james.mailbox.hbase.HBaseUtils.messageRowKey;
 import static org.apache.james.mailbox.hbase.HBaseUtils.metadataToPut;
 import static org.apache.james.mailbox.hbase.HBaseUtils.minMessageRowKey;
-
 import java.io.BufferedInputStream;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -47,22 +46,9 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.client.Delete;
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
-import org.apache.hadoop.hbase.filter.PrefixFilter;
-import org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter;
-import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
-import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -84,8 +70,20 @@ 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.utils.ApplicableFlagCalculator;
 import org.apache.james.mailbox.store.transaction.NonTransactionalMapper;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.client.Delete;
+import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.client.ResultScanner;
+import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
+import org.apache.hadoop.hbase.filter.PrefixFilter;
+import org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter;
+import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
+import org.apache.hadoop.hbase.util.Bytes;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseUidProvider.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseUidProvider.java
index d26a16c..d0f2ca4 100644
--- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseUidProvider.java
+++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseUidProvider.java
@@ -21,14 +21,9 @@ package org.apache.james.mailbox.hbase.mail;
 import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES_TABLE;
 import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOX_CF;
 import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOX_LASTUID;
-
 import java.io.IOException;
+import java.util.Optional;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -36,8 +31,11 @@ import org.apache.james.mailbox.hbase.HBaseId;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-
-import com.google.common.base.Optional;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.HTable;
+import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.util.Bytes;
 /**
  * Message UidProvider for HBase.
  * 
@@ -73,7 +71,7 @@ public class HBaseUidProvider implements UidProvider {
             }
             long rawUid = Bytes.toLong(result.getValue(MAILBOX_CF, MAILBOX_LASTUID));
             if (rawUid == 0) {
-                return Optional.absent();
+                return Optional.empty();
             }
             return Optional.of(MessageUid.of(rawUid));
         } catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java
index 6b6f995..3ff0103 100644
--- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java
+++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java
@@ -30,24 +30,22 @@ import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS;
 import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS_TABLE;
 import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTION_CF;
 import static org.junit.Assert.assertEquals;
-
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
-import org.apache.hadoop.conf.Configuration;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
 import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.hadoop.conf.Configuration;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 /**
  * Unit tests for UidProvider and ModSeqProvider.
  *
@@ -131,7 +129,7 @@ public class HBaseUidAndModSeqProviderTest {
         pathsList.add(path);
         MailboxSession session = null;
         Optional<MessageUid> result = uidProvider.lastUid(session, newBox);
-        assertEquals(Optional.absent(), result);
+        assertEquals(Optional.empty(), result);
         for (int i = 1; i < 10; i++) {
             MessageUid uid = uidProvider.nextUid(session, newBox);
             assertEquals(uid, uidProvider.lastUid(session, newBox).get());

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java
index 824f953..f26e187 100644
--- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java
+++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRUidProvider.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.jcr.mail;
 
+import java.util.Optional;
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -31,8 +32,6 @@ import org.apache.james.mailbox.jcr.mail.model.JCRMailbox;
 import org.apache.james.mailbox.store.mail.AbstractLockingUidProvider;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Optional;
-
 public class JCRUidProvider extends AbstractLockingUidProvider {
 
     private final MailboxSessionJCRRepository repository;
@@ -49,7 +48,7 @@ public class JCRUidProvider extends AbstractLockingUidProvider {
             Node node = s.getNodeByIdentifier(mailbox.getMailboxId().serialize());
             long rawUid = node.getProperty(JCRMailbox.LASTUID_PROPERTY).getLong();
             if (rawUid == 0) {
-                return Optional.absent();
+                return Optional.empty();
             }
             return Optional.of(MessageUid.of(rawUid));
         } catch (RepositoryException e) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
index cf7ade7..5a9c27c 100644
--- a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
@@ -20,22 +20,21 @@
 package org.apache.james.mailbox.jcr;
 
 import static org.apache.james.mailbox.jcr.JCRMailboxManagerProvider.JACKRABBIT_HOME;
-
 import java.io.File;
 import java.io.IOException;
+import java.util.Optional;
 
-import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.junit.After;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Throwables;
 
 public class JCRMailboxManagerStressTest extends MailboxManagerStressTest {
 
-    private Optional<RepositoryImpl> repository = Optional.absent();
+    private Optional<RepositoryImpl> repository = Optional.empty();
 
     @Override
     protected MailboxManager provideManager() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
index 64852a7..4970196 100644
--- a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
@@ -19,22 +19,21 @@
 package org.apache.james.mailbox.jcr;
 
 import static org.apache.james.mailbox.jcr.JCRMailboxManagerProvider.JACKRABBIT_HOME;
-
 import java.io.File;
 import java.io.IOException;
+import java.util.Optional;
 
-import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerTest;
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.core.RepositoryImpl;
 import org.junit.After;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Throwables;
 
 public class JCRMailboxManagerTest extends MailboxManagerTest {
 
-    private Optional<RepositoryImpl> repository = Optional.absent();
+    private Optional<RepositoryImpl> repository = Optional.empty();
 
     @Override
     protected MailboxManager provideMailboxManager() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/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 84a78c6..b0ce1ed 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
@@ -20,8 +20,8 @@
 package org.apache.james.mailbox.jpa.mail;
 
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
-
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.NoResultException;
 import javax.persistence.PersistenceException;
@@ -38,7 +38,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.base.Throwables;
@@ -147,18 +146,18 @@ public class JPAAnnotationMapper extends JPATransactionalMapper implements Annot
             getEntityManager().persist(
                 new JPAMailboxAnnotation(jpaId.getRawId(),
                     mailboxAnnotation.getKey().asString(),
-                    mailboxAnnotation.getValue().orNull()));
+                    mailboxAnnotation.getValue().orElse(null)));
         } else {
             getEntityManager().find(JPAMailboxAnnotation.class,
                 new JPAMailboxAnnotationId(jpaId.getRawId(), mailboxAnnotation.getKey().asString()))
-                .setValue(mailboxAnnotation.getValue().orNull());
+                .setValue(mailboxAnnotation.getValue().orElse(null));
         }
     }
 
     @Override
     public boolean exist(MailboxId mailboxId, MailboxAnnotation mailboxAnnotation) {
         JPAId jpaId = (JPAId) mailboxId;
-        Optional<JPAMailboxAnnotation> row = Optional.fromNullable(getEntityManager().find(JPAMailboxAnnotation.class,
+        Optional<JPAMailboxAnnotation> row = Optional.ofNullable(getEntityManager().find(JPAMailboxAnnotation.class,
             new JPAMailboxAnnotationId(jpaId.getRawId(), mailboxAnnotation.getKey().asString())));
         return row.isPresent();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
index 8e59765..32d33e4 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
@@ -22,7 +22,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.Flags;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.PersistenceException;
@@ -55,7 +55,6 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.utils.ApplicableFlagCalculator;
 import org.apache.openjpa.persistence.ArgumentException;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterators;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java
index 08d391d..bbf9f9b 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAUidProvider.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.jpa.mail;
 
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
@@ -32,8 +33,6 @@ import org.apache.james.mailbox.jpa.mail.model.JPAMailbox;
 import org.apache.james.mailbox.store.mail.AbstractLockingUidProvider;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Optional;
-
 public class JPAUidProvider extends AbstractLockingUidProvider {
 
     private final EntityManagerFactory factory;
@@ -55,7 +54,7 @@ public class JPAUidProvider extends AbstractLockingUidProvider {
             long uid = (Long) manager.createNamedQuery("findLastUid").setParameter("idParam", mailboxId.getRawId()).getSingleResult();
             manager.getTransaction().commit();
             if (uid == 0) {
-                return Optional.absent();
+                return Optional.empty();
             }
             return Optional.of(MessageUid.of(uid));
         } catch (PersistenceException e) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java
index 27db807..af334b4 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.jpa.quota;
 
+import java.util.Optional;
 import javax.inject.Inject;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
@@ -29,7 +30,6 @@ import org.apache.james.mailbox.jpa.quota.model.JpaCurrentQuota;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 public class JpaCurrentQuotaManager implements StoreCurrentQuotaManager {
@@ -74,8 +74,8 @@ public class JpaCurrentQuotaManager implements StoreCurrentQuotaManager {
         Preconditions.checkArgument(count > 0, "Counts should be positive");
         Preconditions.checkArgument(size > 0, "Size should be positive");
 
-        JpaCurrentQuota jpaCurrentQuota = Optional.fromNullable(retrieveUserQuota(quotaRoot))
-            .or(new JpaCurrentQuota(quotaRoot.getValue(), NO_MESSAGES, NO_STORED_BYTES));
+        JpaCurrentQuota jpaCurrentQuota = Optional.ofNullable(retrieveUserQuota(quotaRoot))
+            .orElse(new JpaCurrentQuota(quotaRoot.getValue(), NO_MESSAGES, NO_STORED_BYTES));
 
         entityManager.merge(new JpaCurrentQuota(quotaRoot.getValue(),
             jpaCurrentQuota.getMessageCount() + count,
@@ -87,8 +87,8 @@ public class JpaCurrentQuotaManager implements StoreCurrentQuotaManager {
         Preconditions.checkArgument(count > 0, "Counts should be positive");
         Preconditions.checkArgument(size > 0, "Counts should be positive");
 
-        JpaCurrentQuota jpaCurrentQuota = Optional.fromNullable(retrieveUserQuota(quotaRoot))
-            .or(new JpaCurrentQuota(quotaRoot.getValue(), NO_MESSAGES, NO_STORED_BYTES));
+        JpaCurrentQuota jpaCurrentQuota = Optional.ofNullable(retrieveUserQuota(quotaRoot))
+            .orElse(new JpaCurrentQuota(quotaRoot.getValue(), NO_MESSAGES, NO_STORED_BYTES));
 
         entityManager.merge(new JpaCurrentQuota(quotaRoot.getValue(),
             jpaCurrentQuota.getMessageCount() - count,

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
index 6a53323..c6b5fda 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.mailbox.jpa;
 
+import java.util.Optional;
+
 import org.apache.james.backends.jpa.JpaTestCluster;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerTest;
@@ -25,12 +27,10 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.junit.After;
 
-import com.google.common.base.Optional;
-
 public class JPAMailboxManagerTest extends MailboxManagerTest {
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
-    private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.absent();
+    private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.empty();
 
     @Override
     protected MailboxManager provideMailboxManager() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
index fc05755..a3ed58c 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailbox.jpa;
 
+import java.util.Optional;
+
 import org.apache.james.backends.jpa.JpaTestCluster;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
@@ -26,12 +28,10 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.junit.After;
 
-import com.google.common.base.Optional;
-
 public class JpaMailboxManagerStressTest extends MailboxManagerStressTest {
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
-    private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.absent();
+    private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.empty();
 
     @Override
     protected MailboxManager provideManager() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
index 8b57d05..0bfd7f5 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMessageMapper.java
@@ -22,10 +22,9 @@ package org.apache.james.mailbox.jpa.mail;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxCounters;
@@ -36,8 +35,7 @@ import org.apache.james.mailbox.store.FlagsUpdateCalculator;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-
-import com.google.common.base.Optional;
+import org.apache.commons.lang.NotImplementedException;
 
 public class TransactionalMessageMapper implements MessageMapper {
     private final JPAMessageMapper messageMapper;

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/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 3227bef..99fab8d 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
@@ -33,9 +33,9 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Optional;
 import java.util.Set;
 import java.util.TimeZone;
-
 import javax.inject.Inject;
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
@@ -122,7 +122,6 @@ import org.apache.lucene.util.Version;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
@@ -506,7 +505,7 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
                 Document doc = searcher.doc(sDoc.doc);
                 MessageUid uid = MessageUid.of(Long.valueOf(doc.get(UID_FIELD)));
                 MailboxId mailboxId = mailboxIdFactory.fromString(doc.get(MAILBOX_ID_FIELD));
-                Optional<MessageId> messageId = toMessageId(Optional.fromNullable(doc.get(MESSAGE_ID_FIELD)));
+                Optional<MessageId> messageId = toMessageId(Optional.ofNullable(doc.get(MESSAGE_ID_FIELD)));
                 results.add(new SearchResult(messageId, mailboxId, uid));
             }
         } catch (IOException e) {
@@ -527,7 +526,7 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
         if (messageIdField.isPresent()) {
             return Optional.of(messageIdFactory.fromString(messageIdField.get()));
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     private Query buildQueryFromMailboxes(ImmutableSet<MailboxId> mailboxIds) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
index dd1ee8e..03e6b8f 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
@@ -35,13 +35,11 @@ import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.NoSuchElementException;
+import java.util.Optional;
 import java.util.Properties;
 import java.util.SortedMap;
 import java.util.TreeMap;
 
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.ArrayUtils;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution;
 import org.apache.james.mailbox.MailboxSession;
@@ -52,11 +50,12 @@ import org.apache.james.mailbox.model.MailboxACL.MailboxACLEntryKey;
 import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.SimpleMailboxACL;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 public class MaildirFolder {
     private static final Logger LOGGER = LoggerFactory.getLogger(MaildirFolder.class);
 
@@ -98,7 +97,7 @@ public class MaildirFolder {
         this.aclFile = new File(rootFolder, ACL_FILE);
         this.locker = locker;
         this.path = path;
-        this.lastUid = Optional.absent();
+        this.lastUid = Optional.empty();
     }
 
     private MaildirMessageName newMaildirMessageName(MaildirFolder folder, String fullName) {
@@ -189,7 +188,7 @@ public class MaildirFolder {
      * Returns the nextUid value and increases it.
      */
     private MessageUid getNextUid() {
-        MessageUid nextUid = lastUid.transform(MessageUid::next).or(MessageUid.MIN_VALUE);
+        MessageUid nextUid = lastUid.map(MessageUid::next).orElse(MessageUid.MIN_VALUE);
         lastUid = Optional.of(nextUid);
         return nextUid;
     }
@@ -546,7 +545,7 @@ public class MaildirFolder {
         try {
             if (!uidList.createNewFile())
                 throw new IOException("Could not create file " + uidList);
-            lastUid = Optional.absent();
+            lastUid = Optional.empty();
             String[] curFiles = curFolder.list();
             String[] newFiles = newFolder.list();
             messageCount = curFiles.length + newFiles.length;
@@ -708,7 +707,7 @@ public class MaildirFolder {
      * @return the line which ought to be the header
      */
     private String createUidListHeader() {
-        Long last = lastUid.transform(MessageUid::asLong).or(0L);
+        Long last = lastUid.map(MessageUid::asLong).orElse(0L);
         return "1 " + String.valueOf(last) + " " + String.valueOf(messageCount);
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
index bdc0c15..2ebb5e6 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirStore.java
@@ -21,8 +21,8 @@ package org.apache.james.mailbox.maildir;
 import java.io.File;
 import java.io.IOException;
 import java.util.Locale;
+import java.util.Optional;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.MailboxPathLocker;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
@@ -36,8 +36,7 @@ import org.apache.james.mailbox.store.mail.ModSeqProvider;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-
-import com.google.common.base.Optional;
+import org.apache.commons.lang.NotImplementedException;
 
 public class MaildirStore implements UidProvider, ModSeqProvider {
 
@@ -246,8 +245,8 @@ public class MaildirStore implements UidProvider, ModSeqProvider {
     public MessageUid nextUid(MailboxSession session, Mailbox mailbox) throws MailboxException {
         try {
             return createMaildirFolder(mailbox).getLastUid(session)
-                .transform(MessageUid::next)
-                .or(MessageUid.MIN_VALUE);
+                .map(MessageUid::next)
+                .orElse(MessageUid.MIN_VALUE);
         } catch (MailboxException e) {
             throw new MailboxException("Unable to generate next uid", e);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/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 da4c730..6246af9 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
@@ -21,7 +21,8 @@ package org.apache.james.mailbox.inmemory;
 
 import java.util.HashSet;
 import java.util.List;
-
+import java.util.Optional;
+import java.util.function.Predicate;
 import javax.inject.Inject;
 import javax.mail.Flags;
 
@@ -42,8 +43,6 @@ 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.base.Optional;
-import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -146,9 +145,8 @@ public class InMemoryMessageIdManager implements MessageIdManager {
     }
 
     private void filterOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxNotFoundException {
-        boolean isForbidden = FluentIterable.from(mailboxIds)
-            .firstMatch(findMailboxBelongsToAnotherSession(mailboxSession))
-            .isPresent();
+        boolean isForbidden = mailboxIds.stream()
+            .anyMatch(findMailboxBelongsToAnotherSession(mailboxSession));
 
         if (isForbidden) {
             throw new MailboxNotFoundException("Mailbox does not belong to session");
@@ -172,9 +170,10 @@ public class InMemoryMessageIdManager implements MessageIdManager {
     }
 
     private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException {
-        return FluentIterable.from(retrieveAllMessages(mailboxId, fetchGroup, mailboxSession))
+        return retrieveAllMessages(mailboxId, fetchGroup, mailboxSession)
+            .stream()
             .filter(filterByMessageId(messageId))
-            .first();
+            .findFirst();
     }
 
     private Predicate<MessageResult> filterByMessageId(final MessageId messageId) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryUidProvider.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryUidProvider.java
index d3f4637..e396880 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryUidProvider.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryUidProvider.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.inmemory.mail;
 
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicLong;
@@ -31,8 +32,6 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.UidProvider;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Optional;
-
 public class InMemoryUidProvider implements UidProvider{
 
     private final ConcurrentMap<InMemoryId, AtomicLong> map = new ConcurrentHashMap<>();
@@ -62,7 +61,7 @@ public class InMemoryUidProvider implements UidProvider{
     public Optional<MessageUid> lastUid(MailboxSession session, Mailbox mailbox) throws MailboxException {
         AtomicLong last = getLast((InMemoryId) mailbox.getMailboxId());
         if (last == null) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(MessageUid.of(last.get()));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
index 5e823ef..7c0b77e 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
@@ -20,7 +20,7 @@ package org.apache.james.mailbox.inmemory;
 
 import java.io.ByteArrayInputStream;
 import java.util.Date;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MailboxManager;
@@ -38,9 +38,7 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 
 import com.google.common.base.Charsets;
-import com.google.common.base.Optional;
 import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
 
 public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
 
@@ -55,7 +53,7 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
     public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager) {
         super(new InMemoryMessageIdManager(mailboxManager));
         this.mailboxManager = mailboxManager;
-        this.lastMessageIdUsed = Optional.absent();
+        this.lastMessageIdUsed = Optional.empty();
     }
 
     @Override
@@ -80,7 +78,7 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
 
     @Override
     public MessageId createNotUsedMessageId() {
-        return InMemoryMessageId.of(Long.valueOf(lastMessageIdUsed.or(FIRST_MESSAGE_ID).serialize()) + ONE_HUNDRED);
+        return InMemoryMessageId.of(Long.valueOf(lastMessageIdUsed.orElse(FIRST_MESSAGE_ID).serialize()) + ONE_HUNDRED);
     }
 
     @Override
@@ -97,9 +95,10 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
 
     private Optional<MailboxMetaData> retrieveMailbox(final MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
         MailboxQuery userMailboxesQuery = MailboxQuery.builder(mailboxSession).expression("*").build();
-        return FluentIterable.from(mailboxManager.search(userMailboxesQuery, mailboxSession))
+        return mailboxManager.search(userMailboxesQuery, mailboxSession)
+            .stream()
             .filter(mailboxMetaData -> mailboxMetaData.getId().equals(mailboxId))
-            .first();
+            .findFirst();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/BatchSizes.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/BatchSizes.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/BatchSizes.java
index 8b079b7..ec07b52 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/BatchSizes.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/BatchSizes.java
@@ -19,9 +19,10 @@
 package org.apache.james.mailbox.store;
 
 
+import java.util.Optional;
+
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 public class BatchSizes {
@@ -57,12 +58,12 @@ public class BatchSizes {
         private Optional<Integer> moveBatchSize;
 
         private Builder() {
-            fetchMetadata = Optional.absent();
-            fetchHeaders = Optional.absent();
-            fetchBody = Optional.absent();
-            fetchFull = Optional.absent();
-            copyBatchSize = Optional.absent();
-            moveBatchSize = Optional.absent();
+            fetchMetadata = Optional.empty();
+            fetchHeaders = Optional.empty();
+            fetchBody = Optional.empty();
+            fetchFull = Optional.empty();
+            copyBatchSize = Optional.empty();
+            moveBatchSize = Optional.empty();
         }
 
         public Builder fetchMetadata(int batchSize) {
@@ -103,12 +104,12 @@ public class BatchSizes {
 
         public BatchSizes build() {
             return new BatchSizes(
-                    fetchMetadata.or(DEFAULT_BATCH_SIZE),
-                    fetchHeaders.or(DEFAULT_BATCH_SIZE),
-                    fetchBody.or(DEFAULT_BATCH_SIZE),
-                    fetchFull.or(DEFAULT_BATCH_SIZE),
-                    copyBatchSize.or(DEFAULT_BATCH_SIZE),
-                    moveBatchSize.or(DEFAULT_BATCH_SIZE));
+                    fetchMetadata.orElse(DEFAULT_BATCH_SIZE),
+                    fetchHeaders.orElse(DEFAULT_BATCH_SIZE),
+                    fetchBody.orElse(DEFAULT_BATCH_SIZE),
+                    fetchFull.orElse(DEFAULT_BATCH_SIZE),
+                    copyBatchSize.orElse(DEFAULT_BATCH_SIZE),
+                    moveBatchSize.orElse(DEFAULT_BATCH_SIZE));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java
index 948ed55..556affe 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/FakeAuthorizator.java
@@ -18,12 +18,12 @@
  ****************************************************************/
 package org.apache.james.mailbox.store;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 
 public class FakeAuthorizator implements Authorizator {
 
     public static FakeAuthorizator defaultReject() {
-        return new FakeAuthorizator(Optional.<String>absent(), Optional.<String>absent());
+        return new FakeAuthorizator(Optional.empty(), Optional.empty());
     }
 
     public static FakeAuthorizator forUserAndAdmin(String admin, String user) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/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 c51bd2b..dff2799 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
@@ -23,9 +23,9 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Random;
 import java.util.Set;
-
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 
@@ -85,7 +85,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Iterables;
 
@@ -568,10 +567,10 @@ public class StoreMailboxManager implements MailboxManager {
                 }, true);
 
             if (!mailboxIds.isEmpty()) {
-                return Optional.fromNullable(Iterables.getLast(mailboxIds));
+                return Optional.ofNullable(Iterables.getLast(mailboxIds));
             }
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/aa1920b9/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 4643fc1..16dab9d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -25,7 +25,9 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-
+import java.util.Optional;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import javax.inject.Inject;
 import javax.mail.Flags;
 import javax.mail.internet.SharedInputStream;
@@ -57,10 +59,7 @@ import org.apache.james.mailbox.store.quota.QuotaChecker;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
+import com.github.steveash.guavate.Guavate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -69,6 +68,14 @@ import com.google.common.collect.Sets.SetView;
 
 public class StoreMessageIdManager implements MessageIdManager {
     private static final Logger LOGGER = LoggerFactory.getLogger(StoreMessageIdManager.class);
+    public static <T, S> Predicate<T> compose(Predicate<S> predicate, Function<T, S> function) {
+        return input -> predicate.test(function.apply(input));
+    }
+
+    static<T> Predicate<T> not(Predicate<T> p) {
+        return t -> !p.test(t);
+    }
+
     private final MailboxSessionMapperFactory mailboxSessionMapperFactory;
     private final MailboxEventDispatcher dispatcher;
     private final MessageId.Factory messageIdFactory;
@@ -108,13 +115,13 @@ public class StoreMessageIdManager implements MessageIdManager {
             ImmutableSet<MailboxId> mailboxIds = FluentIterable.from(messageList)
                 .transform(MailboxMessage::getMailboxId)
                 .toSet();
-            final ImmutableSet<MailboxId> allowedMailboxIds = FluentIterable.from(mailboxIds)
+            final ImmutableSet<MailboxId> allowedMailboxIds = mailboxIds.stream()
                 .filter(mailboxBelongsToUser(mailboxSession, mailboxMapper))
-                .toSet();
-            return FluentIterable.from(messageList)
+                .collect(Guavate.toImmutableSet());
+            return messageList.stream()
                 .filter(inMailboxes(allowedMailboxIds))
-                .transform(messageResultConverter(fetchGroup))
-                .toList();
+                .map(messageResultConverter(fetchGroup))
+                .collect(Guavate.toImmutableList());
         } catch (WrappedException wrappedException) {
             throw wrappedException.unwrap();
         }
@@ -127,12 +134,13 @@ public class StoreMessageIdManager implements MessageIdManager {
 
         allowOnMailboxSession(mailboxIds, mailboxSession, mailboxMapper);
 
-        Iterable<MetadataWithMailboxId> metadatasWithMailbox = FluentIterable
-            .from(messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata))
+        ImmutableList<MetadataWithMailboxId> metadatasWithMailbox = messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata)
+            .stream()
             .filter(inMailboxes(mailboxIds))
-            .transform(mailboxMessage -> new MetadataWithMailboxId(
+            .map(mailboxMessage -> new MetadataWithMailboxId(
                 new SimpleMessageMetaData(mailboxMessage),
-                mailboxMessage.getMailboxId()));
+                mailboxMessage.getMailboxId()))
+            .collect(Guavate.toImmutableList());
 
         messageIdMapper.delete(messageId, mailboxIds);
 
@@ -148,9 +156,16 @@ public class StoreMessageIdManager implements MessageIdManager {
 
         allowOnMailboxSession(mailboxIds, mailboxSession, mailboxMapper);
 
-        List<MailboxMessage> mailboxMessages = FluentIterable.from(messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Full))
+        List<MailboxMessage> mailboxMessages = messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Full)
+            .stream()
+            .filter(new Predicate<MailboxMessage>() {
+                @Override
+                public boolean test(MailboxMessage message) {
+                    return false;
+                }
+            })
             .filter(messageBelongsToUser(mailboxSession, mailboxMapper))
-            .toList();
+            .collect(Guavate.toImmutableList());
 
         if (!mailboxMessages.isEmpty()) {
             ImmutableSet<MailboxId> currentMailboxes = FluentIterable.from(mailboxMessages)
@@ -209,12 +224,14 @@ public class StoreMessageIdManager implements MessageIdManager {
         Map<QuotaRoot, Integer> messageCountByQuotaRoot = new HashMap<>();
         for (MailboxId mailboxId : mailboxIdsToBeAdded) {
             QuotaRoot quotaRoot = retrieveQuotaRoot(mailboxMapper, mailboxId);
-            int currentCount = Optional.fromNullable(messageCountByQuotaRoot.get(quotaRoot)).or(0);
+            int currentCount = Optional.ofNullable(messageCountByQuotaRoot.get(quotaRoot))
+                .orElse(0);
             messageCountByQuotaRoot.put(quotaRoot, currentCount + 1);
         }
         for (MailboxId mailboxId : mailboxIdsToBeRemove) {
             QuotaRoot quotaRoot = retrieveQuotaRoot(mailboxMapper, mailboxId);
-            int currentCount = Optional.fromNullable(messageCountByQuotaRoot.get(quotaRoot)).or(0);
+            int currentCount = Optional.ofNullable(messageCountByQuotaRoot.get(quotaRoot))
+                .orElse(0);
             messageCountByQuotaRoot.put(quotaRoot, currentCount - 1);
         }
         return messageCountByQuotaRoot;
@@ -269,15 +286,14 @@ public class StoreMessageIdManager implements MessageIdManager {
     }
 
     private Predicate<MailboxMessage> messageBelongsToUser(MailboxSession mailboxSession, MailboxMapper mailboxMapper) {
-        return Predicates.compose(
-            mailboxBelongsToUser(mailboxSession, mailboxMapper),
+        return compose(mailboxBelongsToUser(mailboxSession, mailboxMapper),
             MailboxMessage::getMailboxId);
     }
 
     private void allowOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession, MailboxMapper mailboxMapper) throws MailboxNotFoundException {
-        Optional<MailboxId> mailboxForbidden = FluentIterable.from(mailboxIds)
-            .firstMatch(isMailboxOfOtherUser(mailboxSession, mailboxMapper))
-            .or(Optional.<MailboxId>absent());
+        Optional<MailboxId> mailboxForbidden = mailboxIds.stream()
+            .filter(isMailboxOfOtherUser(mailboxSession, mailboxMapper))
+            .findFirst();
 
         if (mailboxForbidden.isPresent()) {
             throw new MailboxNotFoundException("Mailbox with Id " + mailboxForbidden.get() + " does not belong to session");
@@ -285,7 +301,7 @@ public class StoreMessageIdManager implements MessageIdManager {
     }
 
     private Predicate<MailboxId> isMailboxOfOtherUser(MailboxSession mailboxSession, MailboxMapper mailboxMapper) {
-        return Predicates.not(mailboxBelongsToUser(mailboxSession, mailboxMapper));
+        return not(mailboxBelongsToUser(mailboxSession, mailboxMapper));
     }
 
     private boolean belongsToCurrentUser(Mailbox mailbox, MailboxSession session) {


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


[19/22] james-project git commit: JAMES-2131 Any Guice project can rely on ES exporter

Posted by bt...@apache.org.
JAMES-2131 Any Guice project can rely on ES exporter


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6553f4b5
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6553f4b5
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6553f4b5

Branch: refs/heads/master
Commit: 6553f4b50fc084bcd930fcea0e0be039a047e29c
Parents: d6cfa25
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 30 11:56:10 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:45 2017 +0700

----------------------------------------------------------------------
 grafana-reporting/README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6553f4b5/grafana-reporting/README.md
----------------------------------------------------------------------
diff --git a/grafana-reporting/README.md b/grafana-reporting/README.md
index d9c4786..0d4d389 100644
--- a/grafana-reporting/README.md
+++ b/grafana-reporting/README.md
@@ -20,7 +20,7 @@ Import the different dashboards in this directory.
 
 You then need to enable reporting through ElasticSearch. Modify your James ElasticSearch configuration file accordingly.
 To help you doing this, you can take a look to [GitHub](https://github.com/apache/james-project/blob/master/dockerfiles/run/guice/cassandra/destination/conf/elasticsearch.properties).
-Note that you need to run a guice/cassandra version of James.
+Note that you need to run a guice version of James.
 
 ## Presentation of the different boards
 


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


[20/22] james-project git commit: JAMES-2131 Link to available boards

Posted by bt...@apache.org.
JAMES-2131 Link to available boards


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ac29dbec
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ac29dbec
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ac29dbec

Branch: refs/heads/master
Commit: ac29dbec795738b3c415488b8dcc469605c64987
Parents: c4aafc1
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 30 11:51:39 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:45 2017 +0700

----------------------------------------------------------------------
 src/site/xdoc/server/metrics.xml | 2 ++
 1 file changed, 2 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ac29dbec/src/site/xdoc/server/metrics.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/server/metrics.xml b/src/site/xdoc/server/metrics.xml
index de777aa..2964fed 100644
--- a/src/site/xdoc/server/metrics.xml
+++ b/src/site/xdoc/server/metrics.xml
@@ -59,6 +59,8 @@
                     <li>Diverse Response time percentiles, counts and rates for DNS</li>
                     <li>Cassandra Java driver metrics</li>
                 </ul>
+
+                Retrieve <a href="https://github.com/apache/james-project/tree/master/grafana-reporting">available boards</a> for Grafana.
             </p>
 
             <img src="images/performances/metrics.png"/>


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


[15/22] james-project git commit: JAMES-2127 Using Iterators util instead of self define StreamSupport...

Posted by bt...@apache.org.
JAMES-2127 Using Iterators util instead of self define StreamSupport...


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4eae24a2
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4eae24a2
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4eae24a2

Branch: refs/heads/master
Commit: 4eae24a23bb6e0aed0b7337b19f5a139fd1083c8
Parents: cae4062
Author: quynhn <qn...@linagora.com>
Authored: Mon Aug 28 14:12:17 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:02 2017 +0700

----------------------------------------------------------------------
 .../james/backends/es/search/ScrollIterable.java      |  4 ++--
 .../elasticsearch/search/ElasticSearchSearcher.java   |  5 ++---
 .../inmemory/mail/InMemoryAnnotationMapper.java       |  6 ++----
 .../store/mail/utils/ApplicableFlagCalculator.java    | 14 ++++++--------
 .../mailets/RecipientRewriteTableProcessor.java       |  7 +++----
 5 files changed, 15 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4eae24a2/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/search/ScrollIterable.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/search/ScrollIterable.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/search/ScrollIterable.java
index a43160f..a93d3f1 100644
--- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/search/ScrollIterable.java
+++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/search/ScrollIterable.java
@@ -21,8 +21,8 @@ package org.apache.james.backends.es.search;
 
 import java.util.Iterator;
 import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
 
+import org.apache.james.util.streams.Iterators;
 import org.elasticsearch.action.ListenableActionFuture;
 import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.action.search.SearchResponse;
@@ -46,7 +46,7 @@ public class ScrollIterable implements Iterable<SearchResponse> {
     }
 
     public Stream<SearchResponse> stream() {
-        return StreamSupport.stream(spliterator(), false);
+        return Iterators.toStream(iterator());
     }
 
     public static class ScrollIterator implements Iterator<SearchResponse> {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4eae24a2/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
----------------------------------------------------------------------
diff --git a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
index eb35456..df5b7bf 100644
--- a/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
+++ b/mailbox/elasticsearch/src/main/java/org/apache/james/mailbox/elasticsearch/search/ElasticSearchSearcher.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.elasticsearch.search;
 import java.util.List;
 import java.util.Optional;
 import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
 import javax.inject.Inject;
 
 import org.apache.james.backends.es.search.ScrollIterable;
@@ -37,7 +36,7 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
-
+import org.apache.james.util.streams.Iterators;
 import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.client.Client;
@@ -99,7 +98,7 @@ public class ElasticSearchSearcher {
     }
 
     private Stream<MessageSearchIndex.SearchResult> transformResponseToUidStream(SearchResponse searchResponse) {
-        return StreamSupport.stream(searchResponse.getHits().spliterator(), false)
+        return Iterators.toStream(searchResponse.getHits().iterator())
             .map(this::extractContentFromHit)
             .filter(Optional::isPresent)
             .map(Optional::get);

http://git-wip-us.apache.org/repos/asf/james-project/blob/4eae24a2/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 fe3b41c..383249d 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
@@ -24,7 +24,6 @@ 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.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryId;
@@ -32,6 +31,7 @@ import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
+import org.apache.james.util.streams.Iterators;
 import org.apache.commons.lang.StringUtils;
 
 import com.github.steveash.guavate.Guavate;
@@ -84,9 +84,7 @@ public class InMemoryAnnotationMapper implements AnnotationMapper {
 
     @Override
     public List<MailboxAnnotation> getAnnotationsByKeysWithAllDepth(MailboxId mailboxId, final Set<MailboxAnnotationKey> keys) {
-        boolean parallel = true;
-
-        return StreamSupport.stream(retrieveAllAnnotations((InMemoryId)mailboxId).spliterator(), parallel)
+        return Iterators.toStream(retrieveAllAnnotations((InMemoryId)mailboxId).iterator())
             .filter(getPredicateFilterByAll(keys))
             .collect(Guavate.toImmutableList());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4eae24a2/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 ef21d47..ec599ee 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,17 +19,17 @@
 
 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 org.apache.james.util.streams.Iterators;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
 
 
 public class ApplicableFlagCalculator {
-
     private final Iterable<MailboxMessage> mailboxMessages;
 
     public ApplicableFlagCalculator(Iterable<MailboxMessage> mailboxMessages) {
@@ -38,12 +38,10 @@ public class ApplicableFlagCalculator {
     }
 
     public Flags computeApplicableFlags() {
-        boolean isParallel = true;
-
         return ApplicableFlagBuilder.builder()
-                .add(StreamSupport.stream(mailboxMessages.spliterator(), isParallel)
-                    .map(MailboxMessage::createFlags)
-                    .toArray(Flags[]::new))
-                .build();
+            .add(Iterators.toStream(mailboxMessages.iterator())
+                .map(MailboxMessage::createFlags)
+                .collect(Guavate.toImmutableList()))
+            .build();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4eae24a2/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
index 633dc22..a1652fe 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
@@ -24,7 +24,6 @@ import java.util.Optional;
 import java.util.function.Function;
 import java.util.function.Predicate;
 import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
@@ -36,6 +35,7 @@ import org.apache.james.rrt.api.RecipientRewriteTable.ErrorMappingException;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.Mappings;
+import org.apache.james.util.streams.Iterators;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.MailetContext;
@@ -49,7 +49,6 @@ import com.google.common.collect.ImmutableList;
 
 public class RecipientRewriteTableProcessor {
     private static final Logger LOGGER = LoggerFactory.getLogger(RecipientRewriteTableProcessor.class);
-    private static final boolean parallel = true;
 
     private final org.apache.james.rrt.api.RecipientRewriteTable virtualTableStore;
     private final DomainList domainList;
@@ -145,7 +144,7 @@ public class RecipientRewriteTableProcessor {
 
     private ImmutableList<Mapping> convertToNewMappings(final Mappings mappings,
             ImmutableList<Mapping> addressWithoutDomains) {
-        return Stream.concat(StreamSupport.stream(mappings.spliterator(), parallel)
+        return Stream.concat(Iterators.toStream(mappings.iterator())
                     .filter(Mapping::hasDomain),
                 addressWithoutDomains.stream())
             .collect(Guavate.toImmutableList());
@@ -166,7 +165,7 @@ public class RecipientRewriteTableProcessor {
     }
 
     private ImmutableList<Mapping> getAddressWithNoDomain(Mappings mappings, DomainList domainList) throws MessagingException {
-        ImmutableList<Mapping> addressWithoutDomains = StreamSupport.stream(mappings.spliterator(), parallel)
+        ImmutableList<Mapping> addressWithoutDomains = Iterators.toStream(mappings.iterator())
             .filter(address -> !address.hasDomain())
             .collect(Guavate.toImmutableList());
         


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


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

Posted by bt...@apache.org.
JAMES-2127 BackendJPA: 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/cae4062e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/cae4062e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/cae4062e

Branch: refs/heads/master
Commit: cae4062e67d4998a6973256f48e4eb761343262d
Parents: 9c3bd03
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 16:18:44 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:02 2017 +0700

----------------------------------------------------------------------
 .../java/org/apache/james/backends/jpa/JpaTestCluster.java   | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/cae4062e/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
----------------------------------------------------------------------
diff --git a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
index 0c5b118..19e0d86 100644
--- a/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
+++ b/backends-common/jpa/src/test/java/org/apache/james/backends/jpa/JpaTestCluster.java
@@ -21,14 +21,13 @@ package org.apache.james.backends.jpa;
 
 import java.util.HashMap;
 import java.util.List;
-
+import java.util.stream.Collectors;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 
 import com.google.common.base.Joiner;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 public class JpaTestCluster {
@@ -50,8 +49,9 @@ public class JpaTestCluster {
         properties.put("openjpa.ConnectionFactoryProperties", "PrettyPrint=true, PrettyPrintLineLength=72");
         properties.put("openjpa.MetaDataFactory", "jpa(Types=" +
             Joiner.on(";").join(
-                FluentIterable.from(clazz)
-                    .transform(Class::getName))
+                clazz.stream()
+                    .map(Class::getName)
+                    .collect(Collectors.toList()))
             + ")");
         return new JpaTestCluster(OpenJPAPersistence.getEntityManagerFactory(properties));
     }


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


[07/22] james-project git commit: JAMES-2127 Protocols: Replaced guava's Optional by java.util.Optional and it's related

Posted by bt...@apache.org.
JAMES-2127 Protocols: Replaced guava's Optional by java.util.Optional and it's related


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1629c5a1
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1629c5a1
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1629c5a1

Branch: refs/heads/master
Commit: 1629c5a1c08aba964ad9961fa9c92d354be02db7
Parents: 3de1401
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 15:24:23 2017 +0700
Committer: quynhn <qn...@linagora.com>
Committed: Wed Aug 30 11:08:48 2017 +0700

----------------------------------------------------------------------
 .../james/imap/api/ImapConfiguration.java       | 18 +++++++--------
 .../james/imap/api/process/SelectedMailbox.java |  4 +---
 .../parser/GetAnnotationCommandParser.java      |  3 ++-
 .../parser/SetAnnotationCommandParser.java      | 11 +++++----
 .../imap/encode/AnnotationResponseEncoder.java  |  7 +++---
 .../message/request/GetAnnotationRequest.java   |  8 +++----
 .../imap/processor/AbstractAuthProcessor.java   |  5 ++--
 .../processor/AbstractMailboxProcessor.java     | 24 +++++++++-----------
 .../processor/AbstractSelectionProcessor.java   |  6 +++--
 .../imap/processor/GetAnnotationProcessor.java  | 18 +++++++--------
 .../james/imap/processor/SearchProcessor.java   | 15 ++++++------
 .../processor/base/SelectedMailboxImpl.java     |  7 +++---
 .../imap/processor/base/UidMsnConverter.java    |  8 +++----
 .../parser/GetAnnotationCommandParserTest.java  | 13 +++++------
 .../james/imap/processor/CopyProcessorTest.java |  6 ++---
 .../processor/GetAnnotationProcessorTest.java   |  9 ++++----
 .../james/imap/processor/MoveProcessorTest.java |  6 ++---
 .../imap/processor/SearchProcessorTest.java     |  5 ++--
 .../base/MailboxEventAnalyserTest.java          |  6 ++---
 .../processor/base/UidMsnConverterTest.java     | 16 ++++++-------
 .../james/protocols/netty/NettyServer.java      | 18 +++++++--------
 .../smtp/netty/NettyStartTlsSMTPServerTest.java | 24 +++++++++-----------
 22 files changed, 113 insertions(+), 124 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java b/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
index 3ef0a13..48295e4 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/api/ImapConfiguration.java
@@ -19,13 +19,13 @@
 
 package org.apache.james.imap.api;
 
+import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.lang.StringUtils;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableSet;
@@ -53,11 +53,11 @@ public class ImapConfiguration {
         private Optional<Boolean> isCondstoreEnable;
 
         private Builder() {
-            this.idleTimeInterval = Optional.absent();
-            this.idleTimeIntervalUnit = Optional.absent();
-            this.enableIdle = Optional.absent();
+            this.idleTimeInterval = Optional.empty();
+            this.idleTimeIntervalUnit = Optional.empty();
+            this.enableIdle = Optional.empty();
             this.disabledCaps = ImmutableSet.of();
-            this.isCondstoreEnable = Optional.absent();
+            this.isCondstoreEnable = Optional.empty();
         }
 
         public Builder idleTimeInterval(long idleTimeInterval) {
@@ -102,11 +102,11 @@ public class ImapConfiguration {
                     .transform(StringUtils::normalizeSpace)
                     .toSet();
             return new ImapConfiguration(
-                    enableIdle.or(DEFAULT_ENABLE_IDLE),
-                    idleTimeInterval.or(DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS),
-                    idleTimeIntervalUnit.or(DEFAULT_HEARTBEAT_INTERVAL_UNIT),
+                    enableIdle.orElse(DEFAULT_ENABLE_IDLE),
+                    idleTimeInterval.orElse(DEFAULT_HEARTBEAT_INTERVAL_IN_SECONDS),
+                    idleTimeIntervalUnit.orElse(DEFAULT_HEARTBEAT_INTERVAL_UNIT),
                     normalizeDisableCaps,
-                    isCondstoreEnable.or(DEFAULT_CONDSTORE_DISABLE));
+                    isCondstoreEnable.orElse(DEFAULT_CONDSTORE_DISABLE));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java b/protocols/imap/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
index 9ff8261..710eba5 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
@@ -20,14 +20,12 @@
 package org.apache.james.imap.api.process;
 
 import java.util.Collection;
-
+import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.model.MailboxPath;
 
-import com.google.common.base.Optional;
-
 /**
  * Interface which represent a selected Mailbox during the selected state
  */

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
index 55484db..1e32fac 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.imap.decode.parser;
 
+import java.util.Optional;
+
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
@@ -32,7 +34,6 @@ import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.protocols.imap.DecodingException;
 
 import com.google.common.base.CharMatcher;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.ImmutableSet.Builder;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SetAnnotationCommandParser.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SetAnnotationCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SetAnnotationCommandParser.java
index 0b52bd7..b7ea830 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SetAnnotationCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SetAnnotationCommandParser.java
@@ -19,6 +19,9 @@
 
 package org.apache.james.imap.decode.parser;
 
+import java.util.Optional;
+import java.util.function.Function;
+
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
@@ -31,8 +34,6 @@ import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.protocols.imap.DecodingException;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 public class SetAnnotationCommandParser extends AbstractImapCommandParser {
@@ -65,9 +66,9 @@ public class SetAnnotationCommandParser extends AbstractImapCommandParser {
             String key = request.atom();
             String value = request.nstring();
 
-            return Optional.fromNullable(value)
-                .transform(transforMailboxAnnotation(key))
-                .or(MailboxAnnotation.nil(createAnnotationKey(key)));
+            return Optional.ofNullable(value)
+                .map(transforMailboxAnnotation(key))
+                .orElse(MailboxAnnotation.nil(createAnnotationKey(key)));
         } catch (IllegalArgumentException e) {
             throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, "The key is not valid: " + e.getMessage());
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java b/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java
index 9f7543c..3026647 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/encode/AnnotationResponseEncoder.java
@@ -21,6 +21,7 @@ package org.apache.james.imap.encode;
 
 import java.io.IOException;
 import java.util.List;
+import java.util.Optional;
 
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
@@ -31,8 +32,6 @@ import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 public class AnnotationResponseEncoder extends AbstractChainedImapEncoder {
     private static final Logger LOGGER = LoggerFactory.getLogger(AnnotationResponseEncoder.class);
 
@@ -47,7 +46,7 @@ public class AnnotationResponseEncoder extends AbstractChainedImapEncoder {
         composer.untagged();
         composer.commandName(ImapConstants.ANNOTATION_RESPONSE_NAME);
 
-        composer.quote(Optional.fromNullable(response.getMailboxName()).or(""));
+        composer.quote(Optional.ofNullable(response.getMailboxName()).orElse(""));
         composeAnnotations(composer, session, response.getMailboxAnnotations());
 
         composer.end();
@@ -68,7 +67,7 @@ public class AnnotationResponseEncoder extends AbstractChainedImapEncoder {
             LOGGER.warn("There is nil data of key {} on store: ", annotation.getKey().asString());
         } else {
             composer.message(annotation.getKey().asString());
-            composer.quote(annotation.getValue().or(""));
+            composer.quote(annotation.getValue().orElse(""));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/message/request/GetAnnotationRequest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/message/request/GetAnnotationRequest.java b/protocols/imap/src/main/java/org/apache/james/imap/message/request/GetAnnotationRequest.java
index 0da09fc..efde30e 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/message/request/GetAnnotationRequest.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/message/request/GetAnnotationRequest.java
@@ -19,14 +19,14 @@
 
 package org.apache.james.imap.message.request;
 
+import java.util.Optional;
 import java.util.Set;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableSet;
 import org.apache.james.imap.api.ImapCommand;
+import org.apache.james.mailbox.model.MailboxAnnotationKey;
 
 import com.google.common.base.Preconditions;
-import org.apache.james.mailbox.model.MailboxAnnotationKey;
+import com.google.common.collect.ImmutableSet;
 
 public class GetAnnotationRequest extends AbstractImapRequest {
     public static class Builder {
@@ -39,7 +39,7 @@ public class GetAnnotationRequest extends AbstractImapRequest {
 
         private Builder() {
             this.depth = Depth.ZERO;
-            this.maxsize = Optional.absent();
+            this.maxsize = Optional.empty();
             keys = ImmutableSet.of();
         }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
index aae880c..5ff2d9b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractAuthProcessor.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.imap.processor;
 
+import java.util.Optional;
+
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapSessionUtils;
 import org.apache.james.imap.api.display.HumanReadableText;
@@ -39,7 +41,6 @@ import org.apache.james.metrics.api.MetricFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 
 public abstract class AbstractAuthProcessor<M extends ImapRequest> extends AbstractMailboxProcessor<M>{
@@ -169,7 +170,7 @@ public abstract class AbstractAuthProcessor<M extends ImapRequest> extends Abstr
     }
 
     protected static AuthenticationAttempt noDelegation(String authenticationId, String password) {
-        return new AuthenticationAttempt(Optional.<String>absent(), authenticationId, password);
+        return new AuthenticationAttempt(Optional.<String>empty(), authenticationId, password);
     }
 
     protected static class AuthenticationAttempt {

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
index 5d1e704..6dc6d09 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
@@ -22,8 +22,8 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
-
 import javax.mail.Flags;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -68,8 +68,6 @@ import org.apache.james.metrics.api.TimeMetric;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
-
 abstract public class AbstractMailboxProcessor<M extends ImapRequest> extends AbstractChainedProcessor<M> {
     private static final Logger LOGGER = LoggerFactory.getLogger(AbstractMailboxProcessor.class);
 
@@ -435,7 +433,7 @@ abstract public class AbstractMailboxProcessor<M extends ImapRequest> extends Ab
             }
             // Take care of "*" and "*:*" values by return the last message in
             // the mailbox. See IMAP-289
-            MessageUid lastUid = selected.getLastUid().or(MessageUid.MIN_VALUE);
+            MessageUid lastUid = selected.getLastUid().orElse(MessageUid.MIN_VALUE);
             if (lowVal == Long.MAX_VALUE && highVal == Long.MAX_VALUE) {
                 return MessageRange.one(lastUid);
             } else if (highVal == Long.MAX_VALUE && lastUid.compareTo(MessageUid.of(lowVal)) < 0) {
@@ -517,26 +515,26 @@ abstract public class AbstractMailboxProcessor<M extends ImapRequest> extends Ab
         case ONE:
             return range;
         case ALL:
-            start = selected.getFirstUid().or(MessageUid.MIN_VALUE);
-            end = selected.getLastUid().or(MessageUid.MAX_VALUE);
+            start = selected.getFirstUid().orElse(MessageUid.MIN_VALUE);
+            end = selected.getLastUid().orElse(MessageUid.MAX_VALUE);
             return MessageRange.range(start, end);
         case RANGE:
             start = range.getUidFrom();
-            if (start.equals(MessageUid.MAX_VALUE) || start.compareTo(selected.getFirstUid().or(MessageUid.MIN_VALUE)) < 0) {
-                start = selected.getFirstUid().or(MessageUid.MIN_VALUE);
+            if (start.equals(MessageUid.MAX_VALUE) || start.compareTo(selected.getFirstUid().orElse(MessageUid.MIN_VALUE)) < 0) {
+                start = selected.getFirstUid().orElse(MessageUid.MIN_VALUE);
             }
             end = range.getUidTo();
-            if (end.equals(MessageUid.MAX_VALUE) || end.compareTo(selected.getLastUid().or(MessageUid.MAX_VALUE)) > 0) {
-                end = selected.getLastUid().or(MessageUid.MAX_VALUE);
+            if (end.equals(MessageUid.MAX_VALUE) || end.compareTo(selected.getLastUid().orElse(MessageUid.MAX_VALUE)) > 0) {
+                end = selected.getLastUid().orElse(MessageUid.MAX_VALUE);
             }
             return MessageRange.range(start, end);
         case FROM:
             start = range.getUidFrom();
-            if (start.equals(MessageUid.MAX_VALUE) || start.compareTo(selected.getFirstUid().or(MessageUid.MIN_VALUE)) < 0) {
-                start = selected.getFirstUid().or(MessageUid.MIN_VALUE);
+            if (start.equals(MessageUid.MAX_VALUE) || start.compareTo(selected.getFirstUid().orElse(MessageUid.MIN_VALUE)) < 0) {
+                start = selected.getFirstUid().orElse(MessageUid.MIN_VALUE);
             }
             
-            end = selected.getLastUid().or(MessageUid.MAX_VALUE);
+            end = selected.getLastUid().orElse(MessageUid.MAX_VALUE);
             return MessageRange.range(start, end);
         default:
             throw new MessageRangeException("Unknown message range type: " + rangeType);

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
index b334d43..e68fd6a 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
@@ -242,8 +242,10 @@ abstract class AbstractSelectionProcessor<M extends AbstractMailboxSelectionRequ
                                     MessageUid knownUid = knownUidsList.get(index);
 
                                     // Check if the uid mathc if not we are done here
-                                    if (selected.uid(msn).asSet().contains(knownUid)) {
-                                        done = true;
+                                    done = selected.uid(msn)
+                                        .filter(selectedUid -> selectedUid.equals(knownUid))
+                                        .isPresent();
+                                    if (done) {
                                         break;
                                     } else {
                                         firstUid = knownUid;

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
index 05ae7e4..d194632 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetAnnotationProcessor.java
@@ -22,9 +22,9 @@ package org.apache.james.imap.processor;
 import java.io.Closeable;
 import java.util.Comparator;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapSessionUtils;
@@ -47,8 +47,8 @@ import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.util.MDCBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.apache.commons.lang.NotImplementedException;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
@@ -93,7 +93,7 @@ public class GetAnnotationProcessor extends AbstractMailboxProcessor<GetAnnotati
     private void respond(String tag, ImapCommand command, Responder responder, String mailboxName,
                          List<MailboxAnnotation> mailboxAnnotations, Optional<Integer> maxsize, Optional<Integer> maximumOversizedSize) {
         if (maximumOversizedSize.isPresent()) {
-            responder.respond(new AnnotationResponse(mailboxName, filterItemsBySize(responder, mailboxName, mailboxAnnotations, maxsize)));
+            responder.respond(new AnnotationResponse(mailboxName, filterItemsBySize(mailboxAnnotations, maxsize)));
             okComplete(command, tag, ResponseCode.longestMetadataEntry(maximumOversizedSize.get()), responder);
         } else {
             responder.respond(new AnnotationResponse(mailboxName, mailboxAnnotations));
@@ -103,15 +103,15 @@ public class GetAnnotationProcessor extends AbstractMailboxProcessor<GetAnnotati
 
     private Optional<Integer> getMaxSizeValue(final List<MailboxAnnotation> mailboxAnnotations, Optional<Integer> maxsize) {
         if (maxsize.isPresent()) {
-            return maxsize.transform(value -> getMaxSizeOfOversizedItems(mailboxAnnotations, value)).get();
+            return maxsize.map(value -> getMaxSizeOfOversizedItems(mailboxAnnotations, value)).get();
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
-    private List<MailboxAnnotation> filterItemsBySize(Responder responder, String mailboxName, List<MailboxAnnotation> mailboxAnnotations, final Optional<Integer> maxsize) {
+    private List<MailboxAnnotation> filterItemsBySize(List<MailboxAnnotation> mailboxAnnotations, final Optional<Integer> maxsize) {
         Predicate<MailboxAnnotation> lowerPredicate = annotation -> maxsize
-            .transform(maxSizeInput -> (annotation.size() <= maxSizeInput))
-            .or(true);
+            .map(maxSizeInput -> (annotation.size() <= maxSizeInput))
+            .orElse(true);
 
         return FluentIterable.from(mailboxAnnotations).filter(lowerPredicate).toList();
     }
@@ -147,7 +147,7 @@ public class GetAnnotationProcessor extends AbstractMailboxProcessor<GetAnnotati
             .toSortedSet(Comparator.reverseOrder());
 
         if (overLimitSizes.isEmpty()) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(overLimitSizes.first());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
index 259684a..b69ceb8 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
@@ -25,8 +25,8 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 import java.util.TreeSet;
-
 import javax.mail.Flags.Flag;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -67,7 +67,6 @@ import org.apache.james.util.MDCBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> implements CapabilityImplementingProcessor {
@@ -398,7 +397,7 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
                 // message in
                 // the mailbox. See IMAP-289
                 if (lowVal == Long.MAX_VALUE && highVal == Long.MAX_VALUE) {
-                    MessageUid highUid = selected.getLastUid().or(MessageUid.MIN_VALUE);
+                    MessageUid highUid = selected.getLastUid().orElse(MessageUid.MIN_VALUE);
 
                     ranges.add(new SearchQuery.UidRange(highUid));
                 } else {
@@ -413,7 +412,7 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
                     // SelectedMailbox.NO_SUCH_MESSAGE but we check for it
                     // just to be safe
                     if (lowUid.isPresent()) {
-                        Optional<MessageUid> highUid = Optional.absent();
+                        Optional<MessageUid> highUid = Optional.empty();
                         if (highVal != Long.MAX_VALUE) {
                             highUid = selected.uid((int) highVal);
                             if (!highUid.isPresent()) {
@@ -426,7 +425,7 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
                         } else {
                             highUid = selected.getLastUid();
                         }
-                        ranges.add(new SearchQuery.UidRange(lowUid.or(MessageUid.MIN_VALUE), highUid.or(MessageUid.MAX_VALUE)));
+                        ranges.add(new SearchQuery.UidRange(lowUid.orElse(MessageUid.MIN_VALUE), highUid.orElse(MessageUid.MAX_VALUE)));
                     }
                 }
             }
@@ -455,13 +454,13 @@ public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> imp
                 // message in
                 // the mailbox. See IMAP-289
                 if (lowVal.equals(MessageUid.MAX_VALUE) && highVal.equals(MessageUid.MAX_VALUE)) {
-                    ranges.add(new SearchQuery.UidRange(selected.getLastUid().or(MessageUid.MIN_VALUE)));
-                } else if (highVal.equals(MessageUid.MAX_VALUE) && selected.getLastUid().or(MessageUid.MIN_VALUE).compareTo(lowVal) < 0) {
+                    ranges.add(new SearchQuery.UidRange(selected.getLastUid().orElse(MessageUid.MIN_VALUE)));
+                } else if (highVal.equals(MessageUid.MAX_VALUE) && selected.getLastUid().orElse(MessageUid.MIN_VALUE).compareTo(lowVal) < 0) {
                     // Sequence uid ranges which use
                     // *:<uid-higher-then-last-uid>
                     // MUST return at least the highest uid in the mailbox
                     // See IMAP-291
-                    ranges.add(new SearchQuery.UidRange(selected.getLastUid().or(MessageUid.MIN_VALUE)));
+                    ranges.add(new SearchQuery.UidRange(selected.getLastUid().orElse(MessageUid.MIN_VALUE)));
                 } else {
                     ranges.add(new SearchQuery.UidRange(lowVal, highVal));
                 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
index 18b0d7f..a564f1c 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
@@ -24,9 +24,9 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.TreeSet;
-
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
@@ -45,7 +45,6 @@ import org.apache.james.mailbox.model.UpdatedFlags;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 /**
@@ -393,13 +392,13 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener{
 
     @Override
     public synchronized int msn(MessageUid uid) {
-        return uidMsnConverter.getMsn(uid).or(NO_SUCH_MESSAGE);
+        return uidMsnConverter.getMsn(uid).orElse(NO_SUCH_MESSAGE);
     }
 
     @Override
     public synchronized Optional<MessageUid> uid(int msn) {
         if (msn == NO_SUCH_MESSAGE) {
-            return Optional.absent();
+            return Optional.empty();
         }
 
         return uidMsnConverter.getUid(msn);

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
index 5e75c95..ff56229 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/UidMsnConverter.java
@@ -22,12 +22,12 @@ package org.apache.james.imap.processor.base;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.TreeSet;
 
 import org.apache.james.mailbox.MessageUid;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 
 public class UidMsnConverter {
@@ -51,7 +51,7 @@ public class UidMsnConverter {
     public synchronized Optional<Integer> getMsn(MessageUid uid) {
         int position = Collections.binarySearch(uids, uid);
         if (position < 0) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return Optional.of(position + 1);
     }
@@ -60,12 +60,12 @@ public class UidMsnConverter {
         if (msn <= uids.size() && msn > 0) {
             return Optional.of(uids.get(msn - 1));
         }
-        return Optional.absent();
+        return Optional.empty();
     }
 
     public synchronized Optional<MessageUid> getLastUid() {
         if (uids.isEmpty()) {
-            return Optional.absent();
+            return Optional.empty();
         }
         return getUid(getLastMsn());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParserTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParserTest.java
index f8ee791..12faf5d 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParserTest.java
@@ -20,13 +20,10 @@
 package org.apache.james.imap.decode.parser;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
 
-import com.google.common.base.Charsets;
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.decode.ImapRequestStreamLineReader;
@@ -34,6 +31,8 @@ import org.apache.james.imap.message.request.GetAnnotationRequest;
 import org.apache.james.imap.message.request.GetAnnotationRequest.Depth;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.protocols.imap.DecodingException;
+
+import com.google.common.base.Charsets;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -74,7 +73,7 @@ public class GetAnnotationCommandParserTest {
         assertThat(request.getMailboxName()).isEqualTo(INBOX);
         assertThat(request.getKeys()).isEmpty();
         assertThat(request.getDepth()).isEqualTo(Depth.ZERO);
-        assertThat(request.getMaxsize()).isAbsent();
+        assertThat(request.getMaxsize()).isEmpty();
     }
 
     @Test(expected = DecodingException.class)
@@ -97,7 +96,7 @@ public class GetAnnotationCommandParserTest {
         assertThat(request.getMailboxName()).isEqualTo(INBOX);
         assertThat(request.getKeys()).containsOnly(PRIVATE_KEY);
         assertThat(request.getDepth()).isEqualTo(Depth.ZERO);
-        assertThat(request.getMaxsize()).isAbsent();
+        assertThat(request.getMaxsize()).isEmpty();
     }
 
     @Test(expected = DecodingException.class)
@@ -120,7 +119,7 @@ public class GetAnnotationCommandParserTest {
         assertThat(request.getMailboxName()).isEqualTo(INBOX);
         assertThat(request.getKeys()).contains(PRIVATE_KEY, SHARED_KEY);
         assertThat(request.getDepth()).isEqualTo(Depth.ZERO);
-        assertThat(request.getMaxsize()).isAbsent();
+        assertThat(request.getMaxsize()).isEmpty();
     }
 
     @Test(expected = DecodingException.class)
@@ -345,7 +344,7 @@ public class GetAnnotationCommandParserTest {
         assertThat(request.getCommand()).isEqualTo(command);
         assertThat(request.getMailboxName()).isEqualTo(INBOX);
         assertThat(request.getDepth()).isEqualTo(Depth.INFINITY);
-        assertThat(request.getMaxsize()).isAbsent();
+        assertThat(request.getMaxsize()).isEmpty();
         assertThat(request.getKeys()).contains(SHARED_KEY, PRIVATE_KEY);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
index f074209..5c0f875 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
+import java.util.Optional;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
@@ -47,11 +48,10 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.store.MailboxMetaData;
 import org.apache.james.metrics.api.NoopMetricFactory;
-import org.junit.Before;
-import org.junit.Test;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
+import org.junit.Before;
+import org.junit.Test;
 
 public class CopyProcessorTest {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/test/java/org/apache/james/imap/processor/GetAnnotationProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetAnnotationProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetAnnotationProcessorTest.java
index 4adbf77..e8784d8 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/GetAnnotationProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/GetAnnotationProcessorTest.java
@@ -28,7 +28,7 @@ import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
-
+import java.util.Optional;
 import java.util.Set;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -54,15 +54,14 @@ import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.NoopMetricFactory;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.MockitoAnnotations;
 
-import com.google.common.base.Optional;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
 public class GetAnnotationProcessorTest {
     private static final String TAG = "TAG";
     private static final int FIRST_ELEMENT_INDEX = 0;

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
index cdf5729..aa8a754 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
@@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
+import java.util.Optional;
 
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
@@ -50,11 +51,10 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.store.MailboxMetaData;
 import org.apache.james.metrics.api.NoopMetricFactory;
-import org.junit.Before;
-import org.junit.Test;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
+import org.junit.Before;
+import org.junit.Test;
 
 public class MoveProcessorTest {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
index 07bf600..96cb511 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/SearchProcessorTest.java
@@ -25,8 +25,8 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
+import java.util.Optional;
 import java.util.TimeZone;
-
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
@@ -56,14 +56,13 @@ import org.apache.james.mailbox.model.SearchQuery.AddressType;
 import org.apache.james.mailbox.model.SearchQuery.Criterion;
 import org.apache.james.mailbox.model.SearchQuery.DateResolution;
 import org.apache.james.metrics.api.NoopMetricFactory;
+
 import org.jmock.Expectations;
 import org.jmock.Mockery;
 import org.jmock.integration.junit4.JUnit4Mockery;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-
 public class SearchProcessorTest {
     private static final int DAY = 6;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index 3c702f0..ae63f9f 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -23,7 +23,6 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collection;
@@ -32,11 +31,10 @@ import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
-
 import javax.mail.Flags;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.imap.api.ImapSessionState;
 import org.apache.james.imap.api.ImapSessionUtils;
 import org.apache.james.imap.api.process.ImapLineHandler;
@@ -76,8 +74,8 @@ import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.junit.Test;
+import org.apache.commons.lang.NotImplementedException;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableList;
 
 public class MailboxEventAnalyserTest {

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java
index 79cf756..ae11940 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/UidMsnConverterTest.java
@@ -20,18 +20,16 @@
 package org.apache.james.imap.processor.base;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.guava.api.Assertions.assertThat;
-
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
-import org.junit.Before;
-import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import org.junit.Before;
+import org.junit.Test;
 
 public class UidMsnConverterTest {
     private UidMsnConverter testee;
@@ -52,13 +50,13 @@ public class UidMsnConverterTest {
     @Test
     public void getUidShouldReturnEmptyIfNoMessageWithTheGivenMessageNumber() {
         assertThat(testee.getUid(1))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
     public void getUidShouldReturnEmptyIfZero() {
         assertThat(testee.getUid(0))
-            .isAbsent();
+            .isEmpty();
     }
 
     @Test
@@ -71,12 +69,12 @@ public class UidMsnConverterTest {
 
     @Test
     public void getFirstUidShouldReturnEmptyIfNoMessage() {
-        assertThat(testee.getFirstUid()).isAbsent();
+        assertThat(testee.getFirstUid()).isEmpty();
     }
 
     @Test
     public void getLastUidShouldReturnEmptyIfNoMessage() {
-        assertThat(testee.getLastUid()).isAbsent();
+        assertThat(testee.getLastUid()).isEmpty();
     }
 
     @Test
@@ -99,7 +97,7 @@ public class UidMsnConverterTest {
     public void getMsnShouldReturnAbsentIfNoCorrespondingMessage() {
         testee.addUid(messageUid1);
 
-        assertThat(testee.getMsn(messageUid2)).isAbsent();
+        assertThat(testee.getMsn(messageUid2)).isEmpty();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
index eb983f9..ccfb013 100644
--- a/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
+++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/NettyServer.java
@@ -19,20 +19,20 @@
 package org.apache.james.protocols.netty;
 
 
+import java.util.Optional;
 import javax.net.ssl.SSLContext;
 
 import org.apache.james.protocols.api.Encryption;
 import org.apache.james.protocols.api.Protocol;
 import org.apache.james.protocols.api.handler.ProtocolHandler;
+
+import com.google.common.base.Preconditions;
 import org.jboss.netty.channel.ChannelPipelineFactory;
 import org.jboss.netty.channel.ChannelUpstreamHandler;
 import org.jboss.netty.channel.group.ChannelGroup;
 import org.jboss.netty.handler.execution.ExecutionHandler;
 import org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor;
 
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-
 
 /**
  * Generic NettyServer 
@@ -49,8 +49,8 @@ public class NettyServer extends AbstractAsyncServer {
         private Optional<ChannelHandlerFactory> frameHandlerFactory;
 
         private Builder() {
-            secure = Optional.absent();
-            frameHandlerFactory = Optional.absent();
+            secure = Optional.empty();
+            frameHandlerFactory = Optional.empty();
         }
 
         public Builder protocol(Protocol protocol) {
@@ -60,20 +60,20 @@ public class NettyServer extends AbstractAsyncServer {
         }
 
         public Builder secure(Encryption secure) {
-            this.secure = Optional.fromNullable(secure);
+            this.secure = Optional.ofNullable(secure);
             return this;
         }
 
         public Builder frameHandlerFactory(ChannelHandlerFactory frameHandlerFactory) {
-            this.frameHandlerFactory = Optional.fromNullable(frameHandlerFactory);
+            this.frameHandlerFactory = Optional.ofNullable(frameHandlerFactory);
             return this;
         }
 
         public NettyServer build() {
             Preconditions.checkState(protocol != null, "'protocol' is mandatory");
             return new NettyServer(protocol, 
-                    secure.orNull(),
-                    frameHandlerFactory.or(new LineDelimiterBasedChannelHandlerFactory(AbstractChannelPipelineFactory.MAX_LINE_LENGTH)));
+                    secure.orElse(null),
+                    frameHandlerFactory.orElse(new LineDelimiterBasedChannelHandlerFactory(AbstractChannelPipelineFactory.MAX_LINE_LENGTH)));
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1629c5a1/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
index 5c4750e..244ad90 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/netty/NettyStartTlsSMTPServerTest.java
@@ -19,20 +19,17 @@
 package org.apache.james.protocols.smtp.netty;
 
 import static org.assertj.core.api.Assertions.assertThat;
-
 import java.net.InetSocketAddress;
 import java.net.Socket;
 import java.util.Arrays;
 import java.util.Locale;
+import java.util.Optional;
 import java.util.Properties;
-
 import javax.mail.Message;
 import javax.mail.Session;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.commons.net.smtp.SMTPReply;
-import org.apache.commons.net.smtp.SMTPSClient;
 import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.protocols.api.Encryption;
 import org.apache.james.protocols.api.Protocol;
@@ -50,13 +47,14 @@ import org.apache.james.protocols.smtp.SMTPConfigurationImpl;
 import org.apache.james.protocols.smtp.SMTPProtocol;
 import org.apache.james.protocols.smtp.SMTPProtocolHandlerChain;
 import org.apache.james.protocols.smtp.utils.TestMessageHook;
+import org.apache.commons.net.smtp.SMTPReply;
+import org.apache.commons.net.smtp.SMTPSClient;
+
+import com.sun.mail.smtp.SMTPTransport;
 import org.assertj.core.api.AssertDelegateTarget;
 import org.junit.After;
 import org.junit.Test;
 
-import com.google.common.base.Optional;
-import com.sun.mail.smtp.SMTPTransport;
-
 public class NettyStartTlsSMTPServerTest {
 
     private static final String LOCALHOST_IP = "127.0.0.1";
@@ -103,7 +101,7 @@ public class NettyStartTlsSMTPServerTest {
 
     @Test
     public void connectShouldReturnTrueWhenConnecting() throws Exception {
-        server = createServer(createProtocol(Optional.<ProtocolHandler> absent()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
+        server = createServer(createProtocol(Optional.empty()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
         smtpsClient = createClient();
 
         server.bind();
@@ -114,7 +112,7 @@ public class NettyStartTlsSMTPServerTest {
 
     @Test
     public void ehloShouldReturnTrueWhenSendingTheCommand() throws Exception {
-        server = createServer(createProtocol(Optional.<ProtocolHandler> absent()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
+        server = createServer(createProtocol(Optional.empty()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
         smtpsClient = createClient();
 
         server.bind();
@@ -127,7 +125,7 @@ public class NettyStartTlsSMTPServerTest {
 
     @Test
     public void startTlsShouldBeAnnouncedWhenServerSupportsIt() throws Exception {
-        server = createServer(createProtocol(Optional.<ProtocolHandler> absent()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
+        server = createServer(createProtocol(Optional.empty()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
         smtpsClient = createClient();
 
         server.bind();
@@ -156,7 +154,7 @@ public class NettyStartTlsSMTPServerTest {
 
     @Test
     public void startTlsShouldReturnTrueWhenServerSupportsIt() throws Exception {
-        server = createServer(createProtocol(Optional.<ProtocolHandler> absent()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
+        server = createServer(createProtocol(Optional.empty()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
         smtpsClient = createClient();
 
         server.bind();
@@ -170,7 +168,7 @@ public class NettyStartTlsSMTPServerTest {
 
     @Test
     public void startTlsShouldFailWhenFollowedByInjectedCommand() throws Exception {
-        server = createServer(createProtocol(Optional.<ProtocolHandler> absent()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
+        server = createServer(createProtocol(Optional.empty()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
         smtpsClient = createClient();
 
         server.bind();
@@ -184,7 +182,7 @@ public class NettyStartTlsSMTPServerTest {
 
     @Test
     public void startTlsShouldFailWhenFollowedByInjectedCommandAndNotAtBeginningOfLine() throws Exception {
-        server = createServer(createProtocol(Optional.<ProtocolHandler> absent()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
+        server = createServer(createProtocol(Optional.empty()), Encryption.createStartTls(BogusSslContextFactory.getServerContext()));
         smtpsClient = createClient();
 
         server.bind();


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


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

Posted by bt...@apache.org.
JAMES-2127 Server: 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/0c2ae452
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0c2ae452
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0c2ae452

Branch: refs/heads/master
Commit: 0c2ae4527c25dba3eabcf621a442d16f59d1d056
Parents: 5d43d19
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 16:15:30 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:23:58 2017 +0700

----------------------------------------------------------------------
 .../mailbox/store/StoreMessageIdManager.java    | 13 ++---
 .../java/org/apache/mailet/base/MailetUtil.java |  1 -
 .../MailAttributesListToMimeHeaders.java        |  4 +-
 .../org/apache/james/rrt/lib/MappingsImpl.java  | 37 ++++++------
 .../dnsservice/api/InMemoryDNSService.java      | 11 ++--
 .../mailets/RecipientRewriteTableProcessor.java | 61 +++++++++++---------
 .../transport/mailets/jsieve/DiscardAction.java |  8 ++-
 ...ddressesArrayToMailAddressListConverter.java | 11 ++--
 .../remoteDelivery/DelaysAndMaxRetry.java       | 12 ++--
 .../remoteDelivery/DeliveryRunnable.java        |  2 +-
 .../InternetAddressConverter.java               |  9 ++-
 .../james/transport/util/MailAddressUtils.java  | 14 ++---
 .../remoteDelivery/DeliveryRunnableTest.java    |  4 +-
 13 files changed, 93 insertions(+), 94 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 46b65bc..a5c0492 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -56,6 +56,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.mailbox.store.quota.QuotaChecker;
+import org.apache.james.util.PredicateUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -67,13 +68,6 @@ import com.google.common.collect.Sets.SetView;
 
 public class StoreMessageIdManager implements MessageIdManager {
     private static final Logger LOGGER = LoggerFactory.getLogger(StoreMessageIdManager.class);
-    public static <T, S> Predicate<T> compose(Predicate<S> predicate, Function<T, S> function) {
-        return input -> predicate.test(function.apply(input));
-    }
-
-    static<T> Predicate<T> not(Predicate<T> p) {
-        return t -> !p.test(t);
-    }
 
     private final MailboxSessionMapperFactory mailboxSessionMapperFactory;
     private final MailboxEventDispatcher dispatcher;
@@ -280,7 +274,7 @@ public class StoreMessageIdManager implements MessageIdManager {
     }
 
     private Predicate<MailboxMessage> messageBelongsToUser(MailboxSession mailboxSession, MailboxMapper mailboxMapper) {
-        return compose(mailboxBelongsToUser(mailboxSession, mailboxMapper),
+        return PredicateUtils.compose(mailboxBelongsToUser(mailboxSession, mailboxMapper),
             MailboxMessage::getMailboxId);
     }
 
@@ -295,7 +289,8 @@ public class StoreMessageIdManager implements MessageIdManager {
     }
 
     private Predicate<MailboxId> isMailboxOfOtherUser(MailboxSession mailboxSession, MailboxMapper mailboxMapper) {
-        return not(mailboxBelongsToUser(mailboxSession, mailboxMapper));
+        return mailboxBelongsToUser(mailboxSession, mailboxMapper)
+            .negate();
     }
 
     private boolean belongsToCurrentUser(Mailbox mailbox, MailboxSession session) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java b/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
index dc8ec27..8790a9c 100644
--- a/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
+++ b/mailet/base/src/main/java/org/apache/mailet/base/MailetUtil.java
@@ -122,7 +122,6 @@ public class MailetUtil {
 
     public static int getInitParameterAsStrictlyPositiveInteger(String condition, Optional<String> defaultValue) throws MessagingException {
         String value = Optional.ofNullable(condition)
-            .filter(Strings::isNullOrEmpty)
             .orElse(defaultValue.orElse(null));
 
         if (Strings.isNullOrEmpty(value)) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
index e42deb6..cea486a 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
@@ -28,7 +28,7 @@ import java.util.Optional;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.james.util.OptionalConverter;
+import org.apache.james.util.OptionalUtils;
 import org.apache.mailet.Mail;
 import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
@@ -88,7 +88,7 @@ public class MailAttributesListToMimeHeaders extends GenericMailet {
     }
 
     private void addCollectionToHeader(MimeMessage message, String headerName, Optional<Collection> values) {
-        OptionalConverter.toStream(values)
+        OptionalUtils.toStream(values)
             .flatMap(Collection::stream)
             .forEach(value -> addValueToHeader(message, headerName, value));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
index 523731e..ac11e02 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/MappingsImpl.java
@@ -26,6 +26,8 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.Optional;
 import java.util.StringTokenizer;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
 
 import org.apache.james.rrt.lib.Mapping.Type;
 
@@ -33,9 +35,6 @@ import com.google.common.base.Joiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
@@ -63,19 +62,15 @@ public class MappingsImpl implements Mappings, Serializable {
     }
     
     public static MappingsImpl fromCollection(Collection<String> mappings) {
-        Builder builder = builder();
-        for (String mapping: mappings) {
-            builder.add(mapping);
-        }
-        return builder.build();
+        return mappings.stream()
+            .reduce(builder(), (builder, mapping) -> builder.add(mapping), (builder1, builder2) -> builder1.addAll(builder2.build()))
+            .build();
     }
     
-    public static MappingsImpl fromMappings(Iterable<Mapping> mappings) {
-        Builder builder = builder();
-        for (Mapping mapping: mappings) {
-            builder.add(mapping);
-        }
-        return builder.build();
+    private static MappingsImpl fromMappings(Stream<Mapping> mappings) {
+        return mappings
+            .reduce(builder(), (builder, mapping) -> builder.add(mapping), (builder1, builder2) -> builder1.addAll(builder2.build()))
+            .build();
     }
     
     public static Builder from(Mappings from) {
@@ -125,7 +120,8 @@ public class MappingsImpl implements Mappings, Serializable {
     
     @Override
     public Iterable<String> asStrings() {
-        return FluentIterable.from(mappings).transform(Mapping::asString);
+        return mappings.stream()
+            .map(Mapping::asString)::iterator;
     }
 
     @Override
@@ -172,20 +168,23 @@ public class MappingsImpl implements Mappings, Serializable {
     @Override
     public boolean contains(Type type) {
         Preconditions.checkNotNull(type);
-        return FluentIterable.from(mappings).anyMatch(hasType(type));
+        return mappings.stream()
+            .anyMatch(hasType(type));
     }
     
     @Override
     public Mappings select(Type type) {
         Preconditions.checkNotNull(type);
-        return fromMappings(FluentIterable.from(mappings).filter(hasType(type)));
+        return fromMappings(mappings.stream()
+            .filter(hasType(type)));
     }
     
     
     @Override
     public Mappings exclude(Type type) {
         Preconditions.checkNotNull(type);
-        return fromMappings(FluentIterable.from(mappings).filter(Predicates.not(hasType(type))));
+        return fromMappings(mappings.stream()
+            .filter(hasType(type).negate()));
     }
  
     @Override
@@ -200,7 +199,7 @@ public class MappingsImpl implements Mappings, Serializable {
         if (isEmpty()) {
             return Optional.empty();
         }
-        return Optional.<Mappings> of(this);
+        return Optional.of(this);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
----------------------------------------------------------------------
diff --git a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
index 04926ab..0af0ac9 100644
--- a/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
+++ b/server/dns-service/dnsservice-api/src/test/java/org/apache/james/dnsservice/api/InMemoryDNSService.java
@@ -25,9 +25,8 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.function.Predicate;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Maps;
 import com.google.common.net.InetAddresses;
@@ -102,10 +101,10 @@ public class InMemoryDNSService implements DNSService {
     }
 
     private Entry<String, DNSRecord> getDNSEntry(Predicate<? super Entry<String, DNSRecord>> filter) {
-        return FluentIterable.from(records.entrySet())
-                    .filter(filter)
-                    .first()
-                    .get();
+        return records.entrySet().stream()
+            .filter(filter)
+            .findFirst()
+            .get();
     }
 
     private static class DNSRecord {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
index 6e91e6b..633dc22 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
@@ -21,6 +21,10 @@ package org.apache.james.transport.mailets;
 
 import java.util.List;
 import java.util.Optional;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
@@ -38,24 +42,23 @@ import org.apache.mailet.MailetContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 public class RecipientRewriteTableProcessor {
     private static final Logger LOGGER = LoggerFactory.getLogger(RecipientRewriteTableProcessor.class);
+    private static final boolean parallel = true;
 
     private final org.apache.james.rrt.api.RecipientRewriteTable virtualTableStore;
     private final DomainList domainList;
     private final MailetContext mailetContext;
 
-    private static final Function<RrtExecutionResult, List<MailAddress>> mailAddressesFromMappingData =
+    private static final Function<RrtExecutionResult, Stream<MailAddress>> mailAddressesFromMappingData =
         mappingData -> mappingData.getNewRecipients()
             .orElse(mappingData.getRecipientWithError()
-                .orElse(ImmutableList.of()));
+                .orElse(ImmutableList.of())).stream();
 
     private static final Function<Mapping, Optional<MailAddress>> mailAddressFromMapping =
         addressMapping -> {
@@ -90,11 +93,12 @@ public class RecipientRewriteTableProcessor {
         mail.setRecipients(newRecipients);
     }
 
+
     private ImmutableList<MailAddress> getRecipientsByCondition(ImmutableList<RrtExecutionResult> mappingDatas, Predicate<RrtExecutionResult> filterCondition) {
-        return FluentIterable.from(mappingDatas)
+        return mappingDatas.stream()
             .filter(filterCondition)
-            .transformAndConcat(mailAddressesFromMappingData)
-            .toList();
+            .flatMap(mailAddressesFromMappingData)
+            .collect(Guavate.toImmutableList());
     }
 
     private ImmutableList<RrtExecutionResult> toMappingDatas(final Mail mail) {
@@ -104,9 +108,10 @@ public class RecipientRewriteTableProcessor {
             return getRrtExecutionResult(mail, recipient);
         };
 
-        return FluentIterable.from(mail.getRecipients())
-            .transform(convertToMappingData)
-            .toList();
+        return mail.getRecipients()
+            .stream()
+            .map(convertToMappingData)
+            .collect(Guavate.toImmutableList());
     }
 
     private RrtExecutionResult getRrtExecutionResult(Mail mail, MailAddress recipient) {
@@ -140,45 +145,45 @@ public class RecipientRewriteTableProcessor {
 
     private ImmutableList<Mapping> convertToNewMappings(final Mappings mappings,
             ImmutableList<Mapping> addressWithoutDomains) {
-        return FluentIterable.from(mappings)
-            .filter(Mapping::hasDomain)
-            .append(addressWithoutDomains)
-            .toList();
+        return Stream.concat(StreamSupport.stream(mappings.spliterator(), parallel)
+                    .filter(Mapping::hasDomain),
+                addressWithoutDomains.stream())
+            .collect(Guavate.toImmutableList());
     }
 
     private ImmutableList<MailAddress> getLocalAddresses(ImmutableList<MailAddress> mailAddresses) {
-        return FluentIterable.from(mailAddresses)
+        return mailAddresses.stream()
             .filter(mailAddress -> mailetContext.isLocalServer(mailAddress.getDomain()))
-            .toList();
+            .collect(Guavate.toImmutableList());
     }
 
     private ImmutableList<MailAddress> buildMailAddressFromMappingAddress(ImmutableList<Mapping> newMappings) {
-        return FluentIterable.from(newMappings)
-            .transform(mailAddressFromMapping)
+        return newMappings.stream()
+            .map(mailAddressFromMapping)
             .filter(Optional::isPresent)
-            .transform(Optional::get)
-            .toList();
+            .map(Optional::get)
+            .collect(Guavate.toImmutableList());
     }
 
     private ImmutableList<Mapping> getAddressWithNoDomain(Mappings mappings, DomainList domainList) throws MessagingException {
-        ImmutableList<Mapping> addressWithoutDomains = FluentIterable.from(mappings)
+        ImmutableList<Mapping> addressWithoutDomains = StreamSupport.stream(mappings.spliterator(), parallel)
             .filter(address -> !address.hasDomain())
-            .toList();
+            .collect(Guavate.toImmutableList());
         
         if (!addressWithoutDomains.isEmpty()) {
             final String defaultDomain = getDefaultDomain(domainList);
 
-            return FluentIterable.from(addressWithoutDomains)
-                .transform(address -> address.appendDomain(defaultDomain))
-                .toList();
+            return addressWithoutDomains.stream()
+                .map(address -> address.appendDomain(defaultDomain))
+                .collect(Guavate.toImmutableList());
         }
         return ImmutableList.of();
     }
 
     private void forwardToRemoteAddress(MailAddress sender, MailAddress recipient, MimeMessage message, ImmutableList<MailAddress> mailAddresses) throws MessagingException {
-        ImmutableList<MailAddress> remoteAddress = FluentIterable.from(mailAddresses)
+        ImmutableList<MailAddress> remoteAddress = mailAddresses.stream()
             .filter(mailAddress -> !mailetContext.isLocalServer(mailAddress.getDomain()))
-            .toList();
+            .collect(Guavate.toImmutableList());
 
         if (!remoteAddress.isEmpty()) {
             try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java
index f22b6ab..15d97f9 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/DiscardAction.java
@@ -24,7 +24,8 @@ import org.apache.jsieve.mail.Action;
 import org.apache.jsieve.mail.ActionDiscard;
 import org.apache.mailet.Mail;
 
-import com.google.common.collect.FluentIterable;
+import com.github.steveash.guavate.Guavate;
+
 
 public class DiscardAction extends FileIntoAction implements MailAction {
 
@@ -36,8 +37,9 @@ public class DiscardAction extends FileIntoAction implements MailAction {
     }
 
     public static void removeRecipient(Mail mail, ActionContext context) {
-        mail.setRecipients(FluentIterable.from(mail.getRecipients())
+        mail.setRecipients(mail.getRecipients()
+            .stream()
             .filter(mailAddress -> !mailAddress.equals(context.getRecipient()))
-            .toList());
+            .collect(Guavate.toImmutableList()));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
index a1cd46b..60f8e46 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/AddressesArrayToMailAddressListConverter.java
@@ -29,7 +29,7 @@ import org.apache.mailet.MailAddress;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.collect.FluentIterable;
+import com.github.steveash.guavate.Guavate;
 import com.google.common.collect.ImmutableList;
 
 public class AddressesArrayToMailAddressListConverter {
@@ -39,11 +39,12 @@ public class AddressesArrayToMailAddressListConverter {
         if (addresses == null) {
             return ImmutableList.of();
         }
-        return FluentIterable.from(Arrays.asList(addresses))
-            .transform(address -> toMailAddress(address))
+        return Arrays.asList(addresses)
+            .stream()
+            .map(address -> toMailAddress(address))
             .filter(Optional::isPresent)
-            .transform(Optional::get)
-            .toList();
+            .map(Optional::get)
+            .collect(Guavate.toImmutableList());
     }
 
     private static Optional<MailAddress> toMailAddress(Address address) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
index fd7e043..11036b3 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DelaysAndMaxRetry.java
@@ -20,16 +20,15 @@
 package org.apache.james.transport.mailets.remoteDelivery;
 
 import java.util.List;
-
 import javax.mail.MessagingException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Objects;
 import com.google.common.base.Splitter;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 
@@ -80,10 +79,13 @@ public class DelaysAndMaxRetry {
             // Use default delayTime.
             return ImmutableList.of(new Delay());
         }
-        ImmutableList<String> delayStrings = FluentIterable.from(Splitter.on(',')
+
+        ImmutableList<String> delayStrings = Splitter.on(',')
             .omitEmptyStrings()
-            .split(delaysAsString))
-            .toList();
+            .splitToList(delaysAsString)
+            .stream()
+            .collect(Guavate.toImmutableList());
+
         ImmutableList.Builder<Delay> builder = ImmutableList.builder();
         try {
             for (String s : delayStrings) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
index ede8101..b7115a0 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnable.java
@@ -22,6 +22,7 @@ package org.apache.james.transport.mailets.remoteDelivery;
 import java.util.Date;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.Supplier;
 
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.lifecycle.api.LifecycleUtil;
@@ -36,7 +37,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Supplier;
 
 public class DeliveryRunnable implements Runnable {
     private static final Logger LOGGER = LoggerFactory.getLogger(DeliveryRunnable.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/InternetAddressConverter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/InternetAddressConverter.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/InternetAddressConverter.java
index 4e05b1d..af446ec 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/InternetAddressConverter.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/InternetAddressConverter.java
@@ -20,21 +20,20 @@
 package org.apache.james.transport.mailets.remoteDelivery;
 
 import java.util.Collection;
-
 import javax.mail.internet.InternetAddress;
 
 import org.apache.mailet.MailAddress;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.FluentIterable;
+
 
 public class InternetAddressConverter {
 
     public static InternetAddress[] convert(Collection<MailAddress> recipients) {
         Preconditions.checkNotNull(recipients);
-        return FluentIterable.from(recipients)
-            .transform(MailAddress::toInternetAddress)
-            .toArray(InternetAddress.class);
+        return recipients.stream()
+            .map(MailAddress::toInternetAddress)
+            .toArray(InternetAddress[]::new);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
index ca80c44..bce977b 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/util/MailAddressUtils.java
@@ -19,14 +19,14 @@
 package org.apache.james.transport.util;
 
 import java.util.List;
-
+import java.util.stream.Stream;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.InternetAddress;
 
 import org.apache.james.transport.mailets.redirect.SpecialAddress;
 import org.apache.mailet.MailAddress;
 
-import com.google.common.collect.FluentIterable;
+import com.github.steveash.guavate.Guavate;
 import com.google.common.collect.ImmutableList;
 
 public class MailAddressUtils {
@@ -45,17 +45,17 @@ public class MailAddressUtils {
 
     public static List<InternetAddress> toInternetAddresses(List<MailAddress> mailAddresses) {
         return iterableOfInternetAddress(mailAddresses)
-            .toList();
+            .collect(Guavate.toImmutableList());
     }
 
     public static InternetAddress[] toInternetAddressArray(List<MailAddress> mailAddresses) {
         return iterableOfInternetAddress(mailAddresses)
-            .toArray(InternetAddress.class);
+            .toArray(InternetAddress[]::new);
     }
 
-    private static FluentIterable<InternetAddress> iterableOfInternetAddress(List<MailAddress> mailAddresses) {
-        return FluentIterable.from(mailAddresses)
-            .transform(MailAddress::toInternetAddress);
+    private static Stream<InternetAddress> iterableOfInternetAddress(List<MailAddress> mailAddresses) {
+        return mailAddresses.stream()
+            .map(MailAddress::toInternetAddress);
     }
 
     public static boolean isUnalteredOrReversePathOrSender(MailAddress mailAddress) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/0c2ae452/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
index daad6e8..2575db3 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/remoteDelivery/DeliveryRunnableTest.java
@@ -26,9 +26,9 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
-
 import java.util.Date;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Supplier;
 
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.metrics.api.Metric;
@@ -43,8 +43,6 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
-import com.google.common.base.Supplier;
-
 public class DeliveryRunnableTest {
 
     public static final Date FIXED_DATE = new Date(1159599194961L);


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


[17/22] james-project git commit: JAMES-2131 Add additional boards

Posted by bt...@apache.org.
JAMES-2131 Add additional boards


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/edf29e30
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/edf29e30
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/edf29e30

Branch: refs/heads/master
Commit: edf29e3082bc64efdf429c6877550f5ceb211dc7
Parents: 9dc495f
Author: benwa <bt...@linagora.com>
Authored: Wed Aug 30 11:48:03 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 31 08:24:44 2017 +0700

----------------------------------------------------------------------
 .../Cassandra driver-1504068385404.json         |  749 ++++++++++++
 grafana-reporting/James JVM-1504068360629.json  | 1151 ++++++++++++++++++
 2 files changed, 1900 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/edf29e30/grafana-reporting/Cassandra driver-1504068385404.json
----------------------------------------------------------------------
diff --git a/grafana-reporting/Cassandra driver-1504068385404.json b/grafana-reporting/Cassandra driver-1504068385404.json
new file mode 100644
index 0000000..f76aa1c
--- /dev/null
+++ b/grafana-reporting/Cassandra driver-1504068385404.json	
@@ -0,0 +1,749 @@
+{
+  "__inputs": [
+    {
+      "name": "DS_JAMES_ES",
+      "label": "james es",
+      "description": "",
+      "type": "datasource",
+      "pluginId": "elasticsearch",
+      "pluginName": "Elasticsearch"
+    }
+  ],
+  "__requires": [
+    {
+      "type": "datasource",
+      "id": "elasticsearch",
+      "name": "Elasticsearch",
+      "version": "3.0.0"
+    },
+    {
+      "type": "grafana",
+      "id": "grafana",
+      "name": "Grafana",
+      "version": "4.1.2"
+    },
+    {
+      "type": "panel",
+      "id": "graph",
+      "name": "Graph",
+      "version": ""
+    }
+  ],
+  "annotations": {
+    "list": []
+  },
+  "editable": true,
+  "gnetId": null,
+  "graphTooltip": 0,
+  "hideControls": false,
+  "id": null,
+  "links": [],
+  "refresh": false,
+  "rows": [
+    {
+      "collapse": false,
+      "height": 498,
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 8,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "count",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:requests",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Request",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 7,
+          "legend": {
+            "avg": false,
+            "current": false,
+            "max": false,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": false
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "metrics": [
+                {
+                  "field": "p99",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "avg"
+                },
+                {
+                  "field": "p50",
+                  "id": "3",
+                  "meta": {},
+                  "settings": {},
+                  "type": "avg"
+                },
+                {
+                  "field": "p75",
+                  "id": "4",
+                  "meta": {},
+                  "settings": {},
+                  "type": "avg"
+                },
+                {
+                  "field": "p95",
+                  "id": "5",
+                  "meta": {},
+                  "settings": {},
+                  "type": "avg"
+                }
+              ],
+              "query": "name:requests",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Request latencies",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "ms",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "short",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "Dashboard Row",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": 577,
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 9,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:executor-queue-depth",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "executor-queue-depth",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 10,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:task-scheduler-task-count",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "task-scheduler-task-count",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 11,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:blocking-executor-queue-depth",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "blocking-executor-queue-depth",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 12,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:open-connections",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "open-connections",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "Dashboard Row",
+      "titleSize": "h6"
+    }
+  ],
+  "schemaVersion": 14,
+  "style": "dark",
+  "tags": [],
+  "templating": {
+    "list": []
+  },
+  "time": {
+    "from": "now-12h",
+    "to": "now"
+  },
+  "timepicker": {
+    "refresh_intervals": [
+      "5s",
+      "10s",
+      "30s",
+      "1m",
+      "5m",
+      "15m",
+      "30m",
+      "1h",
+      "2h",
+      "1d"
+    ],
+    "time_options": [
+      "5m",
+      "15m",
+      "1h",
+      "6h",
+      "12h",
+      "24h",
+      "2d",
+      "7d",
+      "30d"
+    ]
+  },
+  "timezone": "browser",
+  "title": "Cassandra driver",
+  "version": 6
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/edf29e30/grafana-reporting/James JVM-1504068360629.json
----------------------------------------------------------------------
diff --git a/grafana-reporting/James JVM-1504068360629.json b/grafana-reporting/James JVM-1504068360629.json
new file mode 100644
index 0000000..aa276b3
--- /dev/null
+++ b/grafana-reporting/James JVM-1504068360629.json	
@@ -0,0 +1,1151 @@
+{
+  "__inputs": [
+    {
+      "name": "DS_JAMES_ES",
+      "label": "james es",
+      "description": "",
+      "type": "datasource",
+      "pluginId": "elasticsearch",
+      "pluginName": "Elasticsearch"
+    }
+  ],
+  "__requires": [
+    {
+      "type": "datasource",
+      "id": "elasticsearch",
+      "name": "Elasticsearch",
+      "version": "3.0.0"
+    },
+    {
+      "type": "grafana",
+      "id": "grafana",
+      "name": "Grafana",
+      "version": "4.1.2"
+    },
+    {
+      "type": "panel",
+      "id": "graph",
+      "name": "Graph",
+      "version": ""
+    }
+  ],
+  "annotations": {
+    "list": []
+  },
+  "editable": true,
+  "gnetId": null,
+  "graphTooltip": 0,
+  "hideControls": false,
+  "id": null,
+  "links": [],
+  "refresh": false,
+  "rows": [
+    {
+      "collapse": false,
+      "height": 352,
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 9,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 4,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:jvm.file.descriptor",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "jvm.file.descriptor getOpenFileDescriptorCount",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 10,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:jvm.threads.count",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Threads count",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 11,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 5,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:jvm.threads.deadlock.count",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Deadlocks",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "Dashboard Row",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": 368,
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 12,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.memory.total.max",
+              "refId": "A",
+              "timeField": "@timestamp"
+            },
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.memory.total.used",
+              "refId": "B",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Total memory",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "decbytes",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 13,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.memory.heap.max",
+              "refId": "A",
+              "timeField": "@timestamp"
+            },
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.memory.heap.used",
+              "refId": "B",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Heap",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "decbytes",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 14,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.memory.non-heap.max",
+              "refId": "A",
+              "timeField": "@timestamp"
+            },
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.memory.non-heap.used",
+              "refId": "B",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Non Heap",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "decbytes",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 15,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 3,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.class.loading.loaded",
+              "refId": "A",
+              "timeField": "@timestamp"
+            },
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "settings": {},
+                  "type": "max"
+                }
+              ],
+              "query": "name:jvm.class.loading.unloaded",
+              "refId": "B",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Class Loading",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "Dashboard Row",
+      "titleSize": "h6"
+    },
+    {
+      "collapse": false,
+      "height": 239,
+      "panels": [
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 16,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:jvm.gc.count",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Gc count",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        },
+        {
+          "aliasColors": {},
+          "bars": false,
+          "datasource": "${DS_JAMES_ES}",
+          "fill": 1,
+          "id": 17,
+          "legend": {
+            "avg": true,
+            "current": true,
+            "max": true,
+            "min": false,
+            "show": true,
+            "total": false,
+            "values": true
+          },
+          "lines": true,
+          "linewidth": 1,
+          "links": [],
+          "nullPointMode": "null",
+          "percentage": false,
+          "pointradius": 5,
+          "points": false,
+          "renderer": "flot",
+          "seriesOverrides": [
+            {
+              "alias": "Derivative Max count",
+              "yaxis": 2
+            }
+          ],
+          "span": 6,
+          "stack": false,
+          "steppedLine": false,
+          "targets": [
+            {
+              "bucketAggs": [
+                {
+                  "field": "@timestamp",
+                  "id": "2",
+                  "settings": {
+                    "interval": "auto",
+                    "min_doc_count": 0,
+                    "trimEdges": 0
+                  },
+                  "type": "date_histogram"
+                }
+              ],
+              "dsType": "elasticsearch",
+              "hide": false,
+              "metrics": [
+                {
+                  "field": "value",
+                  "id": "1",
+                  "meta": {},
+                  "pipelineAgg": "3",
+                  "settings": {},
+                  "type": "max"
+                },
+                {
+                  "field": "1",
+                  "id": "3",
+                  "meta": {},
+                  "pipelineAgg": "1",
+                  "settings": {},
+                  "type": "derivative"
+                }
+              ],
+              "query": "name:jvm.gc.time",
+              "refId": "A",
+              "timeField": "@timestamp"
+            }
+          ],
+          "thresholds": [],
+          "timeFrom": null,
+          "timeShift": null,
+          "title": "Gc time",
+          "tooltip": {
+            "shared": true,
+            "sort": 0,
+            "value_type": "individual"
+          },
+          "type": "graph",
+          "xaxis": {
+            "mode": "time",
+            "name": null,
+            "show": true,
+            "values": []
+          },
+          "yaxes": [
+            {
+              "format": "none",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            },
+            {
+              "format": "opm",
+              "label": null,
+              "logBase": 1,
+              "max": null,
+              "min": null,
+              "show": true
+            }
+          ]
+        }
+      ],
+      "repeat": null,
+      "repeatIteration": null,
+      "repeatRowId": null,
+      "showTitle": false,
+      "title": "Dashboard Row",
+      "titleSize": "h6"
+    }
+  ],
+  "schemaVersion": 14,
+  "style": "dark",
+  "tags": [],
+  "templating": {
+    "list": []
+  },
+  "time": {
+    "from": "now-12h",
+    "to": "now"
+  },
+  "timepicker": {
+    "refresh_intervals": [
+      "5s",
+      "10s",
+      "30s",
+      "1m",
+      "5m",
+      "15m",
+      "30m",
+      "1h",
+      "2h",
+      "1d"
+    ],
+    "time_options": [
+      "5m",
+      "15m",
+      "1h",
+      "6h",
+      "12h",
+      "24h",
+      "2d",
+      "7d",
+      "30d"
+    ]
+  },
+  "timezone": "browser",
+  "title": "James JVM",
+  "version": 12
+}
\ No newline at end of file


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


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

Posted by bt...@apache.org.
JAMES-2127 Mailet: 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/5d43d19e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5d43d19e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5d43d19e

Branch: refs/heads/master
Commit: 5d43d19eb4e8e037cf6da39e814001045f1ea5a6
Parents: b3864f3
Author: quynhn <qn...@linagora.com>
Authored: Fri Aug 25 15:48:39 2017 +0700
Committer: quynhn <qn...@linagora.com>
Committed: Wed Aug 30 11:08:48 2017 +0700

----------------------------------------------------------------------
 mailet/api/pom.xml                              |  4 ++++
 .../org/apache/mailet/PerRecipientHeaders.java  |  9 ++++----
 mailet/base/pom.xml                             |  4 ++++
 .../mailet/base/test/MimeMessageBuilder.java    | 23 ++++++++++----------
 .../mailet/DefaultDescriptorsExtractor.java     |  4 ++--
 .../transport/mailets/RecipientToLowerCase.java | 10 ++++-----
 .../transport/mailets/UseHeaderRecipients.java  | 16 +++++---------
 .../utils/MailAddressCollectionReader.java      | 13 ++++++-----
 .../transport/mailets/StripAttachmentTest.java  |  5 ++---
 9 files changed, 46 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/api/pom.xml
----------------------------------------------------------------------
diff --git a/mailet/api/pom.xml b/mailet/api/pom.xml
index 70a6b44..53b4764 100644
--- a/mailet/api/pom.xml
+++ b/mailet/api/pom.xml
@@ -37,6 +37,10 @@
 
     <dependencies>
         <dependency>
+            <groupId>com.github.steveash.guavate</groupId>
+            <artifactId>guavate</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java
----------------------------------------------------------------------
diff --git a/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java b/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java
index d261a04..af9b233 100644
--- a/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java
+++ b/mailet/api/src/main/java/org/apache/mailet/PerRecipientHeaders.java
@@ -21,12 +21,12 @@ package org.apache.mailet;
 
 import java.util.Collection;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.Multimap;
 
 public class PerRecipientHeaders {
@@ -45,9 +45,10 @@ public class PerRecipientHeaders {
     }
 
     public Collection<String> getHeaderNamesForRecipient(MailAddress recipient) {
-        return FluentIterable.from(headersByRecipient.get(recipient))
-            .transform(Header::getName)
-            .toSet();
+        return headersByRecipient.get(recipient)
+            .stream()
+            .map(Header::getName)
+            .collect(Guavate.toImmutableSet());
     }
 
     public void addHeaderForRecipient(Header header, MailAddress recipient) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/base/pom.xml
----------------------------------------------------------------------
diff --git a/mailet/base/pom.xml b/mailet/base/pom.xml
index 54c72da..7934ca2 100644
--- a/mailet/base/pom.xml
+++ b/mailet/base/pom.xml
@@ -47,6 +47,10 @@
             <artifactId>apache-mime4j-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>com.github.steveash.guavate</groupId>
+            <artifactId>guavate</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
index f83cd6f..745e331 100644
--- a/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
+++ b/mailet/base/src/test/java/org/apache/mailet/base/test/MimeMessageBuilder.java
@@ -27,6 +27,7 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
+import java.util.function.Function;
 import javax.activation.DataHandler;
 import javax.mail.BodyPart;
 import javax.mail.Message;
@@ -42,11 +43,10 @@ import javax.mail.util.ByteArrayDataSource;
 
 import org.apache.commons.io.IOUtils;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Charsets;
-import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 public class MimeMessageBuilder {
@@ -258,23 +258,24 @@ public class MimeMessageBuilder {
     }
 
     public MimeMessageBuilder addToRecipient(String... tos) throws AddressException {
-        this.to.addAll(FluentIterable.from(Arrays.asList(tos))
-            .transform(TO_INTERNET_ADDRESS)
-            .toList());
+        this.to.addAll(Arrays.asList(tos).stream()
+            .map(TO_INTERNET_ADDRESS)
+            .collect(Guavate.toImmutableList()));
         return this;
     }
 
     public MimeMessageBuilder addCcRecipient(String... ccs) throws AddressException {
-        this.cc.addAll(FluentIterable.from(Arrays.asList(ccs))
-            .transform(TO_INTERNET_ADDRESS)
-            .toList());
+        this.cc.addAll(Arrays.asList(ccs).stream()
+            .map(TO_INTERNET_ADDRESS)
+            .collect(Guavate.toImmutableList()));
         return this;
     }
 
     public MimeMessageBuilder addBccRecipient(String... bccs) throws AddressException {
-        this.bcc.addAll(FluentIterable.from(Arrays.asList(bccs))
-            .transform(TO_INTERNET_ADDRESS)
-            .toList());
+        this.bcc.addAll(Arrays.asList(bccs)
+            .stream()
+            .map(TO_INTERNET_ADDRESS)
+            .collect(Guavate.toImmutableList()));
         return this;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
----------------------------------------------------------------------
diff --git a/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java b/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
index 73a7957..2361eea 100644
--- a/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
+++ b/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
@@ -29,6 +29,7 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Stream;
 
 import org.apache.james.mailet.MailetMatcherDescriptor.Type;
 import org.apache.mailet.Experimental;
@@ -39,7 +40,6 @@ import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 
-import com.google.common.collect.FluentIterable;
 import com.thoughtworks.qdox.JavaDocBuilder;
 import com.thoughtworks.qdox.model.JavaClass;
 
@@ -182,7 +182,7 @@ public class DefaultDescriptorsExtractor {
 
 
     private boolean isExperimental(JavaClass javaClass) {
-        return FluentIterable.of(javaClass.getAnnotations())
+        return Stream.of(javaClass.getAnnotations())
             .anyMatch(annotation -> annotation.getType().getValue()
                     .equals(Experimental.class.getName()));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/standard/src/main/java/org/apache/james/transport/mailets/RecipientToLowerCase.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/RecipientToLowerCase.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/RecipientToLowerCase.java
index f5496b7..4a12bf8 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/RecipientToLowerCase.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/RecipientToLowerCase.java
@@ -19,7 +19,6 @@
 package org.apache.james.transport.mailets;
 
 import java.util.Locale;
-
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 
@@ -27,8 +26,9 @@ import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.GenericMailet;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
+
 
 /**
  * {@link GenericMailet} which convert all Recipients to lowercase
@@ -39,9 +39,9 @@ public class RecipientToLowerCase extends GenericMailet{
 
     @Override
     public void service(Mail mail) throws MessagingException {
-        mail.setRecipients(FluentIterable.from(mail.getRecipients())
-            .transform(this::toLowerCase)
-            .toList());
+        mail.setRecipients(mail.getRecipients().stream()
+            .map(this::toLowerCase)
+            .collect(Guavate.toImmutableList()));
     }
 
     private MailAddress toLowerCase(MailAddress mailAddress) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
index 543959e..7b2b6a6 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/UseHeaderRecipients.java
@@ -22,7 +22,6 @@ package org.apache.james.transport.mailets;
 
 import java.io.UnsupportedEncodingException;
 import java.util.Collection;
-
 import javax.mail.MessagingException;
 import javax.mail.internet.AddressException;
 import javax.mail.internet.MimeMessage;
@@ -41,9 +40,9 @@ import org.apache.mailet.base.GenericMailet;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Splitter;
 import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 
 /**
@@ -174,15 +173,10 @@ public class UseHeaderRecipients extends GenericMailet {
         AddressList addressList = LenientAddressParser.DEFAULT
             .parseAddressList(MimeUtil.unfold(headerPart));
 
-        ImmutableList.Builder<Mailbox> mailboxList = ImmutableList.builder();
-
-        for (Address address: addressList) {
-            mailboxList.addAll(convertAddressToMailboxCollection(address));
-        }
-
-        return FluentIterable.from(mailboxList.build())
-            .transform(this::toMailAddress)
-            .toList();
+        return addressList.stream()
+            .flatMap(address -> convertAddressToMailboxCollection(address).stream())
+            .map(this::toMailAddress)
+            .collect(Guavate.toImmutableList());
     }
 
     private MailAddress toMailAddress(Mailbox mailbox) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
index fb78101..802e79d 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
@@ -20,31 +20,32 @@
 package org.apache.james.transport.matchers.utils;
 
 import java.util.Set;
-
 import javax.mail.internet.AddressException;
 
 import org.apache.mailet.MailAddress;
 
+import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
+
 
 public class MailAddressCollectionReader {
 
     public static Set<MailAddress> read(String condition) {
         Preconditions.checkArgument(!Strings.isNullOrEmpty(condition));
-        return FluentIterable.from(Splitter.onPattern("(,| |\t)")
-            .split(condition))
+        return Splitter.onPattern("(,| |\t)").splitToList(condition)
+            .stream()
             .filter(s -> !Strings.isNullOrEmpty(s))
-            .transform(s -> {
+            .map(s -> {
                 try {
                     return new MailAddress(s);
                 } catch (AddressException e) {
                     throw Throwables.propagate(e);
                 }
-            }).toSet();
+            })
+            .collect(Guavate.toImmutableSet());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5d43d19e/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
index dd53140..02a8e0a 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/StripAttachmentTest.java
@@ -52,7 +52,6 @@ import org.junit.rules.ExpectedException;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
-import com.google.common.collect.FluentIterable;
 
 public class StripAttachmentTest {
 
@@ -235,9 +234,9 @@ public class StripAttachmentTest {
     }
 
     private String retrieveFilenameStartingWith(Collection<String> savedAttachments, final String filename) {
-        return FluentIterable.from(savedAttachments)
+        return savedAttachments.stream()
                 .filter(attachmentFilename -> attachmentFilename.startsWith(filename))
-                .first()
+                .findFirst()
                 .get();
     }
 


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