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/16 09:45:39 UTC

[06/18] james-project git commit: JAMES-2107 Run IntelliJ inspection: "Convert to lambas"

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 355070b..cc7083c 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
@@ -547,26 +547,23 @@ public class StoreMailboxManager implements MailboxManager {
             final List<MailboxId> mailboxIds = new ArrayList<MailboxId>();
             for (final MailboxPath mailbox : mailboxPath.getHierarchyLevels(getDelimiter()))
 
-                locker.executeWithLock(mailboxSession, mailbox, new LockAwareExecution<Void>() {
+                locker.executeWithLock(mailboxSession, mailbox, (LockAwareExecution<Void>) () -> {
+                    if (!mailboxExists(mailbox, mailboxSession)) {
+                        final Mailbox m = doCreateMailbox(mailbox, mailboxSession);
+                        final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
+                        mapper.execute(new TransactionalMapper.VoidTransaction() {
 
-                    public Void execute() throws MailboxException {
-                        if (!mailboxExists(mailbox, mailboxSession)) {
-                            final org.apache.james.mailbox.store.mail.model.Mailbox m = doCreateMailbox(mailbox, mailboxSession);
-                            final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
-                            mapper.execute(new TransactionalMapper.VoidTransaction() {
+                            public void runVoid() throws MailboxException {
+                                mailboxIds.add(mapper.save(m));
+                            }
 
-                                public void runVoid() throws MailboxException {
-                                    mailboxIds.add(mapper.save(m));
-                                }
-
-                            });
-
-                            // notify listeners
-                            dispatcher.mailboxAdded(mailboxSession, m);
-                        }
-                        return null;
+                        });
 
+                        // notify listeners
+                        dispatcher.mailboxAdded(mailboxSession, m);
                     }
+                    return null;
+
                 }, true);
 
             if (!mailboxIds.isEmpty()) {
@@ -581,21 +578,17 @@ public class StoreMailboxManager implements MailboxManager {
         session.getLog().info("deleteMailbox " + mailboxPath);
         final MailboxMapper mapper = mailboxSessionMapperFactory.getMailboxMapper(session);
 
-        Mailbox mailbox = mapper.execute(new Mapper.Transaction<Mailbox>() {
-
-            public Mailbox run() throws MailboxException {
-                final Mailbox mailbox = mapper.findMailboxByPath(mailboxPath);
-                if (mailbox == null) {
-                    throw new MailboxNotFoundException("Mailbox not found");
-                }
-
-                // We need to create a copy of the mailbox as maybe we can not refer to the real
-                // mailbox once we remove it 
-                SimpleMailbox m = new SimpleMailbox(mailbox);
-                mapper.delete(mailbox);
-                return m;
+        Mailbox mailbox = mapper.execute((Mapper.Transaction<Mailbox>) () -> {
+            final Mailbox mailbox1 = mapper.findMailboxByPath(mailboxPath);
+            if (mailbox1 == null) {
+                throw new MailboxNotFoundException("Mailbox not found");
             }
 
+            // We need to create a copy of the mailbox as maybe we can not refer to the real
+            // mailbox once we remove it
+            SimpleMailbox m = new SimpleMailbox(mailbox1);
+            mapper.delete(mailbox1);
+            return m;
         });
 
         dispatcher.mailboxDeleted(session, mailbox);
@@ -629,24 +622,21 @@ public class StoreMailboxManager implements MailboxManager {
 
                 // rename submailboxes
                 final MailboxPath children = new MailboxPath(MailboxConstants.USER_NAMESPACE, from.getUser(), from.getName() + getDelimiter() + "%");
-                locker.executeWithLock(session, children, new LockAwareExecution<Void>() {
-
-                    public Void execute() throws MailboxException {
-                        final List<Mailbox> subMailboxes = mapper.findMailboxWithPathLike(children);
-                        for (Mailbox sub : subMailboxes) {
-                            final String subOriginalName = sub.getName();
-                            final String subNewName = to.getName() + subOriginalName.substring(from.getName().length());
-                            final MailboxPath fromPath = new MailboxPath(children, subOriginalName);
-                            sub.setName(subNewName);
-                            mapper.save(sub);
-                            dispatcher.mailboxRenamed(session, fromPath, sub);
-
-                            if (log.isDebugEnabled())
-                                log.debug("Rename mailbox sub-mailbox " + subOriginalName + " to " + subNewName);
-                        }
-                        return null;
-
+                locker.executeWithLock(session, children, (LockAwareExecution<Void>) () -> {
+                    final List<Mailbox> subMailboxes = mapper.findMailboxWithPathLike(children);
+                    for (Mailbox sub : subMailboxes) {
+                        final String subOriginalName = sub.getName();
+                        final String subNewName = to.getName() + subOriginalName.substring(from.getName().length());
+                        final MailboxPath fromPath = new MailboxPath(children, subOriginalName);
+                        sub.setName(subNewName);
+                        mapper.save(sub);
+                        dispatcher.mailboxRenamed(session, fromPath, sub);
+
+                        if (log.isDebugEnabled())
+                            log.debug("Rename mailbox sub-mailbox " + subOriginalName + " to " + subNewName);
                     }
+                    return null;
+
                 }, true);
             }
         });
@@ -672,11 +662,8 @@ public class StoreMailboxManager implements MailboxManager {
     
     private List<MessageRange> copyMessages(MessageRange set, final MailboxSession session,
             final StoreMessageManager toMailbox, final StoreMessageManager fromMailbox) throws MailboxException {
-        return copyBatcher.batchMessages(set, new MessageBatcher.BatchedOperation() {
-            public List<MessageRange> execute(MessageRange messageRange) throws MailboxException {
-                return fromMailbox.copyTo(messageRange, toMailbox, session);
-            }
-        });
+        return copyBatcher.batchMessages(set,
+            messageRange -> fromMailbox.copyTo(messageRange, toMailbox, session));
     }
 
     @Override
@@ -684,11 +671,8 @@ public class StoreMailboxManager implements MailboxManager {
         final StoreMessageManager toMailbox = (StoreMessageManager) getMailbox(to, session);
         final StoreMessageManager fromMailbox = (StoreMessageManager) getMailbox(from, session);
 
-        return moveBatcher.batchMessages(set, new MessageBatcher.BatchedOperation() {
-            public List<MessageRange> execute(MessageRange messageRange) throws MailboxException {
-                return fromMailbox.moveTo(messageRange, toMailbox, session);
-            }
-        });
+        return moveBatcher.batchMessages(set,
+            messageRange -> fromMailbox.moveTo(messageRange, toMailbox, session));
     }
 
     @Override
@@ -737,16 +721,7 @@ public class StoreMailboxManager implements MailboxManager {
 
     private boolean hasChildIn(Mailbox parentMailbox, List<Mailbox> mailboxesWithPathLike, MailboxSession mailboxSession) {
         return FluentIterable.from(mailboxesWithPathLike)
-            .anyMatch(isChildren(parentMailbox, mailboxSession));
-    }
-
-    private Predicate<Mailbox> isChildren(final Mailbox parentMailbox, final MailboxSession mailboxSession) {
-        return new Predicate<Mailbox>() {
-            @Override
-            public boolean apply(Mailbox mailbox) {
-                return mailbox.isChildOf(parentMailbox, mailboxSession);
-            }
-        };
+            .anyMatch(mailbox -> mailbox.isChildOf(parentMailbox, mailboxSession));
     }
 
     @Override
@@ -871,12 +846,8 @@ public class StoreMailboxManager implements MailboxManager {
         final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session);
         final MailboxId mailboxId = getMailbox(mailboxPath, session).getId();
 
-        return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() {
-            @Override
-            public List<MailboxAnnotation> run() throws MailboxException {
-                return annotationMapper.getAllAnnotations(mailboxId);
-            }
-        });
+        return annotationMapper.execute(
+            () -> annotationMapper.getAllAnnotations(mailboxId));
     }
 
     @Override
@@ -885,12 +856,8 @@ public class StoreMailboxManager implements MailboxManager {
         final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session);
         final MailboxId mailboxId = getMailbox(mailboxPath, session).getId();
 
-        return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() {
-            @Override
-            public List<MailboxAnnotation> run() throws MailboxException {
-                return annotationMapper.getAnnotationsByKeys(mailboxId, keys);
-            }
-        });
+        return annotationMapper.execute(
+            () -> annotationMapper.getAnnotationsByKeys(mailboxId, keys));
     }
 
     @Override
@@ -935,12 +902,8 @@ public class StoreMailboxManager implements MailboxManager {
         final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session);
         final MailboxId mailboxId = getMailbox(mailboxPath, session).getId();
 
-        return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() {
-            @Override
-            public List<MailboxAnnotation> run() throws MailboxException {
-                return annotationMapper.getAnnotationsByKeysWithOneDepth(mailboxId, keys);
-            }
-        });
+        return annotationMapper.execute(
+            () -> annotationMapper.getAnnotationsByKeysWithOneDepth(mailboxId, keys));
     }
 
     @Override
@@ -949,12 +912,8 @@ public class StoreMailboxManager implements MailboxManager {
         final AnnotationMapper annotationMapper = mailboxSessionMapperFactory.getAnnotationMapper(session);
         final MailboxId mailboxId = getMailbox(mailboxPath, session).getId();
 
-        return annotationMapper.execute(new Mapper.Transaction<List<MailboxAnnotation>>() {
-            @Override
-            public List<MailboxAnnotation> run() throws MailboxException {
-                return annotationMapper.getAnnotationsByKeysWithAllDepth(mailboxId, keys);
-            }
-        });
+        return annotationMapper.execute(
+            () -> annotationMapper.getAnnotationsByKeysWithAllDepth(mailboxId, keys));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 3d06f87..fc9da70 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
@@ -66,21 +66,6 @@ import com.google.common.collect.Sets;
 import com.google.common.collect.Sets.SetView;
 
 public class StoreMessageIdManager implements MessageIdManager {
-
-    private static final Function<MailboxMessage, MetadataWithMailboxId> EXTRACT_METADATA_FUNCTION = new Function<MailboxMessage, MetadataWithMailboxId>() {
-        @Override
-        public MetadataWithMailboxId apply(MailboxMessage mailboxMessage) {
-            return new MetadataWithMailboxId(new SimpleMessageMetaData(mailboxMessage), mailboxMessage.getMailboxId());
-        }
-    };
-
-    private static final Function<MailboxMessage, MailboxId> EXTRACT_MAILBOX_ID_FUNCTION = new Function<MailboxMessage, MailboxId>() {
-        @Override
-        public MailboxId apply(MailboxMessage input) {
-            return input.getMailboxId();
-        }
-    };
-
     private final MailboxSessionMapperFactory mailboxSessionMapperFactory;
     private final MailboxEventDispatcher dispatcher;
     private final MessageId.Factory messageIdFactory;
@@ -118,7 +103,7 @@ public class StoreMessageIdManager implements MessageIdManager {
             final MailboxMapper mailboxMapper = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession);
             List<MailboxMessage> messageList = messageIdMapper.find(messageIds, MessageMapper.FetchType.Full);
             ImmutableSet<MailboxId> mailboxIds = FluentIterable.from(messageList)
-                .transform(EXTRACT_MAILBOX_ID_FUNCTION)
+                .transform(MailboxMessage::getMailboxId)
                 .toSet();
             final ImmutableSet<MailboxId> allowedMailboxIds = FluentIterable.from(mailboxIds)
                 .filter(mailboxBelongsToUser(mailboxSession, mailboxMapper))
@@ -142,7 +127,9 @@ public class StoreMessageIdManager implements MessageIdManager {
         Iterable<MetadataWithMailboxId> metadatasWithMailbox = FluentIterable
             .from(messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Metadata))
             .filter(inMailboxes(mailboxIds))
-            .transform(EXTRACT_METADATA_FUNCTION);
+            .transform(mailboxMessage -> new MetadataWithMailboxId(
+                new SimpleMessageMetaData(mailboxMessage),
+                mailboxMessage.getMailboxId()));
 
         messageIdMapper.delete(messageId, mailboxIds);
 
@@ -164,7 +151,7 @@ public class StoreMessageIdManager implements MessageIdManager {
 
         if (!mailboxMessages.isEmpty()) {
             ImmutableSet<MailboxId> currentMailboxes = FluentIterable.from(mailboxMessages)
-                .transform(EXTRACT_MAILBOX_ID_FUNCTION)
+                .transform(MailboxMessage::getMailboxId)
                 .toSet();
             HashSet<MailboxId> targetMailboxes = Sets.newHashSet(mailboxIds);
             List<MailboxId> mailboxesToRemove = ImmutableList.copyOf(Sets.difference(currentMailboxes, targetMailboxes));
@@ -253,38 +240,27 @@ public class StoreMessageIdManager implements MessageIdManager {
     }
 
     private Function<MailboxMessage, MessageResult> messageResultConverter(final MessageResult.FetchGroup fetchGroup) {
-        return new Function<MailboxMessage, MessageResult>() {
-            @Override
-            public MessageResult apply(MailboxMessage input) {
-                try {
-                    return ResultUtils.loadMessageResult(input, fetchGroup);
-                } catch (MailboxException e) {
-                    throw new WrappedException(e);
-                }
+        return input -> {
+            try {
+                return ResultUtils.loadMessageResult(input, fetchGroup);
+            } catch (MailboxException e) {
+                throw new WrappedException(e);
             }
         };
     }
 
     private Predicate<MailboxMessage> inMailboxes(final Collection<MailboxId> mailboxIds) {
-        return new Predicate<MailboxMessage>() {
-            @Override
-            public boolean apply(MailboxMessage mailboxMessage) {
-                return mailboxIds.contains(mailboxMessage.getMailboxId());
-            }
-        };
+        return mailboxMessage -> mailboxIds.contains(mailboxMessage.getMailboxId());
     }
 
     private Predicate<MailboxId> mailboxBelongsToUser(final MailboxSession mailboxSession, final MailboxMapper mailboxMapper) {
-        return new Predicate<MailboxId>() {
-            @Override
-            public boolean apply(MailboxId mailboxId) {
-                try {
-                    Mailbox currentMailbox = mailboxMapper.findMailboxById(mailboxId);
-                    return belongsToCurrentUser(currentMailbox, mailboxSession);
-                } catch (MailboxException e) {
-                    mailboxSession.getLog().error(String.format("Can not retrieve mailboxPath associated with %s", mailboxId.serialize()), e);
-                    return false;
-                }
+        return mailboxId -> {
+            try {
+                Mailbox currentMailbox = mailboxMapper.findMailboxById(mailboxId);
+                return belongsToCurrentUser(currentMailbox, mailboxSession);
+            } catch (MailboxException e) {
+                mailboxSession.getLog().error(String.format("Can not retrieve mailboxPath associated with %s", mailboxId.serialize()), e);
+                return false;
             }
         };
     }
@@ -292,7 +268,7 @@ public class StoreMessageIdManager implements MessageIdManager {
     private Predicate<MailboxMessage> messageBelongsToUser(MailboxSession mailboxSession, MailboxMapper mailboxMapper) {
         return Predicates.compose(
             mailboxBelongsToUser(mailboxSession, mailboxMapper),
-            EXTRACT_MAILBOX_ID_FUNCTION);
+            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/855a3c87/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 137433c..e4e3c30 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
@@ -82,7 +82,6 @@ import org.apache.james.mailbox.store.quota.QuotaChecker;
 import org.apache.james.mailbox.store.search.MessageSearchIndex;
 import org.apache.james.mailbox.store.streaming.BodyOffsetInputStream;
 import org.apache.james.mailbox.store.streaming.CountingInputStream;
-import org.apache.james.mailbox.store.transaction.Mapper;
 import org.apache.james.mime4j.MimeException;
 import org.apache.james.mime4j.message.DefaultBodyDescriptorBuilder;
 import org.apache.james.mime4j.message.HeaderImpl;
@@ -95,7 +94,6 @@ import org.apache.james.util.IteratorWrapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
@@ -140,15 +138,6 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
 
     private static final Logger LOG = LoggerFactory.getLogger(StoreMessageManager.class);
 
-    private static final Predicate<MessageAttachment> NOT_INLINE_ATTACHMENT() {
-        return new Predicate<MessageAttachment>() {
-            @Override
-            public boolean apply(MessageAttachment input) {
-                return !input.isInlinedWithCid();
-            }
-        };
-    }
-
     private final Mailbox mailbox;
 
     private final MailboxEventDispatcher dispatcher;
@@ -427,16 +416,12 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
 
             new QuotaChecker(quotaManager, quotaRootResolver, mailbox).tryAddition(1, size);
 
-            return locker.executeWithLock(mailboxSession, getMailboxPath(), new MailboxPathLocker.LockAwareExecution<ComposedMessageId>() {
-
-                @Override
-                public ComposedMessageId execute() throws MailboxException {
-                    MessageMetaData data = appendMessageToStore(message, attachments, mailboxSession);
+            return locker.executeWithLock(mailboxSession, getMailboxPath(), () -> {
+                MessageMetaData data = appendMessageToStore(message, attachments, mailboxSession);
 
-                    Mailbox mailbox = getMailboxEntity();
-                    dispatcher.added(mailboxSession, mailbox, message);
-                    return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid());
-                }
+                Mailbox mailbox = getMailboxEntity();
+                dispatcher.added(mailboxSession, mailbox, message);
+                return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid());
             }, true);
 
         } catch (IOException e) {
@@ -462,7 +447,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
     }
 
     private boolean hasNonInlinedAttachment(List<MessageAttachment> attachments) {
-        return FluentIterable.from(attachments).anyMatch(NOT_INLINE_ATTACHMENT());
+        return FluentIterable.from(attachments)
+            .anyMatch(messageAttachment -> !messageAttachment.isInlinedWithCid());
     }
 
     private List<MessageAttachment> extractAttachments(SharedFileInputStream contentIn) {
@@ -500,10 +486,7 @@ 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(new Function<MessageUid, MessageUid>() {
-                    public MessageUid apply(MessageUid input) {
-                        return input.next();
-                    }})
+                .transform(MessageUid::next)
                 .or(MessageUid.MIN_VALUE);
         final long highestModSeq = mapperFactory.getMessageMapper(mailboxSession).getHighestModSeq(mailbox);
         final long messageCount;
@@ -597,12 +580,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
 
         final MessageMapper messageMapper = mapperFactory.getMessageMapper(mailboxSession);
 
-        Iterator<UpdatedFlags> it = messageMapper.execute(new Mapper.Transaction<Iterator<UpdatedFlags>>() {
-
-            public Iterator<UpdatedFlags> run() throws MailboxException {
-                return messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(flags, flagsUpdateMode), set);
-            }
-        });
+        Iterator<UpdatedFlags> it = messageMapper.execute(() -> messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(flags, flagsUpdateMode), set));
 
         final SortedMap<MessageUid, UpdatedFlags> uFlags = new TreeMap<MessageUid, UpdatedFlags>();
 
@@ -612,7 +590,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
             uFlags.put(flag.getUid(), flag);
         }
 
-        dispatcher.flagsUpdated(mailboxSession, new ArrayList<MessageUid>(uFlags.keySet()), getMailboxEntity(), new ArrayList<UpdatedFlags>(uFlags.values()));
+        dispatcher.flagsUpdated(mailboxSession, new ArrayList<>(uFlags.keySet()), getMailboxEntity(), new ArrayList<UpdatedFlags>(uFlags.values()));
 
         return newFlagsByUid;
     }
@@ -630,13 +608,9 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
             throw new ReadOnlyException(new StoreMailboxPath(toMailbox.getMailboxEntity()), session.getPathDelimiter());
         }
 
-        return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), new MailboxPathLocker.LockAwareExecution<List<MessageRange>>() {
-
-            @Override
-            public List<MessageRange> execute() throws MailboxException {
-                SortedMap<MessageUid, MessageMetaData> copiedUids = copy(set, toMailbox, session);
-                return MessageRange.toRanges(new ArrayList<MessageUid>(copiedUids.keySet()));
-            }
+        return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), () -> {
+            SortedMap<MessageUid, MessageMetaData> copiedUids = copy(set, toMailbox, session);
+            return MessageRange.toRanges(new ArrayList<>(copiedUids.keySet()));
         }, true);
     }
 
@@ -657,30 +631,22 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
         }
 
         //TODO lock the from mailbox too, in a non-deadlocking manner - how?
-        return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), new MailboxPathLocker.LockAwareExecution<List<MessageRange>>() {
-
-            @Override
-            public List<MessageRange> execute() throws MailboxException {
-                SortedMap<MessageUid, MessageMetaData> movedUids = move(set, toMailbox, session);
-                return MessageRange.toRanges(new ArrayList<MessageUid>(movedUids.keySet()));
-            }
+        return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), () -> {
+            SortedMap<MessageUid, MessageMetaData> movedUids = move(set, toMailbox, session);
+            return MessageRange.toRanges(new ArrayList<>(movedUids.keySet()));
         }, true);
     }
 
     protected MessageMetaData appendMessageToStore(final MailboxMessage message, final List<MessageAttachment> messageAttachments, MailboxSession session) throws MailboxException {
         final MessageMapper messageMapper = mapperFactory.getMessageMapper(session);
         final AttachmentMapper attachmentMapper = mapperFactory.getAttachmentMapper(session);
-        return mapperFactory.getMessageMapper(session).execute(new Mapper.Transaction<MessageMetaData>() {
-
-            public MessageMetaData run() throws MailboxException {
-                ImmutableList.Builder<Attachment> attachments = ImmutableList.builder();
-                for (MessageAttachment attachment : messageAttachments) {
-                    attachments.add(attachment.getAttachment());
-                }
-                attachmentMapper.storeAttachments(attachments.build());
-                return messageMapper.add(getMailboxEntity(), message);
+        return mapperFactory.getMessageMapper(session).execute(() -> {
+            ImmutableList.Builder<Attachment> attachments = ImmutableList.builder();
+            for (MessageAttachment attachment : messageAttachments) {
+                attachments.add(attachment.getAttachment());
             }
-
+            attachmentMapper.storeAttachments(attachments.build());
+            return messageMapper.add(getMailboxEntity(), message);
         });
     }
 
@@ -713,23 +679,19 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
         }
         final MessageMapper messageMapper = mapperFactory.getMessageMapper(mailboxSession);
 
-        return messageMapper.execute(new Mapper.Transaction<List<MessageUid>>() {
-
-            public List<MessageUid> run() throws MailboxException {
-                final List<MessageUid> members = messageMapper.findRecentMessageUidsInMailbox(getMailboxEntity());
+        return messageMapper.execute(() -> {
+            final List<MessageUid> members = messageMapper.findRecentMessageUidsInMailbox(getMailboxEntity());
 
-                // Convert to MessageRanges so we may be able to optimize the
-                // flag update
-                List<MessageRange> ranges = MessageRange.toRanges(members);
-                for (MessageRange range : ranges) {
-                    if (reset) {
-                        // only call save if we need to
-                        messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(new Flags(Flag.RECENT), FlagsUpdateMode.REMOVE), range);
-                    }
+            // Convert to MessageRanges so we may be able to optimize the
+            // flag update
+            List<MessageRange> ranges = MessageRange.toRanges(members);
+            for (MessageRange range : ranges) {
+                if (reset) {
+                    // only call save if we need to
+                    messageMapper.updateFlags(getMailboxEntity(), new FlagsUpdateCalculator(new Flags(Flag.RECENT), FlagsUpdateMode.REMOVE), range);
                 }
-                return members;
             }
-
+            return members;
         });
 
     }
@@ -738,13 +700,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
 
         final MessageMapper messageMapper = mapperFactory.getMessageMapper(session);
 
-        return messageMapper.execute(new Mapper.Transaction<Map<MessageUid, MessageMetaData>>() {
-
-            public Map<MessageUid, MessageMetaData> run() throws MailboxException {
-                return messageMapper.expungeMarkedForDeletionInMailbox(getMailboxEntity(), range);
-            }
-
-        });
+        return messageMapper.execute(
+            () -> messageMapper.expungeMarkedForDeletionInMailbox(getMailboxEntity(), range));
     }
 
     @Override
@@ -763,13 +720,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
         while (originalRows.hasNext()) {
             final MailboxMessage originalMessage = originalRows.next();
             quotaChecker.tryAddition(1, originalMessage.getFullContentOctets());
-            MessageMetaData data = messageMapper.execute(new Mapper.Transaction<MessageMetaData>() {
-                public MessageMetaData run() throws MailboxException {
-                    return messageMapper.copy(getMailboxEntity(), originalMessage);
-
-                }
-
-            });
+            MessageMetaData data = messageMapper.execute(
+                () -> messageMapper.copy(getMailboxEntity(), originalMessage));
             copiedRows.add(data);
         }
         return copiedRows.iterator();
@@ -783,12 +735,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
         while (originalRows.hasNext()) {
             final MailboxMessage originalMessage = originalRows.next();
             originalRowsCopy.add(new SimpleMessageMetaData(originalMessage));
-            MessageMetaData data = messageMapper.execute(new Mapper.Transaction<MessageMetaData>() {
-                public MessageMetaData run() throws MailboxException {
-                    return messageMapper.move(getMailboxEntity(), originalMessage);
-                }
-
-            });
+            MessageMetaData data = messageMapper.execute(
+                () -> messageMapper.move(getMailboxEntity(), originalMessage));
             movedRows.add(data);
         }
         return new MoveResult(movedRows.iterator(), originalRowsCopy.iterator());
@@ -897,11 +845,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
     private Iterator<MessageUid> listAllMessageUids(MailboxSession session) throws MailboxException {
         final MessageMapper messageMapper = mapperFactory.getMessageMapper(session);
 
-        return messageMapper.execute(new Mapper.Transaction<Iterator<MessageUid>>() {
-            @Override
-            public Iterator<MessageUid> run() throws MailboxException {
-                return messageMapper.listAllMessageUids(mailbox);
-            }
-        });
+        return messageMapper.execute(
+            () -> messageMapper.listAllMessageUids(mailbox));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java
index 33f1e75..81c5793 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/AsynchronousEventDelivery.java
@@ -19,12 +19,13 @@
 
 package org.apache.james.mailbox.store.event;
 
-import org.apache.james.mailbox.MailboxListener;
-
-import javax.annotation.PreDestroy;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import javax.annotation.PreDestroy;
+
+import org.apache.james.mailbox.MailboxListener;
+
 public class AsynchronousEventDelivery implements EventDelivery {
 
     private final ExecutorService threadPoolExecutor;
@@ -37,12 +38,7 @@ public class AsynchronousEventDelivery implements EventDelivery {
 
     @Override
     public void deliver(final MailboxListener mailboxListener, final MailboxListener.Event event) {
-        threadPoolExecutor.submit(new Runnable() {
-            @Override
-            public void run() {
-                synchronousEventDelivery.deliver(mailboxListener, event);
-            }
-        });
+        threadPoolExecutor.submit(() -> synchronousEventDelivery.deliver(mailboxListener, event));
     }
 
     @PreDestroy

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java
index 3277d4c..3598eaa 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MailboxSessionDataTransferObject.java
@@ -19,18 +19,18 @@
 
 package org.apache.james.mailbox.store.json.event.dto;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Function;
-import com.google.common.collect.Lists;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.store.SimpleMailboxSession;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.google.common.collect.Lists;
 
 public class MailboxSessionDataTransferObject {
     @JsonProperty()
@@ -61,11 +61,7 @@ public class MailboxSessionDataTransferObject {
         separator = session.getPathDelimiter();
         sessionType = extractSessionType(session);
         sessionId = session.getSessionId();
-        locales = Lists.transform(session.getUser().getLocalePreferences(), new Function<Locale, LocaleDataTransferObject>() {
-            public LocaleDataTransferObject apply(Locale locale) {
-                return new LocaleDataTransferObject(locale);
-            }
-        });
+        locales = Lists.transform(session.getUser().getLocalePreferences(), LocaleDataTransferObject::new);
     }
 
     @JsonIgnore
@@ -83,11 +79,7 @@ public class MailboxSessionDataTransferObject {
 
     private List<Locale> retrieveLocales() {
         if (locales != null) {
-            return Lists.transform(locales, new Function<LocaleDataTransferObject, Locale>() {
-                public Locale apply(LocaleDataTransferObject localeDataTransferObject) {
-                    return localeDataTransferObject.getLocale();
-                }
-            });
+            return Lists.transform(locales, LocaleDataTransferObject::getLocale);
         } else {
             return new ArrayList<Locale>();
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java
index e7c3e93..637d003 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java
@@ -49,12 +49,8 @@ public class MessageMetaDataDataTransferObject {
 
     private static final Logger LOG = LoggerFactory.getLogger(MessageMetaDataDataTransferObject.class);
 
-    private static final ThreadLocal<SimpleDateFormat> simpleDateFormat = new ThreadLocal<SimpleDateFormat>(){
-        protected SimpleDateFormat initialValue()
-        {
-            return new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
-        }
-    };
+    private static final ThreadLocal<SimpleDateFormat> simpleDateFormat = ThreadLocal.withInitial(
+        () -> new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"));
 
     private static Date parse(String date) throws ParseException {
         if (date != null) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java
index bd0a31c..e5d8103 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingModSeqProvider.java
@@ -20,7 +20,6 @@ package org.apache.james.mailbox.store.mail;
 
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.MailboxPathLocker;
-import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
@@ -43,13 +42,10 @@ public abstract class AbstractLockingModSeqProvider implements ModSeqProvider{
     
     @Override
     public long nextModSeq(final MailboxSession session, final Mailbox mailbox) throws MailboxException {
-        return locker.executeWithLock(session, new StoreMailboxPath(mailbox), new LockAwareExecution<Long>() {
-
-            @Override
-            public Long execute() throws MailboxException {
-                return lockedNextModSeq(session, mailbox);
-            }
-        }, true);
+        boolean writeLock = true;
+        return locker.executeWithLock(session, new StoreMailboxPath(mailbox),
+            () -> lockedNextModSeq(session, mailbox),
+            writeLock);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java
index 33586dc..d3d5c8e 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java
@@ -20,7 +20,6 @@ package org.apache.james.mailbox.store.mail;
 
 import org.apache.commons.lang.NotImplementedException;
 import org.apache.james.mailbox.MailboxPathLocker;
-import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -45,13 +44,10 @@ public abstract class AbstractLockingUidProvider implements UidProvider{
     
     @Override
     public MessageUid nextUid(final MailboxSession session, final Mailbox mailbox) throws MailboxException {
-        return locker.executeWithLock(session, new StoreMailboxPath(mailbox), new LockAwareExecution<MessageUid>() {
-
-            @Override
-            public MessageUid execute() throws MailboxException {
-                return lockedNextUid(session, mailbox);
-            }
-        }, true);
+        boolean writeLock = true;
+        return locker.executeWithLock(session, new StoreMailboxPath(mailbox),
+            () -> lockedNextUid(session, mailbox),
+            writeLock);
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 cae0753..0cf6d8b 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
@@ -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.Function;
 import com.google.common.base.Optional;
 import com.google.common.collect.Iterators;
 
@@ -46,12 +45,6 @@ import com.google.common.collect.Iterators;
  *
  */
 public abstract class AbstractMessageMapper extends TransactionalMapper implements MessageMapper {
-    private static final Function<MailboxMessage, MessageUid> TO_UID = new Function<MailboxMessage, MessageUid>() {
-        @Override
-        public MessageUid apply(MailboxMessage input) {
-            return input.getUid();
-        }
-    };
 
     private static final int UNLIMITED = -1;
 
@@ -159,6 +152,7 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen
 
     @Override
     public Iterator<MessageUid> listAllMessageUids(Mailbox mailbox) throws MailboxException {
-        return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Metadata, UNLIMITED), TO_UID);
+        return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Metadata, UNLIMITED),
+            MailboxMessage::getUid);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 62bf74e..63f80af 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
@@ -161,28 +161,19 @@ public class MessageParser {
     }
 
     private Optional<String> contentType(Optional<ContentTypeField> contentTypeField) {
-        return contentTypeField.transform(new Function<ContentTypeField, Optional<String>>() {
-            @Override
-            public Optional<String> apply(ContentTypeField field) {
-                return Optional.fromNullable(field.getMimeType());
-            }
-        }).or(Optional.<String> absent());
+        return contentTypeField.transform(field -> Optional.fromNullable(field.getMimeType()))
+            .or(Optional.<String> absent());
     }
 
     private Optional<String> name(Optional<ContentTypeField> contentTypeField) {
-        return contentTypeField.transform(new Function<ContentTypeField, Optional<String>>() {
-            @Override
-            public Optional<String> apply(ContentTypeField field) {
-                return Optional.fromNullable(field.getParameter("name"))
-                  .transform(
-                          new Function<String, String>() {
-                              public String apply(String input) {
-                                  DecodeMonitor monitor = null;
-                                  return DecoderUtil.decodeEncodedWords(input, monitor);
-                              }
-                          });
-            }
-        }).or(Optional.<String> absent());
+        return contentTypeField
+            .transform(field -> Optional.fromNullable(field.getParameter("name"))
+                .transform(
+                    fieldValue -> {
+                        DecodeMonitor monitor = null;
+                        return DecoderUtil.decodeEncodedWords(fieldValue, monitor);
+                    }))
+            .or(Optional.<String> absent());
     }
 
     private Optional<Cid> cid(Optional<ContentIdField> contentIdField) {
@@ -194,12 +185,7 @@ public class MessageParser {
     }
 
     private Function<ContentIdField, Optional<Cid>> toCid() {
-        return new Function<ContentIdField, Optional<Cid>>() {
-            @Override
-            public Optional<Cid> apply(ContentIdField input) {
-                return cidParser.parse(input.getId());
-            }
-        };
+        return contentIdField -> cidParser.parse(contentIdField.getId());
     }
 
     private boolean isMultipart(Entity entity) {
@@ -207,12 +193,8 @@ public class MessageParser {
     }
 
     private boolean isInline(Optional<ContentDispositionField> contentDispositionField) {
-        return contentDispositionField.transform(new Function<ContentDispositionField, Boolean>() {
-            @Override
-            public Boolean apply(ContentDispositionField field) {
-                return field.isInline();
-            }
-        }).or(false);
+        return contentDispositionField.transform(ContentDispositionField::isInline)
+            .or(false);
     }
 
     private boolean isAttachment(Entity part, Context context) {
@@ -220,13 +202,9 @@ public class MessageParser {
             return false;
         }
         return Optional.fromNullable(part.getDispositionType())
-                .transform(new Function<String, Boolean>() {
-
-                    @Override
-                    public Boolean apply(String dispositionType) {
-                        return ATTACHMENT_CONTENT_DISPOSITIONS.contains(dispositionType.toLowerCase(Locale.US));
-                    }
-                }).or(false);
+                .transform(dispositionType -> ATTACHMENT_CONTENT_DISPOSITIONS.contains(
+                    dispositionType.toLowerCase(Locale.US)))
+            .or(false);
     }
 
     private boolean isTextPart(Entity part) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 f69a458..2c88849 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
@@ -62,14 +62,9 @@ public class PropertyBuilder {
     public static final String HAS_ATTACHMENT = "HAS_ATTACHMENT";
 
     public static Predicate<Property> isHasAttachmentProperty() {
-        return new Predicate<Property>() {
-            @Override
-            public boolean apply(Property input) {
-                return input.getNamespace().equals(PropertyBuilder.JAMES_INTERNALS)
-                    && input.getLocalName().equals(PropertyBuilder.HAS_ATTACHMENT)
-                    && input.getValue().equals("true");
-            }
-        };
+        return property -> property.getNamespace().equals(PropertyBuilder.JAMES_INTERNALS)
+            && property.getLocalName().equals(PropertyBuilder.HAS_ATTACHMENT)
+            && property.getValue().equals("true");
     }
 
     private Long textualLineCount;
@@ -77,7 +72,7 @@ public class PropertyBuilder {
 
     public PropertyBuilder(List<Property> props) {
         textualLineCount = null;
-        properties = new ArrayList<SimpleProperty>(props.size());
+        properties = new ArrayList<>(props.size());
         for (Property property:props) {
             properties.add(new SimpleProperty(property));
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 110430f..b95e153 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
@@ -24,21 +24,11 @@ import javax.mail.Flags;
 import org.apache.james.mailbox.ApplicableFlagBuilder;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 
-import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.FluentIterable;
 
 public class ApplicableFlagCalculator {
 
-    private static Function<MailboxMessage, Flags> toFlags() {
-        return new Function<MailboxMessage, Flags>() {
-            @Override
-            public Flags apply(MailboxMessage mailboxMessage) {
-                return mailboxMessage.createFlags();
-            }
-        };
-    }
-
     private final Iterable<MailboxMessage> mailboxMessages;
 
     public ApplicableFlagCalculator(Iterable<MailboxMessage> mailboxMessages) {
@@ -49,7 +39,7 @@ public class ApplicableFlagCalculator {
     public Flags computeApplicableFlags() {
         return ApplicableFlagBuilder.builder()
                 .add(FluentIterable.from(mailboxMessages)
-                    .transform(toFlags())
+                    .transform(MailboxMessage::createFlags)
                     .toArray(Flags.class))
                 .build();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java
index 0a7df7d..4c66901 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/CurrentQuotaCalculator.java
@@ -36,7 +36,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.Function;
 import com.google.common.base.Throwables;
 import com.google.common.collect.Lists;
 
@@ -70,14 +69,11 @@ public class CurrentQuotaCalculator {
     private List<Mailbox> retrieveMailboxes(QuotaRoot quotaRoot, MailboxSession session) throws MailboxException {
         List<MailboxPath> paths = quotaRootResolver.retrieveAssociatedMailboxes(quotaRoot, session);
         final MailboxMapper mapper = factory.getMailboxMapper(session);
-        return Lists.transform(paths, new Function<MailboxPath, Mailbox>() {
-            @Override
-            public Mailbox apply(MailboxPath mailboxPath) {
-                try {
-                    return mapper.findMailboxByPath(mailboxPath);
-                } catch (MailboxException e) {
-                    throw Throwables.propagate(e);
-                }
+        return Lists.transform(paths, mailboxPath -> {
+            try {
+                return mapper.findMailboxByPath(mailboxPath);
+            } catch (MailboxException e) {
+                throw Throwables.propagate(e);
             }
         });
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java
index 1e49b7d..4fa9cf6 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/DefaultQuotaRootResolver.java
@@ -31,7 +31,6 @@ import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
-import com.google.common.base.Function;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Lists;
@@ -67,12 +66,8 @@ public class DefaultQuotaRootResolver implements QuotaRootResolver {
         }
         String namespace = parts.get(0);
         String user = parts.get(1);
-        return Lists.transform(factory.getMailboxMapper(mailboxSession).findMailboxWithPathLike(new MailboxPath(namespace, user, "%")),
-            new Function<Mailbox, MailboxPath>() {
-                @Override
-                public MailboxPath apply(Mailbox idMailbox) {
-                    return idMailbox.generateAssociatedPath();
-                }
-            });
+        return Lists.transform(factory.getMailboxMapper(mailboxSession)
+            .findMailboxWithPathLike(new MailboxPath(namespace, user, "%")),
+            Mailbox::generateAssociatedPath);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 84dc5fc..78fa9af 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
@@ -70,7 +70,6 @@ import org.apache.james.mime4j.stream.MimeConfig;
 import org.apache.james.mime4j.util.MimeUtil;
 import org.apache.james.mime4j.utils.search.MessageMatcher;
 
-import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
@@ -123,15 +122,10 @@ public class MessageSearches implements Iterable<SimpleMessageSearchIndex.Search
         List<MailboxMessage> sortedResults = FluentIterable.from(builder.build())
             .toSortedList(CombinedComparator.create(query.getSorts()));
         return FluentIterable.from(sortedResults)
-            .transform(new Function<MailboxMessage, SimpleMessageSearchIndex.SearchResult>() {
-                @Override
-                public SimpleMessageSearchIndex.SearchResult apply(MailboxMessage input) {
-                    return new SimpleMessageSearchIndex.SearchResult(
-                        Optional.of(input.getMessageId()),
-                        input.getMailboxId(),
-                        input.getUid());
-                }
-            })
+            .transform(mailboxMessage -> new SimpleMessageSearchIndex.SearchResult(
+                Optional.of(mailboxMessage.getMessageId()),
+                mailboxMessage.getMailboxId(),
+                mailboxMessage.getUid()))
             .iterator();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 d95b22a..082d90c 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
@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
@@ -32,7 +31,6 @@ import org.apache.james.mailbox.MailboxManager.SearchCapabilities;
 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.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageRange;
@@ -49,9 +47,7 @@ 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.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;
 
@@ -103,8 +99,8 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex {
     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(isInMailbox(mailbox))
-                .transform(toMessageUid())
+                .filter(searchResult -> searchResult.getMailboxId().equals(mailbox.getMailboxId()))
+                .transform(SearchResult::getMessageUid)
                 .iterator();
     }
 
@@ -155,8 +151,9 @@ 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)
-            .filter(notInMailboxes(searchQuery.getNotInMailboxes()));
+        FluentIterable<Mailbox> filteredMailboxes = FluentIterable
+            .from(allUserMailboxes)
+            .filter(mailbox -> !searchQuery.getNotInMailboxes().contains(mailbox.getMailboxId()));
         if (searchQuery.getInMailboxes().isEmpty()) {
             return getAsMessageIds(searchResults(session, filteredMailboxes, searchQuery.getSearchQuery()), limit);
         }
@@ -169,48 +166,12 @@ public class SimpleMessageSearchIndex implements MessageSearchIndex {
         return getAsMessageIds(searchResults(session, queriedMailboxes, searchQuery.getSearchQuery()), limit);
     }
 
-    private Predicate<Mailbox> notInMailboxes(final Set<MailboxId> mailboxIds) {
-        return new Predicate<Mailbox>() {
-        @Override
-        public boolean apply(Mailbox input) {
-            return !mailboxIds.contains(input.getMailboxId());
-        }
-    };
-    }
-
     private List<MessageId> getAsMessageIds(List<SearchResult> temp, long limit) {
         return FluentIterable.from(temp)
-            .transform(toMessageId())
+            .transform(searchResult -> searchResult.getMessageId().get())
             .filter(SearchUtil.distinct())
             .limit(Long.valueOf(limit).intValue())
             .toList();
     }
 
-    private Function<SearchResult, MessageId> toMessageId() {
-        return new Function<SearchResult, MessageId>() {
-            @Override
-            public MessageId apply(SearchResult input) {
-                return input.getMessageId().get();
-            }
-        };
-    }
-
-    private Function<SearchResult, MessageUid> toMessageUid() {
-        return new Function<SearchResult, MessageUid>() {
-            @Override
-            public MessageUid apply(SearchResult input) {
-                return input.getMessageUid();
-            }
-        };
-    }
-
-    private Predicate<SearchResult> isInMailbox(final Mailbox mailbox) {
-        return new Predicate<SearchResult>() {
-            @Override
-            public boolean apply(SearchResult input) {
-                return input.getMailboxId().equals(mailbox.getMailboxId());
-            }
-        };
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 436fcea..38bae1d 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
@@ -44,12 +44,7 @@ public class CombinedComparator implements Comparator<MailboxMessage>{
     }
 
     private static Function<Sort, Comparator<MailboxMessage>> toComparator() {
-        return new Function<Sort, Comparator<MailboxMessage>>() {
-            @Override
-            public Comparator<MailboxMessage> apply(Sort input) {
-                return optionalResverse(toComparator(input), input.isReverse());
-            }
-        };
+        return sort -> optionalResverse(toComparator(sort), sort.isReverse());
     }
 
     private static Comparator<MailboxMessage> toComparator(Sort sort) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 b524d7c..a78e7c0 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
@@ -474,12 +474,7 @@ public abstract class AbstractCombinationManagerTest {
     }
 
     private Predicate<MessageResult> messageInMailbox2() {
-        return new Predicate<MessageResult>() {
-            @Override
-            public boolean apply(MessageResult input) {
-                return input.getMailboxId().equals(mailbox2.getMailboxId());
-            }
-        };
+        return messageResult -> messageResult.getMailboxId().equals(mailbox2.getMailboxId());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 4dcd687..0e6bdd8 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
@@ -58,32 +58,10 @@ 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, Flags> getFlags() {
-        return new Function<MessageResult, Flags>() {
-            @Override
-            public Flags apply(MessageResult input) {
-                return input.getFlags();
-            }
-        };
-    }
-
     private static final Function<MessageResult, Map.Entry<MessageId, Flags>> toMapEntryOfFlags() {
-        return new Function<MessageResult, Map.Entry<MessageId, Flags>>() {
-            @Override
-            public Map.Entry<MessageId, Flags> apply(MessageResult input) {
-                return new AbstractMap.SimpleEntry<MessageId, Flags>(input.getMessageId(), input.getFlags());
-            }
-        };
+        return messageResult -> new AbstractMap.SimpleEntry<>(messageResult.getMessageId(), messageResult.getFlags());
     }
 
-    private static Function<MessageResult, MailboxId> getMailboxId() {
-        return new Function<MessageResult, MailboxId>() {
-            @Override
-            public MailboxId apply(MessageResult input) {
-                return input.getMailboxId();
-            }
-        };
-    }
 
     private MessageIdManagerTestSystem testingData;
     private MessageIdManager messageIdManager;
@@ -252,7 +230,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session);
 
         List<MailboxId> messageMailboxIds = FluentIterable.from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
-            .transform(getMailboxId())
+            .transform(MessageResult::getMailboxId)
             .toList();
 
         assertThat(messageMailboxIds).containsOnly(mailbox1.getMailboxId(), mailbox3.getMailboxId());
@@ -414,7 +392,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         
         List<Flags> flags = FluentIterable
                 .from(messageIdManager.getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, session))
-                .transform(getFlags())
+                .transform(MessageResult::getFlags)
                 .toList();
 
         assertThat(flags).hasSize(2);
@@ -432,7 +410,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
         
         List<Flags> flags = FluentIterable
                 .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session))
-                .transform(getFlags())
+                .transform(MessageResult::getFlags)
                 .toList();
 
         assertThat(flags).hasSize(1);
@@ -448,7 +426,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
         List<Flags> flags = FluentIterable
             .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session))
-            .transform(getFlags())
+            .transform(MessageResult::getFlags)
             .toList();
 
         assertThat(flags).hasSize(1);
@@ -464,7 +442,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
         List<Flags> flags = FluentIterable
             .from(messageIdManager.getMessages(ImmutableList.of(messageId1), FetchGroupImpl.MINIMAL, session))
-            .transform(getFlags())
+            .transform(MessageResult::getFlags)
             .toList();
 
         assertThat(flags).hasSize(1);
@@ -545,12 +523,7 @@ public abstract class AbstractMessageIdManagerStorageTest {
     }
 
     private Predicate<MessageResult> inMailbox(final MailboxId mailboxId) {
-        return new Predicate<MessageResult>() {
-            @Override
-            public boolean apply(MessageResult input) {
-                return input.getMailboxId().equals(mailboxId);
-            }
-        };
+        return messageResult -> messageResult.getMailboxId().equals(mailboxId);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java
index 58ac911..97dade9 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageBatcherTest.java
@@ -21,8 +21,6 @@ package org.apache.james.mailbox.store;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
-import java.util.List;
-
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MessageRange;
@@ -32,12 +30,10 @@ import com.google.common.collect.Lists;
 
 public class MessageBatcherTest {
 
-    private MessageBatcher.BatchedOperation incrementBatcher = new MessageBatcher.BatchedOperation() {
-        @Override
-        public List<MessageRange> execute(MessageRange messageRange) throws MailboxException {
-            return Lists.<MessageRange>newArrayList(MessageRange.range(messageRange.getUidFrom().next(), messageRange.getUidTo().next()));
-        }
-    };
+    private MessageBatcher.BatchedOperation incrementBatcher =
+        messageRange -> Lists.<MessageRange>newArrayList(MessageRange.range(
+            messageRange.getUidFrom().next(),
+            messageRange.getUidTo().next()));
 
     @Test
     public void batchMessagesShouldWorkOnSingleRangeMode() throws Exception {
@@ -59,11 +55,10 @@ public class MessageBatcherTest {
     public void batchMessagesShouldPropagateExceptions() throws Exception {
         MessageBatcher messageBatcher = new MessageBatcher(0);
 
-        messageBatcher.batchMessages(MessageRange.range(MessageUid.of(1), MessageUid.of(10)), new MessageBatcher.BatchedOperation() {
-            public List<MessageRange> execute(MessageRange messageRange) throws MailboxException {
+        messageBatcher.batchMessages(MessageRange.range(MessageUid.of(1), MessageUid.of(10)),
+            messageRange -> {
                 throw new MailboxException();
-            }
-        });
+            });
     }
 
     @Test(expected = IllegalArgumentException.class)

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
index dbccca7..a517fa5 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMailboxManagerAnnotationTest.java
@@ -51,8 +51,6 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
@@ -96,13 +94,11 @@ public class StoreMailboxManagerAnnotationTest {
         when(mailboxSessionMapperFactory.getAnnotationMapper(eq(session))).thenReturn(annotationMapper);
         when(mailbox.getMailboxId()).thenReturn(mailboxId);
         when(mailboxMapper.findMailboxByPath(eq(mailboxPath))).thenReturn(mailbox);
-        when(annotationMapper.execute(any(Mapper.Transaction.class))).thenAnswer(new Answer<Object>() {
-            @Override
-            public Object answer(InvocationOnMock invocationOnMock) throws Throwable {
+        when(annotationMapper.execute(any(Mapper.Transaction.class)))
+            .thenAnswer(invocationOnMock -> {
                 Mapper.Transaction<?> transaction = (Mapper.Transaction<?>) invocationOnMock.getArguments()[0];
                 return transaction.run();
-            }
-        });
+            });
 
         storeMailboxManager = spy(new StoreMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, aclResolver, groupMembershipResolver, 
                 messageParser, messageIdFactory, MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE));

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 67107c2..e21ea94 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
@@ -38,7 +38,6 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxCounters;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.MessageRange;
-import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MessageResult.FetchGroup;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.model.UpdatedFlags;
@@ -48,7 +47,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.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
-import org.assertj.core.api.iterable.Extractor;
 import org.junit.Test;
 
 import com.google.common.base.Optional;
@@ -199,12 +197,8 @@ public class StoreMailboxMessageResultIteratorTest {
         BatchSizes batchSize = BatchSizes.uniqueBatchSize(3);
         StoreMessageResultIterator it = new StoreMessageResultIterator(new TestMessageMapper(MessageRange.all()), null, range, batchSize, new TestFetchGroup());
 
-        assertThat(it).extracting(new Extractor<MessageResult, Long>(){
-            @Override
-            public Long extract(MessageResult input) {
-                return input.getUid().asLong();
-            }
-        }).containsExactly(1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l);
+        assertThat(it).extracting(input -> input.getUid().asLong())
+            .containsExactly(1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 0c048b5..bef60ea 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
@@ -171,7 +171,7 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
             public List<MailboxId> findMailboxes(final MessageId messageId) {
                 return FluentIterable.from(messages)
                     .filter(withMessageId(messageId))
-                    .transform(toMailboxId())
+                    .transform(MailboxMessage::getMailboxId)
                     .toList();
             }
 
@@ -291,73 +291,36 @@ public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory
         messages.clear();
     }
 
-    private Function<MailboxMessage, MailboxId> toMailboxId() {
-        return new Function<MailboxMessage, MailboxId>() {
-            @Override
-            public MailboxId apply(MailboxMessage input) {
-                return input.getMailboxId();
-            }
-        };
-    }
-
     private Predicate<MailboxMessage> withMessageIdOneOf(final List<MessageId> messageIds) {
-        return new Predicate<MailboxMessage>() {
-            @Override
-            public boolean apply(MailboxMessage input) {
-                return messageIds.contains(input.getMessageId());
-            }
-        };
+        return mailboxMessage -> messageIds.contains(mailboxMessage.getMessageId());
     }
 
     private Predicate<MailboxMessage> inMailbox(final MessageId messageId) {
-        return new Predicate<MailboxMessage>() {
-            @Override
-            public boolean apply(MailboxMessage input) {
-                return input.getMailboxId().equals(messageId);
-            }
-        };
+        return mailboxMessage -> mailboxMessage.getMailboxId().equals(messageId);
     }
 
     private Predicate<MailboxMessage> inMailboxes(final List<MailboxId> mailboxIds) {
-        return new Predicate<MailboxMessage>() {
-            @Override
-            public boolean apply(MailboxMessage input) {
-                return mailboxIds.contains(input.getMailboxId());
-            }
-        };
+        return mailboxMessage -> mailboxIds.contains(mailboxMessage.getMailboxId());
     }
 
     private Predicate<MailboxMessage> withMessageId(final MessageId messageId) {
-        return new Predicate<MailboxMessage>() {
-            @Override
-            public boolean apply(MailboxMessage input) {
-                return input.getMessageId().equals(messageId);
-            }
-        };
+        return mailboxMessage -> mailboxMessage.getMessageId().equals(messageId);
     }
 
     private Predicate<Map.Entry<MailboxId, UpdatedFlags>> isChanged() {
-        return new Predicate<Map.Entry<MailboxId, UpdatedFlags>>() {
-            @Override
-            public boolean apply(Map.Entry<MailboxId, UpdatedFlags> entry) {
-                return entry.getValue().flagsChanged();
-            }
-        };
+        return entry -> entry.getValue().flagsChanged();
     }
 
     private Function<MailboxMessage, Map.Entry<MailboxId, UpdatedFlags>> toMapEntryOfUpdatedFlags(final Flags newState, final MessageManager.FlagsUpdateMode updateMode) {
-        return new Function<MailboxMessage, Map.Entry<MailboxId, UpdatedFlags>>() {
-            @Override
-            public Map.Entry<MailboxId, UpdatedFlags> apply(MailboxMessage input) {
-                Preconditions.checkState(updateMode.equals(MessageManager.FlagsUpdateMode.ADD));
-                return new AbstractMap.SimpleEntry<MailboxId, UpdatedFlags>(input.getMailboxId(),
-                    UpdatedFlags.builder()
-                        .uid(input.getUid())
-                        .modSeq(input.getModSeq())
-                        .newFlags(newState)
-                        .oldFlags(input.createFlags())
-                        .build());
-            }
+        return mailboxMessage -> {
+            Preconditions.checkState(updateMode.equals(MessageManager.FlagsUpdateMode.ADD));
+            return new AbstractMap.SimpleEntry<>(mailboxMessage.getMailboxId(),
+                UpdatedFlags.builder()
+                    .uid(mailboxMessage.getUid())
+                    .modSeq(mailboxMessage.getModSeq())
+                    .newFlags(newState)
+                    .oldFlags(mailboxMessage.createFlags())
+                    .build());
         };
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
index 4b9d6d5..44fde73 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/DefaultDelegatingMailboxListenerTest.java
@@ -32,8 +32,6 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.util.EventCollector;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
 
 public class DefaultDelegatingMailboxListenerTest {
 
@@ -191,14 +189,11 @@ public class DefaultDelegatingMailboxListenerTest {
         MailboxSession session = new MockMailboxSession("benwa");
         MailboxListener.Event event = new MailboxListener.Event(session, MAILBOX_PATH) {};
         MailboxListener mockedListener = mock(MailboxListener.class);
-        when(mockedListener.getType()).thenAnswer(new Answer<MailboxListener.ListenerType>() {
-            @Override
-            public MailboxListener.ListenerType answer(InvocationOnMock invocation) throws Throwable {
-                return MailboxListener.ListenerType.ONCE;
-            }
-        });
+        when(mockedListener.getType()).thenReturn(MailboxListener.ListenerType.ONCE);
         doThrow(new RuntimeException()).when(mockedListener).event(event);
+
         defaultDelegatingMailboxListener.addGlobalListener(mockedListener, null);
+
         defaultDelegatingMailboxListener.event(event);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java
index 7630138..5cb359e 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MixedEventDeliveryTest.java
@@ -19,22 +19,20 @@
 
 package org.apache.james.mailbox.store.event;
 
-import org.apache.james.mailbox.MailboxListener;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.timeout;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+import org.apache.james.mailbox.MailboxListener;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
 
 public class MixedEventDeliveryTest {
 
@@ -75,12 +73,9 @@ public class MixedEventDeliveryTest {
         MailboxListener.Event event = new MailboxListener.Event(null, null) {};
         when(listener.getExecutionMode()).thenReturn(MailboxListener.ExecutionMode.ASYNCHRONOUS);
         final CountDownLatch latch = new CountDownLatch(1);
-        doAnswer(new Answer<Void>() {
-            @Override
-            public Void answer(InvocationOnMock invocation) throws Throwable {
-                latch.await();
-                return null;
-            }
+        doAnswer(invocation -> {
+            latch.await();
+            return null;
         }).when(listener).event(event);
         mixedEventDelivery.deliver(listener, event);
         latch.countDown();


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