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

[04/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/protocols/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java
----------------------------------------------------------------------
diff --git a/protocols/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java b/protocols/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java
index 3fd4692..22b8b09 100644
--- a/protocols/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java
+++ b/protocols/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java
@@ -36,7 +36,6 @@ import org.apache.james.protocols.api.ProtocolSession;
 import org.apache.james.protocols.api.Request;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.future.FutureResponse;
-import org.apache.james.protocols.api.future.FutureResponse.ResponseListener;
 import org.apache.james.protocols.api.future.FutureResponseImpl;
 
 
@@ -198,36 +197,33 @@ public class CommandDispatcher<Session extends ProtocolSession> implements Exten
         return null;
     }
 
-    private Response executeResultHandlers(final Session session, Response response, final long executionTime, final CommandHandler<Session> cHandler, final Iterator<ProtocolHandlerResultHandler<Response, Session>> resultHandlers) {
+    private Response executeResultHandlers(final Session session, Response responseFuture, final long executionTime, final CommandHandler<Session> cHandler, final Iterator<ProtocolHandlerResultHandler<Response, Session>> resultHandlers) {
         // Check if the there is a ResultHandler left to execute if not just return the response
         if (resultHandlers.hasNext()) {
             // Special handling of FutureResponse
             // See PROTOCOLS-37
-            if (response instanceof FutureResponse) {
+            if (responseFuture instanceof FutureResponse) {
                 final FutureResponseImpl futureResponse = new FutureResponseImpl();
-                ((FutureResponse) response).addListener(new ResponseListener() {
+                ((FutureResponse) responseFuture).addListener(response -> {
+                    Response r = resultHandlers.next().onResponse(session, response, executionTime, cHandler);
 
-                    public void onResponse(FutureResponse response) {
-                        Response r = resultHandlers.next().onResponse(session, response, executionTime, cHandler);
-                        
-                        // call the next ResultHandler 
-                        r = executeResultHandlers(session, r, executionTime, cHandler, resultHandlers);
-                        
-                        // notify the FutureResponse that we are ready
-                        futureResponse.setResponse(r);
-                    }
+                    // call the next ResultHandler
+                    r = executeResultHandlers(session, r, executionTime, cHandler, resultHandlers);
+
+                    // notify the FutureResponse that we are ready
+                    futureResponse.setResponse(r);
                 });
                 
                 // just return the new FutureResponse which will get notified once its ready
                 return futureResponse;
             }  else {
-                response = resultHandlers.next().onResponse(session, response, executionTime, cHandler);
+                responseFuture = resultHandlers.next().onResponse(session, responseFuture, executionTime, cHandler);
                 
                 // call the next ResultHandler 
-                return executeResultHandlers(session, response, executionTime, cHandler, resultHandlers);
+                return executeResultHandlers(session, responseFuture, executionTime, cHandler, resultHandlers);
             }
         }
-        return response;
+        return responseFuture;
     }
     /**
      * Parse the line into a {@link Request}

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/protocols/api/src/test/java/org/apache/james/protocols/api/AbstractProtocolTransportTest.java
----------------------------------------------------------------------
diff --git a/protocols/api/src/test/java/org/apache/james/protocols/api/AbstractProtocolTransportTest.java b/protocols/api/src/test/java/org/apache/james/protocols/api/AbstractProtocolTransportTest.java
index fda9d0a..039a01d 100644
--- a/protocols/api/src/test/java/org/apache/james/protocols/api/AbstractProtocolTransportTest.java
+++ b/protocols/api/src/test/java/org/apache/james/protocols/api/AbstractProtocolTransportTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.protocols.api;
 
+import static junit.framework.Assert.assertEquals;
+
 import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.net.InetSocketAddress;
@@ -33,8 +35,6 @@ import org.apache.james.protocols.api.future.FutureResponseImpl;
 import org.apache.james.protocols.api.handler.LineHandler;
 import org.junit.Test;
 
-import static junit.framework.Assert.*;
-
 /**
  * Test-case for PROTOCOLS-62
  *
@@ -105,27 +105,24 @@ public class AbstractProtocolTransportTest {
     }
     
     private void notifyFutureResponses(final List<Response> messages, final boolean reverse) {
-        new Thread(new Runnable() {
-            
-            public void run() {
-                try {
-                    Thread.sleep(200);
-                    List<Response> responses = new ArrayList<Response>(messages);
-                    if (reverse) {
-                        Collections.reverse(responses);
-                    }
+        new Thread(() -> {
+            try {
+                Thread.sleep(200);
+                List<Response> responses = new ArrayList<>(messages);
+                if (reverse) {
+                    Collections.reverse(responses);
+                }
 
-                    for (Response r : responses) {
-                        if (r instanceof FutureResponseImpl) {
-                            ((FutureResponseImpl) r).setResponse(new TestResponse());
-                        }
+                for (Response r : responses) {
+                    if (r instanceof FutureResponseImpl) {
+                        ((FutureResponseImpl) r).setResponse(new TestResponse());
                     }
-
-                } catch (InterruptedException e) {
-                    throw new RuntimeException();
                 }
-                
+
+            } catch (InterruptedException e) {
+                throw new RuntimeException();
             }
+
         }).start();
     }
     private void checkWrittenResponses(List<Response> messages) throws InterruptedException, UnsupportedEncodingException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 d06ac60..0ee015f 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
@@ -42,19 +42,6 @@ public class ImapConfiguration {
     }
 
     public static class Builder {
-        private static final Function<String, String> NORMALIZE_STRING = new Function<String, String>() {
-            @Override
-            public String apply(String disableCap) {
-                return StringUtils.normalizeSpace(disableCap);
-            }
-        };
-        private static final Predicate<String> NO_BLANK = new Predicate<String>() {
-            @Override
-            public boolean apply(String disableCap) {
-                return noBlankString(disableCap);
-            }
-        };
-
         private static boolean noBlankString(String disableCap) {
             return !StringUtils.isBlank(disableCap);
         }
@@ -113,8 +100,8 @@ public class ImapConfiguration {
 
         public ImapConfiguration build() {
             ImmutableSet<String> normalizeDisableCaps = FluentIterable.from(disabledCaps)
-                    .filter(NO_BLANK)
-                    .transform(NORMALIZE_STRING)
+                    .filter(Builder::noBlankString)
+                    .transform(StringUtils::normalizeSpace)
                     .toSet();
             return new ImapConfiguration(
                     enableIdle.or(DEFAULT_ENABLE_IDLE),

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SearchCommandParser.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SearchCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SearchCommandParser.java
index ec81ef6..00b668b 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SearchCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/SearchCommandParser.java
@@ -37,11 +37,10 @@ import org.apache.james.imap.api.message.request.SearchKey;
 import org.apache.james.imap.api.message.request.SearchOperation;
 import org.apache.james.imap.api.message.request.SearchResultOption;
 import org.apache.james.imap.api.message.response.StatusResponse;
-import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.message.response.StatusResponse.ResponseCode;
+import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.decode.ImapRequestLineReader;
-import org.apache.james.imap.decode.ImapRequestLineReader.CharacterValidator;
 import org.apache.james.imap.message.request.SearchRequest;
 import org.apache.james.protocols.imap.DecodingException;
 
@@ -140,16 +139,11 @@ public class SearchCommandParser extends AbstractUidCommandParser {
             // Just consume the [<entry-name> <entry-type-req>] and ignore it
             // See RFC4551 3.4. MODSEQ Search Criterion in SEARCH
             request.consumeQuoted();
-            request.consumeWord(new CharacterValidator() {
-                
-                /*
-                 * (non-Javadoc)
-                 * @see org.apache.james.imap.decode.ImapRequestLineReader.CharacterValidator#isValid(char)
-                 */
-                public boolean isValid(char chr) {
-                    return true;
-                }
-            });
+            /*
+             * (non-Javadoc)
+             * @see org.apache.james.imap.decode.ImapRequestLineReader.CharacterValidator#isValid(char)
+             */
+            request.consumeWord(chr -> true);
             return SearchKey.buildModSeq(request.number());
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 26c372a..0b52bd7 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
@@ -74,11 +74,7 @@ public class SetAnnotationCommandParser extends AbstractImapCommandParser {
     }
 
     private Function<String, MailboxAnnotation> transforMailboxAnnotation(final String key) {
-        return new Function<String, MailboxAnnotation>() {
-            public MailboxAnnotation apply(String value) {
-                return MailboxAnnotation.newInstance(createAnnotationKey(key), value);
-            }
-        };
+        return value -> MailboxAnnotation.newInstance(createAnnotationKey(key), value);
     }
 
     private MailboxAnnotationKey createAnnotationKey(String key) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/protocols/imap/src/main/java/org/apache/james/imap/processor/AuthenticateProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AuthenticateProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AuthenticateProcessor.java
index 59ca5b6..a26d74d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AuthenticateProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AuthenticateProcessor.java
@@ -29,7 +29,6 @@ import org.apache.commons.codec.binary.Base64;
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
-import org.apache.james.imap.api.process.ImapLineHandler;
 import org.apache.james.imap.api.process.ImapProcessor;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.message.request.AuthenticateRequest;
@@ -70,18 +69,14 @@ public class AuthenticateProcessor extends AbstractAuthProcessor<AuthenticateReq
                     doPlainAuth(irRequest.getInitialClientResponse(), session, tag, command, responder);
                 } else {
                     responder.respond(new AuthenticateResponse());
-                    session.pushLineHandler(new ImapLineHandler() {
-                
-                        public void onLine(ImapSession session, byte[] data) {
-                            // cut of the CRLF
-                            String initialClientResponse = new String(data, 0, data.length - 2, Charset.forName("US-ASCII"));
+                    session.pushLineHandler((requestSession, data) -> {
+                        // cut of the CRLF
+                        String initialClientResponse = new String(data, 0, data.length - 2, Charset.forName("US-ASCII"));
 
-                            doPlainAuth(initialClientResponse, session, tag, command, responder);
-                            
-                            // remove the handler now
-                            session.popLineHandler();
-                    
-                        }
+                        doPlainAuth(initialClientResponse, requestSession, tag, command, responder);
+
+                        // remove the handler now
+                        requestSession.popLineHandler();
                     });
                 }
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 c68cb76..de0146f 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
@@ -44,7 +44,6 @@ import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.MetricFactory;
 
-import com.google.common.base.Function;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
@@ -98,28 +97,15 @@ public class GetAnnotationProcessor extends AbstractMailboxProcessor<GetAnnotati
 
     private Optional<Integer> getMaxSizeValue(final List<MailboxAnnotation> mailboxAnnotations, Optional<Integer> maxsize) {
         if (maxsize.isPresent()) {
-            return maxsize.transform(new Function<Integer, Optional<Integer>>() {
-                @Override
-                public Optional<Integer> apply(Integer input) {
-                    return getMaxSizeOfOversizedItems(mailboxAnnotations, input);
-                }
-            }).get();
+            return maxsize.transform(value -> getMaxSizeOfOversizedItems(mailboxAnnotations, value)).get();
         }
         return Optional.absent();
     }
 
     private List<MailboxAnnotation> filterItemsBySize(Responder responder, String mailboxName, List<MailboxAnnotation> mailboxAnnotations, final Optional<Integer> maxsize) {
-        Predicate<MailboxAnnotation> lowerPredicate = new Predicate<MailboxAnnotation>() {
-            @Override
-            public boolean apply(final MailboxAnnotation input) {
-                return maxsize.transform(new Function<Integer, Boolean>() {
-                    @Override
-                    public Boolean apply(Integer maxSizeInput) {
-                        return (input.size() <= maxSizeInput);
-                    }
-                }).or(true);
-            }
-        };
+        Predicate<MailboxAnnotation> lowerPredicate = annotation -> maxsize
+            .transform(maxSizeInput -> (annotation.size() <= maxSizeInput))
+            .or(true);
 
         return FluentIterable.from(mailboxAnnotations).filter(lowerPredicate).toList();
     }
@@ -147,28 +133,12 @@ public class GetAnnotationProcessor extends AbstractMailboxProcessor<GetAnnotati
     }
 
     private Optional<Integer> getMaxSizeOfOversizedItems(List<MailboxAnnotation> mailboxAnnotations, final Integer maxsize) {
-        Predicate<MailboxAnnotation> filterOverSizedAnnotation = new Predicate<MailboxAnnotation>() {
-            @Override
-            public boolean apply(MailboxAnnotation input) {
-                return (input.size() > maxsize);
-            }
-        };
-
-        Function<MailboxAnnotation, Integer> transformToSize = new Function<MailboxAnnotation,Integer>(){
-            public Integer apply(MailboxAnnotation input) {
-                return input.size();
-            }
-        };
+        Predicate<MailboxAnnotation> filterOverSizedAnnotation = annotation -> annotation.size() > maxsize;
 
         ImmutableSortedSet<Integer> overLimitSizes = FluentIterable.from(mailboxAnnotations)
             .filter(filterOverSizedAnnotation)
-            .transform(transformToSize)
-            .toSortedSet(new Comparator<Integer>() {
-                @Override
-                public int compare(Integer annotationSize1, Integer annotationSize2) {
-                    return annotationSize2.compareTo(annotationSize1);
-                }
-            });
+            .transform(MailboxAnnotation::size)
+            .toSortedSet(Comparator.reverseOrder());
 
         if (overLimitSizes.isEmpty()) {
             return Optional.absent();

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index 8d005d6..e147a47 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -54,7 +54,6 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
-import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -137,34 +136,25 @@ public class SelectedMailboxImplTest {
     }
 
     private Answer<Iterator<MessageUid>> delayedSearchAnswer() {
-        return new Answer<Iterator<MessageUid>>() {
-            @Override
-            public Iterator<MessageUid> answer(InvocationOnMock invocation) throws Throwable {
-                Thread.sleep(1000);
-                return ImmutableList.of(MessageUid.of(1), MessageUid.of(3)).iterator();
-            }
+        return invocation -> {
+            Thread.sleep(1000);
+            return ImmutableList.of(MessageUid.of(1), MessageUid.of(3)).iterator();
         };
     }
 
     private Answer<Iterator<MessageUid>> generateEmitEventAnswer(final AtomicInteger success) {
-        return new Answer<Iterator<MessageUid>>() {
-            @Override
-            public Iterator<MessageUid> answer(InvocationOnMock invocation) throws Throwable {
-                Object[] args = invocation.getArguments();
-                final MailboxListener mailboxListener = (MailboxListener) args[1];
-                executorService.submit(new Runnable() {
-                    @Override
-                    public void run() {
-                        try {
-                            emitEvent(mailboxListener);
-                            success.incrementAndGet();
-                        } catch (Exception e) {
-                            LOGGER.error("Error while processing event on a concurrent thread", e);
-                        }
-                    }
-                });
-                return null;
-            }
+        return invocation -> {
+            Object[] args = invocation.getArguments();
+            final MailboxListener mailboxListener = (MailboxListener) args[1];
+            executorService.submit(() -> {
+                try {
+                    emitEvent(mailboxListener);
+                    success.incrementAndGet();
+                } catch (Exception e) {
+                    LOGGER.error("Error while processing event on a concurrent thread", e);
+                }
+            });
+            return null;
         };
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 ae81f2b..79cf756 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
@@ -373,14 +373,11 @@ public class UidMsnConverterTest {
 
         int threadCount = 2;
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, initialCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    if (threadNumber == 0) {
-                        testee.remove(MessageUid.of(step + 1));
-                    } else {
-                        testee.addUid(MessageUid.of(initialCount + step + 1));
-                    }
+            (threadNumber, step) -> {
+                if (threadNumber == 0) {
+                    testee.remove(MessageUid.of(step + 1));
+                } else {
+                    testee.addUid(MessageUid.of(initialCount + step + 1));
                 }
             });
         concurrentTestRunner.run();
@@ -400,12 +397,7 @@ public class UidMsnConverterTest {
         int threadCount = 2;
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    testee.addUid(MessageUid.of((threadNumber * operationCount) + (step + 1)));
-                }
-            });
+            (threadNumber, step) -> testee.addUid(MessageUid.of((threadNumber * operationCount) + (step + 1))));
         concurrentTestRunner.run();
         concurrentTestRunner.awaitTermination(10, TimeUnit.SECONDS);
 
@@ -426,12 +418,7 @@ public class UidMsnConverterTest {
         }
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    testee.remove(MessageUid.of((threadNumber * operationCount) + (step + 1)));
-                }
-            });
+            (threadNumber, step) -> testee.remove(MessageUid.of((threadNumber * operationCount) + (step + 1))));
         concurrentTestRunner.run();
         concurrentTestRunner.awaitTermination(10, TimeUnit.SECONDS);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java b/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
index f2b8679..c0b8d3f 100644
--- a/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
+++ b/protocols/managesieve/src/main/java/org/apache/james/managesieve/core/CoreProcessor.java
@@ -20,13 +20,14 @@
 
 package org.apache.james.managesieve.core;
 
-import com.google.common.base.Function;
-import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.inject.Inject;
+
 import org.apache.commons.io.IOUtils;
 import org.apache.james.managesieve.api.AuthenticationException;
 import org.apache.james.managesieve.api.AuthenticationProcessor;
@@ -39,7 +40,6 @@ import org.apache.james.managesieve.api.SyntaxException;
 import org.apache.james.managesieve.api.UnknownSaslMechanism;
 import org.apache.james.managesieve.api.commands.CoreCommands;
 import org.apache.james.managesieve.util.ParserUtils;
-import org.apache.james.sieverepository.api.ScriptSummary;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.sieverepository.api.exception.DuplicateException;
 import org.apache.james.sieverepository.api.exception.IsActiveException;
@@ -49,12 +49,12 @@ import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
 import org.apache.james.sieverepository.api.exception.StorageException;
 import org.apache.james.user.api.UsersRepository;
 
-import java.io.IOException;
-import javax.inject.Inject;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.google.common.base.Joiner;
+import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 
 public class CoreProcessor implements CoreCommands {
 
@@ -75,7 +75,7 @@ public class CoreProcessor implements CoreCommands {
         this.sieveRepository = repository;
         this.parser = parser;
         this.capabilitiesBase = precomputedCapabilitiesBase(parser);
-        this.authenticationProcessorMap = new HashMap<SupportedMechanism, AuthenticationProcessor>();
+        this.authenticationProcessorMap = new HashMap<>();
         this.authenticationProcessorMap.put(SupportedMechanism.PLAIN, new PlainAuthenticationProcessor(usersRepository));
     }
 
@@ -91,11 +91,7 @@ public class CoreProcessor implements CoreCommands {
 
     private String convertCapabilityMapToString(Map<Capabilities, String> capabilitiesStringMap) {
         return Joiner.on("\r\n").join(
-            Iterables.transform(capabilitiesStringMap.entrySet(), new Function<Map.Entry<Capabilities,String>, String>() {
-                public String apply(Map.Entry<Capabilities, String> capabilitiesStringEntry) {
-                    return computeCapabilityEntryString(capabilitiesStringEntry);
-                }
-            }));
+            Iterables.transform(capabilitiesStringMap.entrySet(), this::computeCapabilityEntryString));
     }
 
     private Map<Capabilities, String> computeCapabilityMap(Session session) {
@@ -113,21 +109,15 @@ public class CoreProcessor implements CoreCommands {
 
     @Override
     public String checkScript(final Session session, final String content) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException {
-                authenticationCheck(session);
-                return manageWarnings(parser.parse(content));
-            }
+        return handleCommandExecution(() -> {
+            authenticationCheck(session);
+            return manageWarnings(parser.parse(content));
         }, session);
     }
 
     private String manageWarnings(List<String> warnings) {
         if (!warnings.isEmpty()) {
-            return "OK (WARNINGS) " + Joiner.on(' ').join(Iterables.transform(warnings, new Function<String, String>() {
-                public String apply(String s) {
-                    return '\"' + s + '"';
-                }
-            }));
+            return "OK (WARNINGS) " + Joiner.on(' ').join(Iterables.transform(warnings, s -> '\"' + s + '"'));
         } else {
             return "OK";
         }
@@ -135,55 +125,42 @@ public class CoreProcessor implements CoreCommands {
 
     @Override
     public String deleteScript(final Session session, final String name) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException {
-                authenticationCheck(session);
-                sieveRepository.deleteScript(session.getUser(), name);
-                return "OK";
-            }
+        return handleCommandExecution(() -> {
+            authenticationCheck(session);
+            sieveRepository.deleteScript(session.getUser(), name);
+            return "OK";
         }, session);
     }
 
     @Override
 
     public String getScript(final Session session, final String name) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException, IOException {
-                authenticationCheck(session);
-                String scriptContent = IOUtils.toString(sieveRepository.getScript(session.getUser(), name));
-                return "{" + scriptContent.length() + "}" + "\r\n" + scriptContent + "\r\nOK";
-            }
+        return handleCommandExecution(() -> {
+            authenticationCheck(session);
+            String scriptContent = IOUtils.toString(sieveRepository.getScript(session.getUser(), name));
+            return "{" + scriptContent.length() + "}" + "\r\n" + scriptContent + "\r\nOK";
         }, session);
     }
 
     @Override
     public String haveSpace(final Session session, final String name, final long size) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException {
-                authenticationCheck(session);
-                sieveRepository.haveSpace(session.getUser(), name, size);
-                return "OK";
-            }
+        return handleCommandExecution(() -> {
+            authenticationCheck(session);
+            sieveRepository.haveSpace(session.getUser(), name, size);
+            return "OK";
         }, session);
     }
 
     @Override
     public String listScripts(final Session session) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException {
-                return listScriptsInternals(session);
-            }
-        }, session);
+        return handleCommandExecution(() -> listScriptsInternals(session), session);
     }
 
     private String listScriptsInternals(Session session) throws AuthenticationRequiredException, StorageException {
         authenticationCheck(session);
         String list = Joiner.on("\r\n").join(
-            Iterables.transform(sieveRepository.listScripts(session.getUser()), new Function<ScriptSummary, String>() {
-                public String apply(ScriptSummary scriptSummary) {
-                    return '"' + scriptSummary.getName() + '"' + (scriptSummary.isActive() ? " ACTIVE" : "");
-                }
-            }));
+            Iterables.transform(sieveRepository.listScripts(session.getUser()),
+                scriptSummary -> '"' + scriptSummary.getName() + '"' + (scriptSummary.isActive() ? " ACTIVE" : "")));
         if (Strings.isNullOrEmpty(list)) {
             return "OK";
         } else {
@@ -193,34 +170,28 @@ public class CoreProcessor implements CoreCommands {
 
     @Override
     public String putScript(final Session session, final String name, final String content) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException {
-                authenticationCheck(session);
-                sieveRepository.putScript(session.getUser(), name, content);
-                return manageWarnings(parser.parse(content));
-            }
+        return handleCommandExecution(() -> {
+            authenticationCheck(session);
+            sieveRepository.putScript(session.getUser(), name, content);
+            return manageWarnings(parser.parse(content));
         }, session);
     }
 
     @Override
     public String renameScript(final Session session, final String oldName, final String newName) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException {
-                authenticationCheck(session);
-                sieveRepository.renameScript(session.getUser(), oldName, newName);
-                return "OK";
-            }
+        return handleCommandExecution(() -> {
+            authenticationCheck(session);
+            sieveRepository.renameScript(session.getUser(), oldName, newName);
+            return "OK";
         }, session);
     }
 
     @Override
     public String setActive(final Session session, final String name) {
-        return handleCommandExecution(new CommandWrapper() {
-            public String execute() throws ManageSieveException, SieveRepositoryException {
-                authenticationCheck(session);
-                sieveRepository.setActive(session.getUser(), name);
-                return "OK";
-            }
+        return handleCommandExecution(() -> {
+            authenticationCheck(session);
+            sieveRepository.setActive(session.getUser(), name);
+            return "OK";
         }, session);
     }
 
@@ -362,11 +333,7 @@ public class CoreProcessor implements CoreCommands {
         return Joiner.on(' ')
             .join(Lists.transform(
                 Arrays.asList(SupportedMechanism.values()),
-                new Function<SupportedMechanism, String>() {
-                    public String apply(SupportedMechanism supportedMechanism) {
-                        return supportedMechanism.toString();
-                    }
-                }));
+                Enum::toString));
     }
 
     private String sanitizeString(String message) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 cadf9c5..268a9c1 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
@@ -30,7 +30,6 @@ 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.Predicate;
 import com.google.common.base.Splitter;
 import com.google.common.collect.FluentIterable;
 
@@ -69,20 +68,12 @@ public class AllButStartTlsDelimiterChannelHandler extends DelimiterBasedFrameDe
     }
 
     private boolean multiPartsAndOneStartTls(List<String> parts) {
-        return FluentIterable.from(parts).anyMatch(new Predicate<String>() {
-            @Override
-            public boolean apply(String line) {
-                return line.startsWith(STARTTLS);
-            }
-        }) && parts.size() > 1;
+        return FluentIterable.from(parts)
+            .anyMatch(line -> line.startsWith(STARTTLS)) && parts.size() > 1;
     }
 
     private boolean hasInvalidStartTlsPart(List<String> parts) {
-        return FluentIterable.from(parts).anyMatch(new Predicate<String>() {
-            @Override
-            public boolean apply(String line) {
-                return line.startsWith(STARTTLS) && !line.endsWith(STARTTLS);
-            }
-        });
+        return FluentIterable.from(parts)
+            .anyMatch(line -> line.startsWith(STARTTLS) && !line.endsWith(STARTTLS));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
index 740b796..af4cac2 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
@@ -26,8 +26,8 @@ import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationException;
 import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -41,24 +41,21 @@ public class ReceivedDataLineFilter extends AbstractAddHeadersFilter {
     private static final String ESMTPA = "ESMTPA";
     private static final String ESMTP = "ESMTP";
     
-    private static final ThreadLocal<DateFormat> DATEFORMAT = new ThreadLocal<DateFormat>() {
-        @Override
-        protected DateFormat initialValue() {
-            // See RFC822 for the format
-            return new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z (zzz)", Locale.US);
-        }
-    };
-
-    @Override
-    public void init(Configuration config) throws ConfigurationException {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-
+    private static final ThreadLocal<DateFormat> DATEFORMAT = ThreadLocal.withInitial(() -> {
+        // See RFC822 for the format
+        return new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z (zzz)", Locale.US);
+    });
+
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+
     /**
      * Return the service type which will be used in the Received headers.
      * 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
index b321877..aca46ff 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
@@ -106,12 +106,8 @@ public abstract class AbstractSMTPServerTest {
             final String mailContent = CharStreams.toString(new InputStreamReader(ClassLoader.getSystemResourceAsStream("a50.eml"), Charsets.US_ASCII));
             int threadCount = 4;
             int updateCount = 1;
-            assertThat(new ConcurrentTestRunner(threadCount, updateCount, new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    send(finalServer, bindedAddress, mailContent);
-                }
-            }).run()
+            assertThat(new ConcurrentTestRunner(threadCount, updateCount,
+                (threadNumber, step) -> send(finalServer, bindedAddress, mailContent)).run()
                 .awaitTermination(1, TimeUnit.MINUTES))
                 .isTrue();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
index c59798e..232c57b 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
@@ -84,7 +84,7 @@ public class DockerCassandraRule implements GuiceModuleTestRule {
         return Integer.valueOf(
                 Arrays.stream(bindings)
                     .filter(DockerCassandraRule::isBindingToEveryThing)
-                    .map(binding -> binding.getHostPortSpec())
+                    .map(Ports.Binding::getHostPortSpec)
                     .findFirst().get());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
index 8a58b43..2cc679d 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
@@ -34,8 +34,8 @@ import org.apache.http.client.utils.URIBuilder;
 import org.apache.james.jmap.HttpJmapAuthentication;
 import org.apache.james.jmap.api.access.AccessToken;
 import org.apache.james.modules.TestESMetricReporterModule;
-import org.apache.james.utils.JmapGuiceProbe;
 import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.JmapGuiceProbe;
 import org.elasticsearch.client.Client;
 import org.elasticsearch.index.query.QueryBuilders;
 import org.junit.After;
@@ -127,7 +127,7 @@ public class ESReporterTest {
         timer.schedule(timerTask, DELAY_IN_MS, PERIOD_IN_MS);
 
         await().atMost(Duration.TEN_MINUTES)
-            .until(() -> checkMetricRecordedInElasticSearch());
+            .until(this::checkMetricRecordedInElasticSearch);
     }
 
     @Test
@@ -149,7 +149,7 @@ public class ESReporterTest {
         timer.schedule(timerTask, DELAY_IN_MS, PERIOD_IN_MS);
 
         await().atMost(Duration.TEN_MINUTES)
-            .until(() -> checkMetricRecordedInElasticSearch());
+            .until(this::checkMetricRecordedInElasticSearch);
     }
 
     private boolean checkMetricRecordedInElasticSearch() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ConfigurationsPerformer.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ConfigurationsPerformer.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ConfigurationsPerformer.java
index b9ad337..755b65e 100644
--- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ConfigurationsPerformer.java
+++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/ConfigurationsPerformer.java
@@ -47,7 +47,7 @@ public class ConfigurationsPerformer {
 
     private Set<ConfigurationPerformer> processConfigurables() {
         return configurables.get().stream()
-            .flatMap(configurable -> configurationPerformerFor(configurable))
+            .flatMap(this::configurationPerformerFor)
             .distinct()
             .peek(ConfigurationPerformer::initModule)
             .collect(Collectors.toSet());

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java b/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
index 2fd0585..87e602a 100644
--- a/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
+++ b/server/container/guice/jpa-smtp/src/main/java/org/apache/james/JPAJamesServerMain.java
@@ -47,7 +47,7 @@ public class JPAJamesServerMain {
     
     public static final Module jpaServerModule = Modules.combine(
         new JPADataModule(),
-        (binder) -> binder.bind(EntityManagerFactory.class).toProvider(() -> OpenJPAPersistence.getEntityManagerFactory()),
+        (binder) -> binder.bind(EntityManagerFactory.class).toProvider(OpenJPAPersistence::getEntityManagerFactory),
         new ActiveMQQueueModule(),
         new RawPostDequeueDecoratorModule());
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleModule.java b/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleModule.java
index b59b044..bbd2e54 100644
--- a/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleModule.java
+++ b/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleModule.java
@@ -69,20 +69,17 @@ public abstract class LifeCycleModule extends AbstractModule {
         bindListener(typeMatcher, new AbstractMethodTypeListener(annotations) {
             @Override
             protected <I> void hear(final Method method, TypeLiteral<I> parentType, TypeEncounter<I> encounter, final Class<? extends Annotation> annotationType) {
-                encounter.register(new InjectionListener<I>() {
-                    @Override
-                    public void afterInjection(I injectee) {
-                        try {
-                            method.invoke(injectee);
-                        } catch (IllegalArgumentException e) {
-                            // should not happen, anyway...
-                            throw new ProvisionException(format("Method @%s %s requires arguments", annotationType.getName(), method), e);
-                        } catch (IllegalAccessException e) {
-                            throw new ProvisionException(format("Impossible to access to @%s %s on %s", annotationType.getName(), method, injectee), e);
-                        } catch (InvocationTargetException e) {
-                            throw new ProvisionException(
-                                format("An error occurred while invoking @%s %s on %s", annotationType.getName(), method, injectee), e.getCause());
-                        }
+                encounter.register((InjectionListener<I>) injectee -> {
+                    try {
+                        method.invoke(injectee);
+                    } catch (IllegalArgumentException e) {
+                        // should not happen, anyway...
+                        throw new ProvisionException(format("Method @%s %s requires arguments", annotationType.getName(), method), e);
+                    } catch (IllegalAccessException e) {
+                        throw new ProvisionException(String.format("Impossible to access to @%s %s on %s", annotationType.getName(), method, injectee), e);
+                    } catch (InvocationTargetException e) {
+                        throw new ProvisionException(
+                            String.format("An error occurred while invoking @%s %s on %s", annotationType.getName(), method, injectee), e.getCause());
                     }
                 });
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleStageModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleStageModule.java b/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleStageModule.java
index 4f54bdf..380c9da 100644
--- a/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleStageModule.java
+++ b/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/LifeCycleStageModule.java
@@ -96,13 +96,10 @@ public abstract class LifeCycleStageModule extends LifeCycleModule {
             @Override
             protected <I> void hear(final Method stageMethod, final TypeLiteral<I> parentType,
                                     final TypeEncounter<I> encounter, final Class<? extends Annotation> annotationType) {
-                encounter.register(new InjectionListener<I>() {
-                    @Override
-                    public void afterInjection(I injectee) {
-                        Stageable stageable = new StageableMethod(stageMethod, injectee);
-                        stager.register(stageable);
-                        typeMapper.registerType(stageable, parentType);
-                    }
+                encounter.register((InjectionListener<I>) injectee -> {
+                    Stageable stageable = new StageableMethod(stageMethod, injectee);
+                    stager.register(stageable);
+                    typeMapper.registerType(stageable, parentType);
                 });
             }
         });

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/StageableMethod.java
----------------------------------------------------------------------
diff --git a/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/StageableMethod.java b/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/StageableMethod.java
index 764ba14..cafadfe 100644
--- a/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/StageableMethod.java
+++ b/server/container/guice/onami/src/main/java/org/apache/james/onami/lifecycle/StageableMethod.java
@@ -52,12 +52,9 @@ final class StageableMethod extends AbstractBasicStageable<Object> {
     @Override
     public final void stage(StageHandler stageHandler) {
         try {
-            AccessController.doPrivileged(new PrivilegedAction<Void>() {
-                @Override
-                public Void run() {
-                    stageMethod.setAccessible(true);
-                    return null;
-                }
+            AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
+                stageMethod.setAccessible(true);
+                return null;
             });
             stageMethod.invoke(object);
         } catch (InvocationTargetException e) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/guice/onami/src/test/java/org/apache/james/onami/lifecycle/DefaultStagerTestCase.java
----------------------------------------------------------------------
diff --git a/server/container/guice/onami/src/test/java/org/apache/james/onami/lifecycle/DefaultStagerTestCase.java b/server/container/guice/onami/src/test/java/org/apache/james/onami/lifecycle/DefaultStagerTestCase.java
index f80703e..156c5f1 100644
--- a/server/container/guice/onami/src/test/java/org/apache/james/onami/lifecycle/DefaultStagerTestCase.java
+++ b/server/container/guice/onami/src/test/java/org/apache/james/onami/lifecycle/DefaultStagerTestCase.java
@@ -30,17 +30,9 @@ public class DefaultStagerTestCase {
     public void stagerShouldStageObjectsRegisteredWhileStaging() {
         final Stager<TestAnnotationA> stager = new DefaultStager<TestAnnotationA>(TestAnnotationA.class);
         final AtomicBoolean staged = new AtomicBoolean();
-        stager.register(new Stageable() {
-            @Override
-            public void stage(StageHandler stageHandler) {
-                stager.register(new Stageable() {
-                    @Override
-                    public void stage(StageHandler stageHandler) {
-                        staged.set(true);
-                    }
-                });
-            }
-        });
+        stager.register(stageHandler1 -> stager
+            .register(stageHandler2 ->
+                staged.set(true)));
 
         stager.stage();
 
@@ -57,26 +49,14 @@ public class DefaultStagerTestCase {
     public void stagerShouldNotDeadlockWhileStagingObjectChains() {
         final AtomicBoolean staged = new AtomicBoolean();
         final Stager<TestAnnotationA> stager = new DefaultStager<TestAnnotationA>(TestAnnotationA.class);
-        stager.register(new Stageable() {
-            @Override
-            public void stage(StageHandler stageHandler) {
-                Thread thread = new Thread(new Runnable() {
-                    @Override
-                    public void run() {
-                        stager.register(new Stageable() {
-                            @Override
-                            public void stage(StageHandler stageHandler) {
-                                staged.set(true);
-                            }
-                        });
-                    }
-                });
-                thread.start();
-                try {
-                    thread.join();
-                } catch (InterruptedException e) {
-                    Thread.currentThread().interrupt();
-                }
+        stager.register(stageHandler1 -> {
+            Thread thread = new Thread(
+                () -> stager.register(stageHandler2 -> staged.set(true)));
+            thread.start();
+            try {
+                thread.join();
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
             }
         });
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/AbstractOSGIAnnotationBeanPostProcessor.java
----------------------------------------------------------------------
diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/AbstractOSGIAnnotationBeanPostProcessor.java b/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/AbstractOSGIAnnotationBeanPostProcessor.java
index d361dbf..f828ab3 100644
--- a/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/AbstractOSGIAnnotationBeanPostProcessor.java
+++ b/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/AbstractOSGIAnnotationBeanPostProcessor.java
@@ -155,23 +155,21 @@ public abstract class AbstractOSGIAnnotationBeanPostProcessor<A extends Annotati
 
     /* private version of the injector can use */
     private void injectServices(final Object bean, final String beanName) {
-        ReflectionUtils.doWithMethods(bean.getClass(), new ReflectionUtils.MethodCallback() {
-
-            public void doWith(Method method) {
+        ReflectionUtils.doWithMethods(bean.getClass(),
+            method -> {
                 A s = AnnotationUtils.getAnnotation(method, getAnnotation());
                 if (s != null && method.getParameterTypes().length == 1) {
                     try {
                         if (logger.isDebugEnabled())
                             logger.debug("Processing annotation [" + s + "] for [" + bean.getClass().getName() + "."
-                                    + method.getName() + "()] on bean [" + beanName + "]");
+                                + method.getName() + "()] on bean [" + beanName + "]");
                         method.invoke(bean, getServiceImporter(s, method, beanName).getObject());
                     }
                     catch (Exception e) {
                         throw new IllegalArgumentException("Error processing annotation " +s , e);
                     }
                 }
-            }
-        });
+            });
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/util-java8/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java b/server/container/util-java8/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
index 99c320e..5a19d5e 100644
--- a/server/container/util-java8/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
+++ b/server/container/util-java8/src/main/java/org/apache/james/util/mime/MessageContentExtractor.java
@@ -155,7 +155,7 @@ public class MessageContentExtractor {
 
     private Optional<String> getFirstMatchingTextBody(Multipart multipart, String mimeType, Predicate<Entity> condition) {
         Function<TextBody, Optional<String>> textBodyOptionalFunction = Throwing
-            .<TextBody, Optional<String>>function(textBody ->  asString(textBody)).sneakyThrow();
+            .function(this::asString).sneakyThrow();
 
         return multipart.getBodyParts()
             .stream()

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java b/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java
index 89396e0..8934b56 100644
--- a/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java
+++ b/server/container/util/src/test/java/org/apache/james/util/concurrency/ConcurrentTestRunnerTest.java
@@ -31,13 +31,9 @@ import org.junit.rules.ExpectedException;
 
 public class ConcurrentTestRunnerTest {
 
-    public static final ConcurrentTestRunner.BiConsumer EMPTY_BI_CONSUMER = new ConcurrentTestRunner.BiConsumer() {
-        @Override
-        public void consume(int threadNumber, int step) throws Exception {
-
-        }
-    };
+    public static final ConcurrentTestRunner.BiConsumer EMPTY_BI_CONSUMER = (threadNumber, step) -> {};
     public static final int DEFAULT_AWAIT_TIME = 100;
+
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
 
@@ -104,12 +100,7 @@ public class ConcurrentTestRunnerTest {
         final int sleepDelay = 50;
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-            @Override
-            public void consume(int threadNumber, int step) throws Exception {
-                Thread.sleep(sleepDelay);
-            }
-        })
+            (threadNumber, step) -> Thread.sleep(sleepDelay))
             .run();
 
         assertThat(concurrentTestRunner.awaitTermination(sleepDelay / 2, TimeUnit.MILLISECONDS)).isFalse();
@@ -122,12 +113,7 @@ public class ConcurrentTestRunnerTest {
         final ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<String>();
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    queue.add(threadNumber + ":" + step);
-                }
-            })
+            (threadNumber, step) -> queue.add(threadNumber + ":" + step))
             .run();
 
         assertThat(concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, TimeUnit.MILLISECONDS)).isTrue();
@@ -140,11 +126,8 @@ public class ConcurrentTestRunnerTest {
         int threadCount = 2;
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    throw new RuntimeException();
-                }
+            (threadNumber, step) -> {
+                throw new RuntimeException();
             })
             .run();
 
@@ -156,13 +139,7 @@ public class ConcurrentTestRunnerTest {
         int operationCount = 2;
         int threadCount = 2;
 
-        ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-
-                }
-            })
+        ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount, EMPTY_BI_CONSUMER)
             .run();
 
         concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, TimeUnit.MILLISECONDS);
@@ -176,11 +153,8 @@ public class ConcurrentTestRunnerTest {
         int threadCount = 2;
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    throw new RuntimeException();
-                }
+            (threadNumber, step) -> {
+                throw new RuntimeException();
             })
             .run();
         concurrentTestRunner.awaitTermination(DEFAULT_AWAIT_TIME, TimeUnit.MILLISECONDS);
@@ -196,12 +170,9 @@ public class ConcurrentTestRunnerTest {
         final ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<String>();
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    queue.add(threadNumber + ":" + step);
-                    throw new RuntimeException();
-                }
+            (threadNumber, step) -> {
+                queue.add(threadNumber + ":" + step);
+                throw new RuntimeException();
             })
             .run();
 
@@ -216,13 +187,10 @@ public class ConcurrentTestRunnerTest {
         final ConcurrentLinkedQueue<String> queue = new ConcurrentLinkedQueue<String>();
 
         ConcurrentTestRunner concurrentTestRunner = new ConcurrentTestRunner(threadCount, operationCount,
-            new ConcurrentTestRunner.BiConsumer() {
-                @Override
-                public void consume(int threadNumber, int step) throws Exception {
-                    queue.add(threadNumber + ":" + step);
-                    if ((threadNumber + step) % 2 == 0) {
-                        throw new RuntimeException();
-                    }
+            (threadNumber, step) -> {
+                queue.add(threadNumber + ":" + step);
+                if ((threadNumber + step) % 2 == 0) {
+                    throw new RuntimeException();
                 }
             })
             .run();

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java b/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
index 0c76f8d..ed25df5 100644
--- a/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
+++ b/server/data/data-jcr/src/main/java/org/apache/james/mailrepository/jcr/JCRMailRepository.java
@@ -54,6 +54,7 @@ import javax.mail.internet.MimeMessage;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.commons.cnd.CndImporter;
 import org.apache.jackrabbit.util.ISO9075;
 import org.apache.jackrabbit.util.Text;
@@ -522,17 +523,15 @@ public class JCRMailRepository extends AbstractMailRepository implements MailRep
 
         PipedInputStream input = new PipedInputStream();
         final PipedOutputStream output = new PipedOutputStream(input);
-        new Thread() {
-            public void run() {
-                try {
-                    message.writeTo(output);
-                } catch (Exception e) {
-                    LOGGER.info("Exception ignored", e);
-                } finally {
-                    org.apache.commons.io.IOUtils.closeQuietly(output);
-                }
+        new Thread(() -> {
+            try {
+                message.writeTo(output);
+            } catch (Exception e) {
+                LOGGER.info("Exception ignored", e);
+            } finally {
+                IOUtils.closeQuietly(output);
             }
-        }.start();
+        }).start();
         node.setProperty("jcr:data", input);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 8b421e5..bfa0e49 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
@@ -28,7 +28,6 @@ import java.util.StringTokenizer;
 
 import org.apache.james.rrt.lib.Mapping.Type;
 
-import com.google.common.base.Function;
 import com.google.common.base.Joiner;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Objects;
@@ -126,12 +125,7 @@ public class MappingsImpl implements Mappings, Serializable {
     
     @Override
     public Iterable<String> asStrings() {
-        return FluentIterable.from(mappings).transform(new Function<Mapping, String>() {
-            @Override
-            public String apply(Mapping input) {
-                return input.asString();
-            }
-        });
+        return FluentIterable.from(mappings).transform(Mapping::asString);
     }
 
     @Override
@@ -171,12 +165,7 @@ public class MappingsImpl implements Mappings, Serializable {
     }
     
     private Predicate<Mapping> hasType(final Mapping.Type type) {
-        return new Predicate<Mapping>() {
-            @Override
-            public boolean apply(Mapping input) {
-                return input.getType().equals(type);
-            }
-        };
+        return mapping -> mapping.getType().equals(type);
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 4445207..d14e975 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
@@ -29,10 +29,8 @@ import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
 
-import com.google.common.base.Function;
 import com.google.common.base.Objects;
 import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -124,39 +122,26 @@ public class MemoryRecipientRewriteTable extends AbstractRecipientRewriteTable {
             return null;
         }
         Map<String, Collection<Mappings>> userMappingsMap = Multimaps.transformEntries(
-            Multimaps.index(mappingEntries, new Function<InMemoryMappingEntry, String>() {
-                public String apply(InMemoryMappingEntry mappingEntry) {
-                    return mappingEntry.asKey();
-                }
-            }), new Maps.EntryTransformer<String, InMemoryMappingEntry, Mappings>() {
-                public Mappings transformEntry(String s, InMemoryMappingEntry mappingEntry) {
-                    return MappingsImpl.fromRawString(mappingEntry.getMapping());
-                }
-            }).asMap();
-        return Maps.transformEntries(userMappingsMap, new Maps.EntryTransformer<String, Collection<Mappings>, Mappings>() {
-            public Mappings transformEntry(String s, Collection<Mappings> mappingsList) {
+            Multimaps.index(mappingEntries, InMemoryMappingEntry::asKey),
+            (Maps.EntryTransformer<String, InMemoryMappingEntry, Mappings>)
+                (s, mappingEntry) -> MappingsImpl.fromRawString(mappingEntry.getMapping()))
+            .asMap();
+        return Maps.transformEntries(userMappingsMap,
+            (s, mappingsList) -> {
                 Mappings result = MappingsImpl.empty();
                 for (Mappings mappings : mappingsList) {
                     result = result.union(mappings);
                 }
                 return result;
-            }
-        });
+            });
     }
 
     private Optional<Mappings> retrieveMappings(final String user, final String domain) {
         List<String> userEntries = Lists.newArrayList(
             Iterables.transform(
-                Iterables.filter(mappingEntries, new Predicate<InMemoryMappingEntry>() {
-                    public boolean apply(InMemoryMappingEntry mappingEntry) {
-                        return user.equals(mappingEntry.getUser()) && domain.equals(mappingEntry.getDomain());
-                    }
-                }), new Function<InMemoryMappingEntry, String>() {
-                    @Override
-                    public String apply(InMemoryMappingEntry mappingEntry) {
-                        return mappingEntry.getMapping();
-                    }
-                }));
+                Iterables.filter(mappingEntries,
+                    mappingEntry -> user.equals(mappingEntry.getUser()) && domain.equals(mappingEntry.getDomain())),
+                InMemoryMappingEntry::getMapping));
         return MappingsImpl.fromCollection(userEntries).toOptional();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 38ebfd1..613fe3b 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
@@ -19,8 +19,11 @@
 
 package org.apache.james.user.memory;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.james.user.api.UsersRepositoryException;
@@ -28,10 +31,7 @@ import org.apache.james.user.api.model.User;
 import org.apache.james.user.lib.AbstractUsersRepository;
 import org.apache.james.user.lib.model.DefaultUser;
 
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
+import com.google.common.base.Optional;
 
 public class MemoryUsersRepository extends AbstractUsersRepository {
 
@@ -104,11 +104,8 @@ public class MemoryUsersRepository extends AbstractUsersRepository {
     @Override
     public boolean test(String name, final String password) throws UsersRepositoryException {
         return Optional.fromNullable(userByName.get(name))
-            .transform(new Function<User, Boolean>() {
-                public Boolean apply(User user) {
-                    return user.verifyPassword(password);
-                }
-            }).or(false);
+            .transform(user -> user.verifyPassword(password))
+            .or(false);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/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 16085d3..04926ab 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
@@ -85,12 +85,7 @@ public class InMemoryDNSService implements DNSService {
     }
 
     private DNSRecord hostRecord(final String host) {
-        Predicate<? super Entry<String, DNSRecord>> filterByKey = new Predicate<Entry<String, DNSRecord>>() {
-            @Override
-            public boolean apply(Entry<String, DNSRecord> entry) {
-                return entry.getKey().equals(host);
-            }
-        };
+        Predicate<? super Entry<String, DNSRecord>> filterByKey = entry -> entry.getKey().equals(host);
         return getDNSEntry(filterByKey).getValue();
     }
 
@@ -101,12 +96,7 @@ public class InMemoryDNSService implements DNSService {
 
     @Override
     public String getHostName(final InetAddress addr) {
-        Predicate<? super Entry<String, DNSRecord>> filterByValue = new Predicate<Entry<String, DNSRecord>>() {
-            @Override
-            public boolean apply(Entry<String, DNSRecord> entry) {
-                return entry.getValue().contains(addr);
-            }
-        };
+        Predicate<? super Entry<String, DNSRecord>> filterByValue = entry -> entry.getValue().contains(addr);
 
         return getDNSEntry(filterByValue).getKey();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/netmatcher/NetMatcher.java
----------------------------------------------------------------------
diff --git a/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/netmatcher/NetMatcher.java b/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/netmatcher/NetMatcher.java
index fc93531..147a952 100644
--- a/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/netmatcher/NetMatcher.java
+++ b/server/dns-service/dnsservice-library/src/main/java/org/apache/james/dnsservice/library/netmatcher/NetMatcher.java
@@ -159,11 +159,7 @@ public class NetMatcher {
      */
     private void initInetNetworks(String[] nets) {
 
-        networks = new TreeSet<InetNetwork>(new Comparator<InetNetwork>() {
-            public int compare(InetNetwork in1, InetNetwork in2) {
-                return in1.toString().compareTo(in2.toString());
-            }
-        });
+        networks = new TreeSet<>(Comparator.comparing(Object::toString));
 
         final InetNetworkBuilder inetNetwork = new InetNetworkBuilder(dnsServer);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/855a3c87/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailSpooler.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailSpooler.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailSpooler.java
index 896a7db..634d753 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailSpooler.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailSpooler.java
@@ -157,48 +157,44 @@ public class JamesMailSpooler implements Runnable, Disposable, Configurable, Log
             final MailQueueItem queueItem;
             try {
                 queueItem = queue.deQueue();
-                workerService.execute(new Runnable() {
+                workerService.execute(() -> {
+                    TimeMetric timeMetric = metricFactory.timer(SPOOL_PROCESSING);
+                    try {
+                        numActive.incrementAndGet();
+
+                        // increase count
+                        processingActive.incrementAndGet();
+
+                        Mail mail = queueItem.getMail();
+                        if (logger.isDebugEnabled()) {
+                            String debugBuffer = "==== Begin processing mail " + mail.getName() + "====";
+                            logger.debug(debugBuffer);
+                        }
 
-                    @Override
-                    public void run() {
-                        TimeMetric timeMetric = metricFactory.timer(SPOOL_PROCESSING);
                         try {
-                            numActive.incrementAndGet();
-
-                            // increase count
-                            processingActive.incrementAndGet();
-
-                            Mail mail = queueItem.getMail();
-                            if (logger.isDebugEnabled()) {
-                                String debugBuffer = "==== Begin processing mail " + mail.getName() + "====";
-                                logger.debug(debugBuffer);
-                            }
-
-                            try {
-                                mailProcessor.service(mail);
-                                queueItem.done(true);
-                            } catch (Exception e) {
-                                if (active.get() && logger.isErrorEnabled()) {
-                                    logger.error("Exception processing mail while spooling " + e.getMessage(), e);
-                                }
-                                queueItem.done(false);
-
-                            } finally {
-                                LifecycleUtil.dispose(mail);
-                                mail = null;
-                            }
-                        } catch (Throwable e) {
+                            mailProcessor.service(mail);
+                            queueItem.done(true);
+                        } catch (Exception e) {
                             if (active.get() && logger.isErrorEnabled()) {
                                 logger.error("Exception processing mail while spooling " + e.getMessage(), e);
-
                             }
+                            queueItem.done(false);
+
                         } finally {
-                            processingActive.decrementAndGet();
-                            numActive.decrementAndGet();
-                            timeMetric.stopAndPublish();
+                            LifecycleUtil.dispose(mail);
+                            mail = null;
                         }
+                    } catch (Throwable e) {
+                        if (active.get() && logger.isErrorEnabled()) {
+                            logger.error("Exception processing mail while spooling " + e.getMessage(), e);
 
+                        }
+                    } finally {
+                        processingActive.decrementAndGet();
+                        numActive.decrementAndGet();
+                        timeMetric.stopAndPublish();
                     }
+
                 });
             } catch (MailQueueException e1) {
                 if (active.get() && logger.isErrorEnabled()) {


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