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/21 10:34:27 UTC

[1/5] james-project git commit: JAMES-2125 Switch to OpenJDK build image

Repository: james-project
Updated Branches:
  refs/heads/master 8d31fc5a2 -> 49973add0


JAMES-2125 Switch to OpenJDK build image


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

Branch: refs/heads/master
Commit: 395004ce90ddb63252dba5e7064bdfac57eae2b5
Parents: 8d31fc5
Author: benwa <bt...@linagora.com>
Authored: Mon Aug 21 08:28:02 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Aug 21 08:28:02 2017 +0700

----------------------------------------------------------------------
 dockerfiles/compilation/java-8/Dockerfile       | 2 +-
 dockerfiles/run/guice/cassandra-ldap/Dockerfile | 2 +-
 dockerfiles/run/guice/cassandra/Dockerfile      | 2 +-
 dockerfiles/run/guice/jpa/Dockerfile            | 2 +-
 dockerfiles/run/spring/Dockerfile               | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/395004ce/dockerfiles/compilation/java-8/Dockerfile
----------------------------------------------------------------------
diff --git a/dockerfiles/compilation/java-8/Dockerfile b/dockerfiles/compilation/java-8/Dockerfile
index 3685691..d4ed03c 100644
--- a/dockerfiles/compilation/java-8/Dockerfile
+++ b/dockerfiles/compilation/java-8/Dockerfile
@@ -2,7 +2,7 @@
 #
 # VERSION	1.0
 
-FROM java:openjdk-8-jdk
+FROM openjdk:8u141-jdk
 
 ENV GIT_VERSION 1:2.1.4-2.1
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/395004ce/dockerfiles/run/guice/cassandra-ldap/Dockerfile
----------------------------------------------------------------------
diff --git a/dockerfiles/run/guice/cassandra-ldap/Dockerfile b/dockerfiles/run/guice/cassandra-ldap/Dockerfile
index a44f4b7..e87e5f5 100644
--- a/dockerfiles/run/guice/cassandra-ldap/Dockerfile
+++ b/dockerfiles/run/guice/cassandra-ldap/Dockerfile
@@ -2,7 +2,7 @@
 #
 # VERSION	1.0
 
-FROM java:openjdk-8-jdk
+FROM openjdk:8u141-jdk
 
 # Ports that are used
 #

http://git-wip-us.apache.org/repos/asf/james-project/blob/395004ce/dockerfiles/run/guice/cassandra/Dockerfile
----------------------------------------------------------------------
diff --git a/dockerfiles/run/guice/cassandra/Dockerfile b/dockerfiles/run/guice/cassandra/Dockerfile
index 78d58a8..f643626 100644
--- a/dockerfiles/run/guice/cassandra/Dockerfile
+++ b/dockerfiles/run/guice/cassandra/Dockerfile
@@ -2,7 +2,7 @@
 #
 # VERSION	1.0
 
-FROM java:openjdk-8-jdk
+FROM openjdk:8u141-jdk
 
 # Ports that are used
 #

http://git-wip-us.apache.org/repos/asf/james-project/blob/395004ce/dockerfiles/run/guice/jpa/Dockerfile
----------------------------------------------------------------------
diff --git a/dockerfiles/run/guice/jpa/Dockerfile b/dockerfiles/run/guice/jpa/Dockerfile
index 5920e49..d8f3d35 100644
--- a/dockerfiles/run/guice/jpa/Dockerfile
+++ b/dockerfiles/run/guice/jpa/Dockerfile
@@ -2,7 +2,7 @@
 #
 # VERSION	1.0
 
-FROM java:openjdk-8-jdk
+FROM openjdk:8u141-jdk
 
 # Ports that are used
 #

http://git-wip-us.apache.org/repos/asf/james-project/blob/395004ce/dockerfiles/run/spring/Dockerfile
----------------------------------------------------------------------
diff --git a/dockerfiles/run/spring/Dockerfile b/dockerfiles/run/spring/Dockerfile
index 6d22088..1a17e7d 100644
--- a/dockerfiles/run/spring/Dockerfile
+++ b/dockerfiles/run/spring/Dockerfile
@@ -2,7 +2,7 @@
 #
 # VERSION	1.0
 
-FROM java:openjdk-8-jdk
+FROM openjdk:8u141-jdk
 
 # Ports that are used
 #


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


[5/5] james-project git commit: JAMES-2107 Run inspection profile "Can rely on try with resources"

Posted by bt...@apache.org.
JAMES-2107 Run inspection profile "Can rely on try with resources"


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

Branch: refs/heads/master
Commit: 49973add09af64903f9da2936e582a56ad496f47
Parents: 4964e3d
Author: benwa <bt...@linagora.com>
Authored: Fri Aug 18 11:28:28 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Aug 21 17:33:55 2017 +0700

----------------------------------------------------------------------
 .../mail/model/impl/SimpleMailboxMessageTest.java   | 10 ++--------
 .../transport/matchers/AttachmentFileNameIs.java    |  7 ++-----
 .../james/mailrepository/jcr/JCRMailRepository.java | 12 ++----------
 .../file/FilePersistentObjectRepository.java        | 16 +++++-----------
 4 files changed, 11 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/49973add/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
index 91e7c1a..86b6575 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessageTest.java
@@ -78,23 +78,17 @@ public class SimpleMailboxMessageTest {
 
     @Test
     public void testInputStreamSize() throws IOException {
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        try {
+        try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
             byteArrayOutputStream.write(MESSAGE.getFullContent());
             assertThat(byteArrayOutputStream.size()).isEqualTo(MESSAGE_CONTENT.getBytes(MESSAGE_CHARSET).length);
-        } finally {
-            byteArrayOutputStream.close();
         }
     }
 
     @Test
     public void testInputStreamSizeSpecialCharacters() throws IOException {
-        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-        try {
+        try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
             byteArrayOutputStream.write(MESSAGE_SPECIAL_CHAR.getFullContent());
             assertThat(byteArrayOutputStream.size()).isEqualTo(MESSAGE_CONTENT_SPECIAL_CHAR.getBytes(MESSAGE_CHARSET).length);
-        } finally {
-            byteArrayOutputStream.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/49973add/mailet/standard/src/main/java/org/apache/james/transport/matchers/AttachmentFileNameIs.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/AttachmentFileNameIs.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/AttachmentFileNameIs.java
index ea9ec07..b1f0f90 100755
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/AttachmentFileNameIs.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/AttachmentFileNameIs.java
@@ -244,9 +244,8 @@ public class AttachmentFileNameIs extends GenericMatcher {
      *@param part
      */
     protected boolean matchFoundInZip(Part part) throws MessagingException, IOException {
-        ZipInputStream zis = new ZipInputStream(part.getInputStream());
-        
-        try {
+
+        try (ZipInputStream zis = new ZipInputStream(part.getInputStream())) {
             while (true) {
                 ZipEntry zipEntry = zis.getNextEntry();
                 if (zipEntry == null) {
@@ -261,8 +260,6 @@ public class AttachmentFileNameIs extends GenericMatcher {
                 }
             }
             return false;
-        } finally {
-            zis.close();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/49973add/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 8544473..475bc45 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
@@ -486,13 +486,9 @@ public class JCRMailRepository extends AbstractMailRepository implements MailRep
             node = node.getProperty("jcr:content").getNode();
         }
 
-        @SuppressWarnings("deprecation")
-        InputStream stream = node.getProperty("jcr:data").getStream();
-        try {
+        try (@SuppressWarnings("deprecation") InputStream stream = node.getProperty("jcr:data").getStream()) {
             Properties properties = System.getProperties();
             return new MimeMessage(javax.mail.Session.getDefaultInstance(properties), stream);
-        } finally {
-            stream.close();
         }
     }
 
@@ -551,15 +547,11 @@ public class JCRMailRepository extends AbstractMailRepository implements MailRep
             Property property = iterator.nextProperty();
             String name = Text.unescapeIllegalJcrChars(property.getName().substring("jamesattr:".length()));
             if (property.getType() == PropertyType.BINARY) {
-                @SuppressWarnings("deprecation")
-                InputStream input = property.getStream();
-                try {
+                try (@SuppressWarnings("deprecation") InputStream input = property.getStream()) {
                     ObjectInputStream stream = new ObjectInputStream(input);
                     mail.setAttribute(name, (Serializable) stream.readObject());
                 } catch (ClassNotFoundException e) {
                     throw new IOException(e.getMessage());
-                } finally {
-                    input.close();
                 }
             } else {
                 mail.setAttribute(name, property.getString());

http://git-wip-us.apache.org/repos/asf/james-project/blob/49973add/server/data/data-library/src/main/java/org/apache/james/repository/file/FilePersistentObjectRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/repository/file/FilePersistentObjectRepository.java b/server/data/data-library/src/main/java/org/apache/james/repository/file/FilePersistentObjectRepository.java
index 1fe1ba0..8397ac6 100644
--- a/server/data/data-library/src/main/java/org/apache/james/repository/file/FilePersistentObjectRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/repository/file/FilePersistentObjectRepository.java
@@ -103,17 +103,11 @@ public class FilePersistentObjectRepository extends AbstractFileRepository imple
      * java.lang.Object)
      */
     public synchronized void put(String key, Object value) {
-        try {
-            final OutputStream outputStream = getOutputStream(key);
-
-            try {
-                final ObjectOutputStream stream = new ObjectOutputStream(outputStream);
-                stream.writeObject(value);
-                if (DEBUG)
-                    getLogger().debug("storing object " + value + " for key " + key);
-            } finally {
-                outputStream.close();
-            }
+        try (OutputStream outputStream = getOutputStream(key)) {
+            final ObjectOutputStream stream = new ObjectOutputStream(outputStream);
+            stream.writeObject(value);
+            if (DEBUG)
+                getLogger().debug("storing object " + value + " for key " + key);
         } catch (Exception e) {
             throw new RuntimeException("Exception caught while storing an object: " + e);
         }


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


[4/5] james-project git commit: JAMES-2107 Use guava instead of unmodifiable collections

Posted by bt...@apache.org.
JAMES-2107 Use guava instead of unmodifiable collections


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

Branch: refs/heads/master
Commit: 4964e3d99117981f0008074293d3d9c62b26a747
Parents: 5ad47ae
Author: benwa <bt...@linagora.com>
Authored: Fri Aug 18 19:10:54 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Aug 21 17:33:29 2017 +0700

----------------------------------------------------------------------
 .../api/handler/ProtocolHandlerChainImpl.java   |  7 ++--
 .../api/handler/UnknownCommandHandler.java      |  6 ++--
 .../processor/AbstractSelectionProcessor.java   |  6 ++--
 .../imap/processor/AuthenticateProcessor.java   |  5 +--
 .../imap/processor/CapabilityProcessor.java     |  5 +--
 .../james/imap/processor/CompressProcessor.java |  5 +--
 .../imap/processor/DeleteACLProcessor.java      |  5 +--
 .../james/imap/processor/EnableProcessor.java   |  6 ++--
 .../james/imap/processor/ExpungeProcessor.java  |  6 ++--
 .../james/imap/processor/GetACLProcessor.java   |  5 +--
 .../james/imap/processor/GetQuotaProcessor.java |  5 +--
 .../imap/processor/GetQuotaRootProcessor.java   |  5 +--
 .../james/imap/processor/IdleProcessor.java     |  7 ++--
 .../imap/processor/ListRightsProcessor.java     |  5 +--
 .../james/imap/processor/LoginProcessor.java    |  5 +--
 .../james/imap/processor/SearchProcessor.java   |  5 ++-
 .../james/imap/processor/StartTLSProcessor.java |  5 +--
 .../james/imap/processor/XListProcessor.java    |  5 +--
 .../protocols/lmtp/core/LhloCmdHandler.java     |  6 ++--
 .../protocols/netty/AbstractAsyncServer.java    |  4 +--
 .../pop3/core/AbstractApopCmdHandler.java       |  6 ++--
 .../pop3/core/AbstractPassCmdHandler.java       |  7 ++--
 .../protocols/pop3/core/CapaCmdHandler.java     |  9 +++--
 .../protocols/pop3/core/DeleCmdHandler.java     | 30 ++++++++--------
 .../protocols/pop3/core/ListCmdHandler.java     |  6 ++--
 .../protocols/pop3/core/NoopCmdHandler.java     | 32 ++++++++---------
 .../protocols/pop3/core/QuitCmdHandler.java     | 38 ++++++++++----------
 .../protocols/pop3/core/RetrCmdHandler.java     | 30 ++++++++--------
 .../protocols/pop3/core/RsetCmdHandler.java     | 33 +++++++++--------
 .../protocols/pop3/core/StatCmdHandler.java     |  6 ++--
 .../protocols/pop3/core/StlsCmdHandler.java     |  8 ++---
 .../protocols/pop3/core/TopCmdHandler.java      |  9 ++---
 .../protocols/pop3/core/UidlCmdHandler.java     |  8 ++---
 .../protocols/pop3/core/UserCmdHandler.java     |  9 +++--
 .../protocols/smtp/core/DataCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/ExpnCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/HeloCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/HelpCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/MailCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/NoopCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/QuitCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/RcptCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/RsetCmdHandler.java     |  6 ++--
 .../protocols/smtp/core/UnknownCmdHandler.java  |  8 ++---
 .../protocols/smtp/core/VrfyCmdHandler.java     |  6 ++--
 .../smtp/core/esmtp/AuthCmdHandler.java         |  8 +++--
 .../smtp/core/esmtp/EhloCmdHandler.java         |  9 ++---
 .../smtp/core/esmtp/StartTlsCmdHandler.java     |  8 +++--
 .../james/user/jpa/JPAUsersRepository.java      |  5 +--
 .../impl/JamesMailetContext.java                |  8 ++---
 .../pop3server/mailbox/MailboxAdapter.java      |  4 +--
 51 files changed, 231 insertions(+), 218 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerChainImpl.java
----------------------------------------------------------------------
diff --git a/protocols/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerChainImpl.java b/protocols/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerChainImpl.java
index 531e840..8ffd6e5 100644
--- a/protocols/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerChainImpl.java
+++ b/protocols/api/src/main/java/org/apache/james/protocols/api/handler/ProtocolHandlerChainImpl.java
@@ -21,11 +21,12 @@ package org.apache.james.protocols.api.handler;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * {@link AbstractProtocolHandlerChain} which is mutable till the
  * {@link #wireExtensibleHandlers()} is called. After that all operations which
@@ -65,7 +66,7 @@ public class ProtocolHandlerChainImpl extends AbstractProtocolHandlerChain imple
 
     @Override
     protected List<ProtocolHandler> getHandlers() {
-        return Collections.unmodifiableList(handlers);
+        return ImmutableList.copyOf(handlers);
     }
 
     /*
@@ -261,7 +262,7 @@ public class ProtocolHandlerChainImpl extends AbstractProtocolHandlerChain imple
     public List<ProtocolHandler> subList(int fromIndex, int toIndex) {
         List<ProtocolHandler> sList = new ArrayList<>(handlers.subList(fromIndex, toIndex));
         if (readyOnly) {
-            return Collections.unmodifiableList(sList);
+            return ImmutableList.copyOf(sList);
         }
         return sList;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java
----------------------------------------------------------------------
diff --git a/protocols/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java b/protocols/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java
index eb55957..25a00b6 100644
--- a/protocols/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java
+++ b/protocols/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java
@@ -18,12 +18,12 @@
  ****************************************************************/
 package org.apache.james.protocols.api.handler;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.apache.james.protocols.api.ProtocolSession;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * A special {@link CommandHandler} implementation which should be extended by {@link CommandHandler}'s which should get called for unknown command. So this is some kind
  * of a <strong>fallback</strong> {@link CommandHandler} which will get executed if no other matching {@link CommandHandler} could be found for a given command.
@@ -39,7 +39,7 @@ public abstract class UnknownCommandHandler<S extends ProtocolSession> implement
     public final static String COMMAND_IDENTIFIER ="UNKNOWN_CMD";
     
     
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_IDENTIFIER));
+    private static final Collection<String> COMMANDS = ImmutableSet.of(COMMAND_IDENTIFIER);
   
     /*
      * (non-Javadoc)

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
index 18f5e0b..06ca1ab 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
@@ -20,8 +20,6 @@
 package org.apache.james.imap.processor;
 
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -57,12 +55,14 @@ import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 abstract class AbstractSelectionProcessor<M extends AbstractMailboxSelectionRequest> extends AbstractMailboxProcessor<M> implements PermitEnableCapabilityProcessor {
 
     final StatusResponseFactory statusResponseFactory;
 
     private final boolean openReadOnly;
-    private final static List<String> CAPS = Collections.unmodifiableList(Arrays.asList(ImapConstants.SUPPORTS_QRESYNC, ImapConstants.SUPPORTS_CONDSTORE));
+    private final static List<String> CAPS = ImmutableList.of(ImapConstants.SUPPORTS_QRESYNC, ImapConstants.SUPPORTS_CONDSTORE);
 
     
     public AbstractSelectionProcessor(Class<M> acceptableClass, ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory statusResponseFactory, boolean openReadOnly,

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/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 4dabacc..11a27f8 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
@@ -21,7 +21,6 @@ package org.apache.james.imap.processor;
 
 import java.nio.charset.Charset;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.StringTokenizer;
 
@@ -37,6 +36,8 @@ import org.apache.james.imap.message.response.AuthenticateResponse;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * Processor which handles the AUTHENTICATE command. Only authtype of PLAIN is supported ATM.
  * 
@@ -156,7 +157,7 @@ public class AuthenticateProcessor extends AbstractAuthProcessor<AuthenticateReq
         }
         // Support for SASL-IR. See RFC4959
         caps.add("SASL-IR");
-        return Collections.unmodifiableList(caps);
+        return ImmutableList.copyOf(caps);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/CapabilityProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/CapabilityProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/CapabilityProcessor.java
index f9f3048..7c921b4 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/CapabilityProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/CapabilityProcessor.java
@@ -27,7 +27,6 @@ import static org.apache.james.imap.api.ImapConstants.UTF8;
 import static org.apache.james.imap.api.ImapConstants.VERSION;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -43,6 +42,8 @@ import org.apache.james.imap.message.response.CapabilityResponse;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 public class CapabilityProcessor extends AbstractMailboxProcessor<CapabilityRequest> implements CapabilityImplementingProcessor {
 
     private final static List<String> CAPS;
@@ -58,7 +59,7 @@ public class CapabilityProcessor extends AbstractMailboxProcessor<CapabilityRequ
             caps.add(SUPPORTS_I18NLEVEL_1);
         }
         caps.add(SUPPORTS_CONDSTORE);
-        CAPS = Collections.unmodifiableList(caps);
+        CAPS = ImmutableList.copyOf(caps);
     }
     
     private final List<CapabilityImplementingProcessor> capabilities = new ArrayList<>();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/CompressProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/CompressProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/CompressProcessor.java
index c9f7cc8..69d64c0 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/CompressProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/CompressProcessor.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.james.imap.processor;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -30,9 +29,11 @@ import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.message.request.CompressRequest;
 import org.apache.james.imap.processor.base.AbstractChainedProcessor;
 
+import com.google.common.collect.ImmutableList;
+
 public class CompressProcessor extends AbstractChainedProcessor<CompressRequest> implements CapabilityImplementingProcessor {
     private final static String ALGO = "DEFLATE";
-    private final static List<String> CAPA = Collections.unmodifiableList(Arrays.asList(ImapConstants.COMPRESS_COMMAND_NAME + "=" + ALGO));
+    private final static List<String> CAPA = ImmutableList.of(ImapConstants.COMPRESS_COMMAND_NAME + "=" + ALGO);
     private final StatusResponseFactory factory;
     private final static String COMPRESSED = "COMPRESSED";
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
index 742b4dc..f3a7005 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/DeleteACLProcessor.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.imap.processor;
 
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -44,6 +43,8 @@ import org.apache.james.mailbox.model.SimpleMailboxACL.Rfc4314Rights;
 import org.apache.james.mailbox.model.SimpleMailboxACL.SimpleMailboxACLEntryKey;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * DELETEACL Processor.
  * 
@@ -51,7 +52,7 @@ import org.apache.james.metrics.api.MetricFactory;
  */
 public class DeleteACLProcessor extends AbstractMailboxProcessor<DeleteACLRequest> implements CapabilityImplementingProcessor {
 
-    private static final List<String> CAPABILITIES = Collections.singletonList(ImapConstants.SUPPORTS_ACL);
+    private static final List<String> CAPABILITIES = ImmutableList.of(ImapConstants.SUPPORTS_ACL);
 
     public DeleteACLProcessor(ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory factory,
             MetricFactory metricFactory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/EnableProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/EnableProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/EnableProcessor.java
index 50ddb9e..516ae7c 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/EnableProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/EnableProcessor.java
@@ -22,8 +22,6 @@ package org.apache.james.imap.processor;
 import static org.apache.james.imap.api.ImapConstants.SUPPORTS_ENABLE;
 
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -41,11 +39,13 @@ import org.apache.james.imap.processor.PermitEnableCapabilityProcessor.EnableExc
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 public class EnableProcessor extends AbstractMailboxProcessor<EnableRequest> implements CapabilityImplementingProcessor {
 
     private final static List<PermitEnableCapabilityProcessor> capabilities = new ArrayList<>();
     public final static String ENABLED_CAPABILITIES = "ENABLED_CAPABILITIES";
-    private final static List<String> CAPS = Collections.unmodifiableList(Arrays.asList(SUPPORTS_ENABLE));
+    private final static List<String> CAPS = ImmutableList.of(SUPPORTS_ENABLE);
     private final CapabilityProcessor capabilityProcessor;
 
     public EnableProcessor(ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory factory, List<PermitEnableCapabilityProcessor> capabilities,

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java
index bca50c3..0c3a30d 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/ExpungeProcessor.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.imap.processor;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
 
@@ -46,9 +44,11 @@ import org.apache.james.mailbox.exception.MessageRangeException;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 public class ExpungeProcessor extends AbstractMailboxProcessor<ExpungeRequest> implements CapabilityImplementingProcessor {
 
-    private final static List<String> UIDPLUS = Collections.unmodifiableList(Arrays.asList("UIDPLUS"));
+    private final static List<String> UIDPLUS = ImmutableList.of("UIDPLUS");
 
     public ExpungeProcessor(ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory factory,
             MetricFactory metricFactory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/GetACLProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetACLProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetACLProcessor.java
index 25270f5..3fe1fc4 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetACLProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetACLProcessor.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.imap.processor;
 
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -43,13 +42,15 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.SimpleMailboxACL.Rfc4314Rights;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * GETACL Processor.
  * 
  */
 public class GetACLProcessor extends AbstractMailboxProcessor<GetACLRequest> implements CapabilityImplementingProcessor {
 
-    private static final List<String> CAPABILITIES = Collections.singletonList(ImapConstants.SUPPORTS_ACL);
+    private static final List<String> CAPABILITIES = ImmutableList.of(ImapConstants.SUPPORTS_ACL);
 
     public GetACLProcessor(ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory factory,
             MetricFactory metricFactory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
index 2e395b6..6637ecf 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaProcessor.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.imap.processor;
 
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -42,12 +41,14 @@ import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * GETQUOTA processor
  */
 public class GetQuotaProcessor extends AbstractMailboxProcessor<GetQuotaRequest> implements CapabilityImplementingProcessor {
 
-    private static final List<String> CAPABILITIES = Collections.singletonList(ImapConstants.SUPPORTS_QUOTA);
+    private static final List<String> CAPABILITIES = ImmutableList.of(ImapConstants.SUPPORTS_QUOTA);
 
     private final QuotaManager quotaManager;
     private final QuotaRootResolver quotaRootResolver;

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
index b10d359..3864bf6 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/GetQuotaRootProcessor.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.imap.processor;
 
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -44,12 +43,14 @@ import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.quota.QuotaRootResolver;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * GETQUOTAROOT Processor
  */
 public class GetQuotaRootProcessor extends AbstractMailboxProcessor<GetQuotaRootRequest> implements CapabilityImplementingProcessor {
 
-    private static final List<String> CAPABILITIES = Collections.singletonList(ImapConstants.SUPPORTS_QUOTA);
+    private static final List<String> CAPABILITIES = ImmutableList.of(ImapConstants.SUPPORTS_QUOTA);
     private final QuotaRootResolver quotaRootResolver;
     private final QuotaManager quotaManager;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
index e02043a..bdc2688 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/IdleProcessor.java
@@ -20,8 +20,7 @@
 package org.apache.james.imap.processor;
 
 import static org.apache.james.imap.api.ImapConstants.SUPPORTS_IDLE;
-import java.util.Arrays;
-import java.util.Collections;
+
 import java.util.List;
 import java.util.Locale;
 import java.util.concurrent.Executors;
@@ -48,9 +47,11 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 public class IdleProcessor extends AbstractMailboxProcessor<IdleRequest> implements CapabilityImplementingProcessor {
 
-    private final static List<String> CAPS = Collections.unmodifiableList(Arrays.asList(SUPPORTS_IDLE));
+    private final static List<String> CAPS = ImmutableList.of(SUPPORTS_IDLE);
     public final static int DEFAULT_SCHEDULED_POOL_CORE_SIZE = 5;
     private final static String DONE = "DONE";
     private TimeUnit heartbeatIntervalUnit;

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/ListRightsProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/ListRightsProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/ListRightsProcessor.java
index cb8c7a6..c68e559 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/ListRightsProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/ListRightsProcessor.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.imap.processor;
 
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.imap.api.ImapCommand;
@@ -43,6 +42,8 @@ import org.apache.james.mailbox.model.SimpleMailboxACL.Rfc4314Rights;
 import org.apache.james.mailbox.model.SimpleMailboxACL.SimpleMailboxACLEntryKey;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * LISTRIGHTS Processor.
  * 
@@ -50,7 +51,7 @@ import org.apache.james.metrics.api.MetricFactory;
  */
 public class ListRightsProcessor extends AbstractMailboxProcessor<ListRightsRequest> implements CapabilityImplementingProcessor {
 
-    private static final List<String> CAPABILITIES = Collections.singletonList(ImapConstants.SUPPORTS_ACL);
+    private static final List<String> CAPABILITIES = ImmutableList.of(ImapConstants.SUPPORTS_ACL);
 
     public ListRightsProcessor(ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory factory,
             MetricFactory metricFactory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/LoginProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/LoginProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/LoginProcessor.java
index 1131918..cf49b11 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/LoginProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/LoginProcessor.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.imap.processor;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -32,12 +31,14 @@ import org.apache.james.imap.message.request.LoginRequest;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * Processes a <code>LOGIN</code> command.
  */
 public class LoginProcessor extends AbstractAuthProcessor<LoginRequest> implements CapabilityImplementingProcessor{
 
-    private final static List<String> LOGINDISABLED_CAPS = Collections.unmodifiableList(Arrays.asList("LOGINDISABLED"));
+    private final static List<String> LOGINDISABLED_CAPS = ImmutableList.of("LOGINDISABLED");
     public LoginProcessor(ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory factory,
             MetricFactory metricFactory) {
         super(LoginRequest.class, next, mailboxManager, factory, metricFactory);

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
index f102b15..065b2eb 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/SearchProcessor.java
@@ -20,9 +20,7 @@
 package org.apache.james.imap.processor;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
@@ -66,11 +64,12 @@ import org.apache.james.mailbox.model.SearchQuery.DateResolution;
 import org.apache.james.metrics.api.MetricFactory;
 
 import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableList;
 
 public class SearchProcessor extends AbstractMailboxProcessor<SearchRequest> implements CapabilityImplementingProcessor {
 
     protected final static String SEARCH_MODSEQ = "SEARCH_MODSEQ";
-    private final static List<String> CAPS = Collections.unmodifiableList(Arrays.asList("WITHIN", "ESEARCH", "SEARCHRES"));
+    private final static List<String> CAPS = ImmutableList.of("WITHIN", "ESEARCH", "SEARCHRES");
     
     public SearchProcessor(ImapProcessor next, MailboxManager mailboxManager, StatusResponseFactory factory,
             MetricFactory metricFactory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/StartTLSProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/StartTLSProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/StartTLSProcessor.java
index 86e1c80..30c7ff8 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/StartTLSProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/StartTLSProcessor.java
@@ -18,7 +18,6 @@
  ****************************************************************/
 package org.apache.james.imap.processor;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -30,11 +29,13 @@ import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.message.request.StartTLSRequest;
 import org.apache.james.imap.processor.base.AbstractChainedProcessor;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * Processing STARTLS commands
  */
 public class StartTLSProcessor extends AbstractChainedProcessor<StartTLSRequest> implements CapabilityImplementingProcessor {
-    private final static List<String> STARTTLS_CAP = Collections.unmodifiableList(Arrays.asList(ImapConstants.SUPPORTS_STARTTLS));
+    private final static List<String> STARTTLS_CAP = ImmutableList.of(ImapConstants.SUPPORTS_STARTTLS);
     private final StatusResponseFactory factory;
 
     public StartTLSProcessor(ImapProcessor next, StatusResponseFactory factory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/imap/src/main/java/org/apache/james/imap/processor/XListProcessor.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/XListProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/XListProcessor.java
index 316befa..eed6ec2 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/XListProcessor.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/XListProcessor.java
@@ -20,7 +20,6 @@ package org.apache.james.imap.processor;
 
 import static org.apache.james.imap.api.ImapConstants.SUPPORTS_XLIST;
 
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -38,12 +37,14 @@ import org.apache.james.imap.message.response.XListResponse;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.metrics.api.MetricFactory;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * Processes XLIST command
  */
 public class XListProcessor extends ListProcessor implements CapabilityImplementingProcessor {
 
-    private final static List<String> XLIST_CAPS = Collections.unmodifiableList(Arrays.asList(SUPPORTS_XLIST));
+    private final static List<String> XLIST_CAPS = ImmutableList.of(SUPPORTS_XLIST);
     private final MailboxTyper mailboxTyper;
 
     // some interface

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/LhloCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/LhloCmdHandler.java b/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/LhloCmdHandler.java
index 8ac286f..9511368 100644
--- a/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/LhloCmdHandler.java
+++ b/protocols/lmtp/src/main/java/org/apache/james/protocols/lmtp/core/LhloCmdHandler.java
@@ -19,21 +19,21 @@
 
 package org.apache.james.protocols.lmtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import javax.inject.Inject;
 
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.smtp.core.esmtp.EhloCmdHandler;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles the LHLO command
  */
 public class LhloCmdHandler extends EhloCmdHandler {
 
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("LHLO"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("LHLO");
 
     @Inject
     public LhloCmdHandler(MetricFactory metricFactory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
----------------------------------------------------------------------
diff --git a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
index 9dc9b72..9a947d4 100644
--- a/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
+++ b/protocols/netty/src/main/java/org/apache/james/protocols/netty/AbstractAsyncServer.java
@@ -20,8 +20,6 @@ package org.apache.james.protocols.netty;
 
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
@@ -61,7 +59,7 @@ public abstract class AbstractAsyncServer implements ProtocolServer{
     
     public synchronized void setListenAddresses(InetSocketAddress... addresses) {
         if (started) throw new IllegalStateException("Can only be set when the server is not running");
-        this.addresses = Collections.unmodifiableList(Arrays.asList(addresses));
+        this.addresses = ImmutableList.copyOf(addresses);
     }
     
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java
index 5c65c27..f99e965 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractApopCmdHandler.java
@@ -19,9 +19,7 @@
 
 package org.apache.james.protocols.pop3.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.Request;
@@ -30,6 +28,8 @@ import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.Mailbox;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles the APOP command
  * 
@@ -38,7 +38,7 @@ import org.apache.james.protocols.pop3.mailbox.Mailbox;
  */
 public abstract class AbstractApopCmdHandler extends AbstractPassCmdHandler{
 
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("APOP"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("APOP");
     
     @Override
     public Response onCommand(POP3Session session, Request request) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractPassCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractPassCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractPassCmdHandler.java
index 73034f5..cb8fb8e 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractPassCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/AbstractPassCmdHandler.java
@@ -19,10 +19,7 @@
 
 package org.apache.james.protocols.pop3.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-
 
 import org.apache.james.protocols.api.Request;
 import org.apache.james.protocols.api.Response;
@@ -30,11 +27,13 @@ import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.Mailbox;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles PASS commands.
  */
 public abstract class AbstractPassCmdHandler extends RsetCmdHandler {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("PASS"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("PASS");
     private static final Response UNEXPECTED_ERROR = new POP3Response(POP3Response.ERR_RESPONSE, "Unexpected error accessing mailbox").immutable();
     protected static final Response AUTH_FAILED = new POP3Response(POP3Response.ERR_RESPONSE, "Authentication failed.").immutable();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/CapaCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/CapaCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/CapaCmdHandler.java
index 32db448..e4c5efb 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/CapaCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/CapaCmdHandler.java
@@ -20,10 +20,7 @@
 package org.apache.james.protocols.pop3.core;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -37,13 +34,15 @@ import org.apache.james.protocols.api.handler.WiringException;
 import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * This handler is used to handle CAPA commands
  */
 public class CapaCmdHandler implements CommandHandler<POP3Session>, ExtensibleHandler, CapaCapability {    
     private List<CapaCapability> caps;
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("CAPA"));
-    private static final Set<String> CAPS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("PIPELINING")));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("CAPA");
+    private static final Set<String> CAPS = ImmutableSet.of("PIPELINING");
 
     @Override
     public void init(Configuration config) throws ConfigurationException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/DeleCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/DeleCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/DeleCmdHandler.java
index 68a464d..76a706c 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/DeleCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/DeleCmdHandler.java
@@ -19,13 +19,11 @@
 
 package org.apache.james.protocols.pop3.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
-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.api.Request;
 import org.apache.james.protocols.api.Response;
@@ -34,25 +32,27 @@ import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles DELE command
  */
 public class DeleCmdHandler implements CommandHandler<POP3Session> {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("DELE"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("DELE");
 
     private static final Response SYNTAX_ERROR = new POP3Response(POP3Response.ERR_RESPONSE, "Usage: DELE [mail number]").immutable();
     private static final Response DELETED = new POP3Response(POP3Response.OK_RESPONSE, "Message deleted").immutable();
 
-    @Override
-    public void init(Configuration config) throws ConfigurationException {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+
     /**
      * Handler method called upon receipt of a DELE command. This command
      * deletes a particular mail message from the mailbox.

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/ListCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/ListCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/ListCmdHandler.java
index 94b6c71..ea5f3e3 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/ListCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/ListCmdHandler.java
@@ -20,9 +20,7 @@
 package org.apache.james.protocols.pop3.core;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.commons.configuration.Configuration;
@@ -35,12 +33,14 @@ import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles LIST command
  */
 public class ListCmdHandler implements CommandHandler<POP3Session> {
 
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("LIST"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("LIST");
 
     @Override
     public void init(Configuration config) throws ConfigurationException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/NoopCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/NoopCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/NoopCmdHandler.java
index 754f549..2184732 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/NoopCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/NoopCmdHandler.java
@@ -19,35 +19,35 @@
 
 package org.apache.james.protocols.pop3.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
-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.Request;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles NOOP command
  */
 public class NoopCmdHandler implements CommandHandler<POP3Session> {
-
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("NOOP"));
 
-    @Override
-    public void init(Configuration config) throws ConfigurationException {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-
+    private static final Collection<String> COMMANDS = ImmutableSet.of("NOOP");
+
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+
     /**
      * Handler method called upon receipt of a NOOP command. Like all good
      * NOOPs, does nothing much.

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/QuitCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/QuitCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/QuitCmdHandler.java
index d63b1e2..88d70cc 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/QuitCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/QuitCmdHandler.java
@@ -20,30 +20,30 @@
 package org.apache.james.protocols.pop3.core;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
-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.api.Request;
 import org.apache.james.protocols.api.Response;
-import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.Mailbox;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles QUIT command
  */
 public class QuitCmdHandler implements CommandHandler<POP3Session> {
-
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("QUIT"));
+
+    private static final Collection<String> COMMANDS = ImmutableSet.of("QUIT");
     private static final Response SIGN_OFF;
     private static final Response SIGN_OFF_NOT_CLEAN;
-
+
     static {
         POP3Response response = new POP3Response(POP3Response.OK_RESPONSE, "Apache James POP3 Server signing off.");
         response.setEndSession(true);
@@ -53,17 +53,17 @@ public class QuitCmdHandler implements CommandHandler<POP3Session> {
         response.setEndSession(true);
         SIGN_OFF_NOT_CLEAN = response.immutable();
     }
-
-    @Override
-    public void init(Configuration config) throws ConfigurationException {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-
+
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+
     /**
      * Handler method called upon receipt of a QUIT command. This method handles
      * cleanup of the POP3Handler state.

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RetrCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RetrCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RetrCmdHandler.java
index 6969b71..15c1922 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RetrCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RetrCmdHandler.java
@@ -21,13 +21,11 @@ package org.apache.james.protocols.pop3.core;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
-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.api.Request;
 import org.apache.james.protocols.api.Response;
@@ -37,25 +35,27 @@ import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.POP3StreamResponse;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles RETR command
  */
 public class RetrCmdHandler implements CommandHandler<POP3Session> {
 
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("RETR"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("RETR");
     private static final Response SYNTAX_ERROR = new POP3Response(POP3Response.ERR_RESPONSE, "Usage: RETR [mail number]").immutable();
     private static final Response ERROR_MESSAGE_RETRIEVE = new POP3Response(POP3Response.ERR_RESPONSE, "Error while retrieving message.").immutable();
 
-    @Override
-    public void init(Configuration config) throws ConfigurationException {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+
     /**
      * Handler method called upon receipt of a RETR command. This command
      * retrieves a particular mail message from the mailbox.

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RsetCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RsetCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RsetCmdHandler.java
index 369516b..1b62acf 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RsetCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/RsetCmdHandler.java
@@ -21,38 +21,37 @@ package org.apache.james.protocols.pop3.core;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
-
-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.api.Request;
 import org.apache.james.protocols.api.Response;
-import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles RSET command
  */
 public class RsetCmdHandler implements CommandHandler<POP3Session> {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("RSET"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("RSET");
+
+    @Override
+    public void init(Configuration config) throws ConfigurationException {
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
 
-    @Override
-    public void init(Configuration config) throws ConfigurationException {
-
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-
     /**
      * Handler method called upon receipt of a RSET command. Calls stat() to
      * reset the mailbox.

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StatCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StatCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StatCmdHandler.java
index a2e305f..2d9d2fb 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StatCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StatCmdHandler.java
@@ -20,9 +20,7 @@
 package org.apache.james.protocols.pop3.core;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
 import org.apache.commons.configuration.Configuration;
@@ -35,11 +33,13 @@ import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles STAT command
  */
 public class StatCmdHandler implements CommandHandler<POP3Session> {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("STAT"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("STAT");
 
     @Override
     public void init(Configuration config) throws ConfigurationException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StlsCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StlsCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StlsCmdHandler.java
index 6249cc7..8f5a5c2 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StlsCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/StlsCmdHandler.java
@@ -19,10 +19,8 @@
 
 package org.apache.james.protocols.pop3.core;
 
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.commons.configuration.Configuration;
@@ -34,14 +32,16 @@ import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.POP3StartTlsResponse;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handler which offer STARTTLS implementation for POP3. STARTTLS is started
  * with the STSL command
  */
 public class StlsCmdHandler implements CommandHandler<POP3Session>, CapaCapability {
 
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("STLS"));
-    private static final Set<String> CAPS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("STLS")));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("STLS");
+    private static final Set<String> CAPS = ImmutableSet.of("STLS");
 
     private static final Response BEGIN_TLS = new POP3StartTlsResponse(POP3Response.OK_RESPONSE, "Begin TLS negotiation").immutable();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
index f872f31..87cf886 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
@@ -21,10 +21,8 @@ package org.apache.james.protocols.pop3.core;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.NoSuchElementException;
 import java.util.Set;
@@ -37,12 +35,15 @@ import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.POP3StreamResponse;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles TOP command
  */
 public class TopCmdHandler extends RetrCmdHandler implements CapaCapability {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("TOP"));
-    private static final Set<String> CAPS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("TOP")));
+    private static final Collection<String> COMMANDS = ImmutableList.of("TOP");
+    private static final Set<String> CAPS = ImmutableSet.of("TOP");
     
     private static final Response SYNTAX_ERROR = new POP3Response(POP3Response.ERR_RESPONSE, "Usage: TOP [mail number] [Line number]").immutable();
     private static final Response ERROR_MESSAGE_RETR = new POP3Response(POP3Response.ERR_RESPONSE, "Error while retrieving message.").immutable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UidlCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UidlCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UidlCmdHandler.java
index 48abe13..1314399 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UidlCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UidlCmdHandler.java
@@ -20,10 +20,8 @@
 package org.apache.james.protocols.pop3.core;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
@@ -37,12 +35,14 @@ import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles UIDL command
  */
 public class UidlCmdHandler implements CommandHandler<POP3Session>, CapaCapability {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("UIDL"));
-    private static final Set<String> CAPS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("UIDL")));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("UIDL");
+    private static final Set<String> CAPS = ImmutableSet.of("UIDL");
 
     @Override
     public void init(Configuration config) throws ConfigurationException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UserCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UserCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UserCmdHandler.java
index 20a0cea..17183ca 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UserCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/UserCmdHandler.java
@@ -19,10 +19,7 @@
 
 package org.apache.james.protocols.pop3.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.commons.configuration.Configuration;
@@ -33,13 +30,15 @@ import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles USER command
  */
 public class UserCmdHandler implements CommandHandler<POP3Session>, CapaCapability {
 
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("USER"));
-    private static final Set<String> CAPS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("USER")));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("USER");
+    private static final Set<String> CAPS = ImmutableSet.of("USER");
 
     @Override
     public void init(Configuration config) throws ConfigurationException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
index ff63c26..2321750 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
@@ -20,9 +20,7 @@ package org.apache.james.protocols.smtp.core;
 
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -47,6 +45,8 @@ import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 
+import com.google.common.collect.ImmutableSet;
+
 
 /**
   * handles DATA command
@@ -57,7 +57,7 @@ public class DataCmdHandler implements CommandHandler<SMTPSession>, ExtensibleHa
     private static final Response NO_SENDER = new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" No sender specified").immutable();
     private static final Response UNEXPECTED_ARG = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Unexpected argument provided with DATA command").immutable();
     private static final Response DATA_READY = new SMTPResponse(SMTPRetCode.DATA_READY, "Ok Send data ending with <CRLF>.<CRLF>").immutable();
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("DATA"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("DATA");
 
     public static final class DataConsumerLineHandler implements LineHandler<SMTPSession> {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ExpnCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ExpnCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ExpnCmdHandler.java
index 39e26e8..c39f816 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ExpnCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/ExpnCmdHandler.java
@@ -21,9 +21,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
@@ -35,6 +33,8 @@ import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
   * Handles EXPN command
   */
@@ -44,7 +44,7 @@ public class ExpnCmdHandler implements CommandHandler<SMTPSession> {
     /**
      * The name of the command handled by the command handler
      */
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("EXPN"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("EXPN");
     
     /**
      * Handler method called upon receipt of a EXPN command.

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java
index 927335c..54562fc 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java
@@ -19,9 +19,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import javax.inject.Inject;
 
@@ -38,6 +36,8 @@ import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.protocols.smtp.hook.HeloHook;
 import org.apache.james.protocols.smtp.hook.HookResult;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles HELO command
  */
@@ -47,7 +47,7 @@ public class HeloCmdHandler extends AbstractHookableCmdHandler<HeloHook> {
     /**
      * The name of the command handled by the command handler
      */
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_NAME));
+    private static final Collection<String> COMMANDS = ImmutableSet.of(COMMAND_NAME);
 
     private static final Response DOMAIN_REQUIRED =  new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,
             DSNStatus.getStatus(DSNStatus.PERMANENT,

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HelpCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HelpCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HelpCmdHandler.java
index 66e440f..65e4245 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HelpCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/HelpCmdHandler.java
@@ -21,9 +21,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
@@ -35,6 +33,8 @@ import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
   * Handles HELP command
   */
@@ -44,7 +44,7 @@ public class HelpCmdHandler implements CommandHandler<SMTPSession> {
 	/**
      * The name of the command handled by the command handler
      */
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_NAME));
+    private static final Collection<String> COMMANDS = ImmutableSet.of(COMMAND_NAME);
 
     /**
      * handles HELP command

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
index b68897e..d6a9997 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
@@ -19,9 +19,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
@@ -45,11 +43,13 @@ import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.MailHook;
 import org.apache.james.protocols.smtp.hook.MailParametersHook;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles MAIL command
  */
 public class MailCmdHandler extends AbstractHookableCmdHandler<MailHook> {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("MAIL"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("MAIL");
     private static final Response SENDER_ALREADY_SPECIFIED =  new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus
             .getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_OTHER)
             + " Sender already specified").immutable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/NoopCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/NoopCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/NoopCmdHandler.java
index 99e71c4..9523782 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/NoopCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/NoopCmdHandler.java
@@ -21,9 +21,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
@@ -35,6 +33,8 @@ import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
   * Handles NOOP command
   */
@@ -43,7 +43,7 @@ public class NoopCmdHandler implements CommandHandler<SMTPSession> {
     /**
      * The name of the command handled by the command handler
      */
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("NOOP"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("NOOP");
 
     private static final Response NOOP = new SMTPResponse(SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.UNDEFINED_STATUS)+" OK").immutable();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java
index 3a177f7..8816718 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/QuitCmdHandler.java
@@ -19,9 +19,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import javax.inject.Inject;
 
@@ -36,6 +34,8 @@ import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.QuitHook;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles QUIT command
  */
@@ -44,7 +44,7 @@ public class QuitCmdHandler extends AbstractHookableCmdHandler<QuitHook> {
     /**
      * The name of the command handled by the command handler
      */
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("QUIT"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("QUIT");
 
     private static final Response SYNTAX_ERROR;
     static {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
index 5109e5d..c259dd5 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
@@ -20,9 +20,7 @@
 package org.apache.james.protocols.smtp.core;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Locale;
 import java.util.StringTokenizer;
 
@@ -42,6 +40,8 @@ import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.RcptHook;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles RCPT command
  */
@@ -50,7 +50,7 @@ public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> impleme
 
     public static final String CURRENT_RECIPIENT = "CURRENT_RECIPIENT"; // Current
                                                                         // recipient
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("RCPT"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("RCPT");
     private static final Response MAIL_NEEDED = new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_OTHER) + " Need MAIL before RCPT").immutable();
     private static final Response SYNTAX_ERROR_ARGS = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_SYNTAX) + " Usage: RCPT TO:<recipient>").immutable();
     private static final Response SYNTAX_ERROR_DELIVERY = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_SYNTAX) + " Syntax error in parameters or arguments").immutable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RsetCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RsetCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RsetCmdHandler.java
index bcd3750..e74d64a 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RsetCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/RsetCmdHandler.java
@@ -21,9 +21,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
@@ -35,6 +33,8 @@ import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
   * Handles RSET command
   */
@@ -42,7 +42,7 @@ public class RsetCmdHandler implements CommandHandler<SMTPSession> {
     /**
      * The name of the command handled by the command handler
      */
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("RSET"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("RSET");
     private static final Response OK = new SMTPResponse(SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.UNDEFINED_STATUS)+" OK").immutable();
     private static final Response SYNTAX_ERROR = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Unexpected argument provided with RSET command").immutable();
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java
index 1f48a19..d61e25c 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java
@@ -21,9 +21,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import javax.inject.Inject;
 
@@ -31,8 +29,8 @@ import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.protocols.api.ProtocolSession.State;
-import org.apache.james.protocols.api.handler.UnknownCommandHandler;
 import org.apache.james.protocols.api.Response;
+import org.apache.james.protocols.api.handler.UnknownCommandHandler;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -40,6 +38,8 @@ import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.UnknownHook;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
   * Default command handler for handling unknown commands
   */
@@ -48,7 +48,7 @@ public class UnknownCmdHandler extends AbstractHookableCmdHandler<UnknownHook>{
     /**
      * The name of the command handled by the command handler
      */
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(UnknownCommandHandler.COMMAND_IDENTIFIER));
+    private static final Collection<String> COMMANDS = ImmutableSet.of(UnknownCommandHandler.COMMAND_IDENTIFIER);
 
     @Inject
     public UnknownCmdHandler(MetricFactory metricFactory) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/VrfyCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/VrfyCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/VrfyCmdHandler.java
index 831daed..e344038 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/VrfyCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/VrfyCmdHandler.java
@@ -21,9 +21,7 @@
 
 package org.apache.james.protocols.smtp.core;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
@@ -35,12 +33,14 @@ import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 
+import com.google.common.collect.ImmutableSet;
+
 /**
   * Command handler for handling VRFY command
   */
 public class VrfyCmdHandler implements CommandHandler<SMTPSession> {
     
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("VRFY"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("VRFY");
     private static final Response NOT_SUPPORTED = new SMTPResponse(SMTPRetCode.UNIMPLEMENTED_COMMAND, 
             DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SYSTEM_NOT_CAPABLE)+" VRFY is not supported").immutable();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
index 340567d..baedf96 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/AuthCmdHandler.java
@@ -24,7 +24,6 @@ package org.apache.james.protocols.smtp.core.esmtp;
 import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -50,6 +49,9 @@ import org.apache.james.protocols.smtp.hook.HookResultHook;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
 import org.apache.james.protocols.smtp.hook.MailParametersHook;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
 
 /**
  * handles AUTH command
@@ -61,9 +63,9 @@ import org.apache.james.protocols.smtp.hook.MailParametersHook;
  */
 public class AuthCmdHandler
     implements CommandHandler<SMTPSession>, EhloExtension, ExtensibleHandler, MailParametersHook {
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList("AUTH"));
+    private static final Collection<String> COMMANDS = ImmutableSet.of("AUTH");
     private static final String[] MAIL_PARAMS = { "AUTH" };
-    private static final List<String> ESMTP_FEATURES = Collections.unmodifiableList(Arrays.asList("AUTH LOGIN PLAIN", "AUTH=LOGIN PLAIN"));
+    private static final List<String> ESMTP_FEATURES = ImmutableList.of("AUTH LOGIN PLAIN", "AUTH=LOGIN PLAIN");
     
     private static final Response AUTH_ABORTED = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Authentication aborted").immutable();
     private static final Response ALREADY_AUTH = new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" User has previously authenticated. "

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java
index 93561de..4e8a964 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java
@@ -19,9 +19,7 @@
 
 package org.apache.james.protocols.smtp.core.esmtp;
 
-import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
 import javax.inject.Inject;
@@ -39,6 +37,9 @@ import org.apache.james.protocols.smtp.dsn.DSNStatus;
 import org.apache.james.protocols.smtp.hook.HeloHook;
 import org.apache.james.protocols.smtp.hook.HookResult;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles EHLO command
  */
@@ -48,9 +49,9 @@ public class EhloCmdHandler extends AbstractHookableCmdHandler<HeloHook> impleme
      * The name of the command handled by the command handler
      */
     private final static String COMMAND_NAME = "EHLO";
-    private final static Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_NAME));
+    private final static Collection<String> COMMANDS = ImmutableSet.of(COMMAND_NAME);
     // see http://issues.apache.org/jira/browse/JAMES-419
-    private final static List<String> ESMTP_FEATURES = Collections.unmodifiableList(Arrays.asList("PIPELINING", "ENHANCEDSTATUSCODES", "8BITMIME"));
+    private final static List<String> ESMTP_FEATURES = ImmutableList.of("PIPELINING", "ENHANCEDSTATUSCODES", "8BITMIME");
     private static final Response DOMAIN_ADDRESS_REQUIRED = new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Domain address required: " + COMMAND_NAME).immutable();
     
     private List<EhloExtension> ehloExtensions;


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


[2/5] james-project git commit: JAMES-2107 Run inspection profile "collapse catch blocks"

Posted by bt...@apache.org.
JAMES-2107 Run inspection profile "collapse catch blocks"


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

Branch: refs/heads/master
Commit: 5ad47aedfe70b849958b576edf5fd041f607e993
Parents: 395004c
Author: benwa <bt...@linagora.com>
Authored: Fri Aug 18 10:08:59 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Mon Aug 21 17:33:29 2017 +0700

----------------------------------------------------------------------
 .../mailbox/jcr/mail/JCRMessageMapper.java      |  4 +--
 .../mailbox/jpa/mail/JPAMessageMapper.java      |  4 +--
 .../lucene/search/LuceneMessageSearchIndex.java | 13 ++------
 .../james/mailbox/maildir/MaildirFolder.java    |  5 ----
 .../maildir/mail/model/MaildirMessage.java      |  5 +---
 .../james/mailbox/store/MessageResultImpl.java  |  4 +--
 .../apache/james/mailbox/store/ResultUtils.java |  4 +--
 .../mailbox/store/StoreMessageManager.java      |  4 +--
 .../mailbox/store/search/MessageSearches.java   |  4 +--
 .../apache/james/transport/KeyStoreHolder.java  | 12 ++------
 .../apache/james/transport/SMIMEKeyHolder.java  | 10 +------
 .../transport/mailets/SMIMECheckSignature.java  |  5 +---
 .../james/transport/mailets/SMIMEDecrypt.java   |  8 ++---
 .../mailet/DefaultDescriptorsExtractor.java     | 21 +++----------
 .../transport/mailets/ContentReplacer.java      |  5 +---
 .../james/transport/mailets/HeadersToHTTP.java  |  5 +---
 .../james/transport/mailets/LogMessage.java     |  4 +--
 .../james/transport/mailets/OnlyText.java       |  5 +---
 .../james/transport/mailets/ReplaceContent.java | 10 +------
 .../transport/mailets/SerialiseToHTTP.java      |  5 +---
 .../james/transport/mailets/UnwrapText.java     | 23 ++++++---------
 .../james/transport/mailets/WrapText.java       | 20 +++++--------
 .../mpt/imapmailbox/cyrus/host/Docker.java      | 11 ++-----
 .../host/LuceneSearchHostSystem.java            |  4 +--
 .../imap/decode/ImapRequestLineReader.java      | 10 +------
 .../parser/GetAnnotationCommandParser.java      | 21 ++++++-------
 .../imap/decode/parser/SearchCommandParser.java |  5 +---
 .../protocols/pop3/core/TopCmdHandler.java      |  5 +---
 .../java/org/apache/james/core/MailImpl.java    |  5 +---
 .../org/apache/james/core/MimeMessageUtil.java  | 20 +------------
 .../mailbox/MailboxCopierManagement.java        |  8 +----
 .../ProtocolHandlerLoaderBeanFactory.java       |  6 +---
 .../james/util/scanner/SpamAssassinInvoker.java |  4 +--
 .../mailrepository/file/MBoxMailRepository.java |  4 +--
 .../file/SieveFileRepository.java               | 12 ++------
 .../mailrepository/jcr/JCRMailRepository.java   |  8 ++---
 .../mailrepository/jdbc/MessageInputStream.java | 22 +++++++-------
 .../rrt/lib/AbstractRecipientRewriteTable.java  |  5 +---
 .../apache/james/user/lib/util/DigestUtil.java  | 12 ++++----
 .../mailets/RecipientRewriteTableProcessor.java |  8 +----
 .../mailets/jsieve/delivery/SieveExecutor.java  |  8 ++---
 .../transcode/MessageToCoreToMessage.java       | 21 +++++++------
 .../EnhancedMessagingException.java             |  5 +---
 .../lib/mock/MockProtocolHandlerLoader.java     | 10 ++-----
 .../hook/MailboxDeliverToRecipientHandler.java  |  8 +----
 .../smtpserver/fastfail/URIRBLHandler.java      |  4 +--
 .../queue/activemq/ActiveMQMailQueueItem.java   |  4 +--
 .../james/queue/api/mock/MockMailQueue.java     |  7 ++---
 .../apache/james/queue/file/FileMailQueue.java  | 31 +++-----------------
 .../apache/james/queue/jms/JMSMailQueue.java    |  4 +--
 50 files changed, 110 insertions(+), 342 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
index f11520a..e721389 100644
--- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
+++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/JCRMessageMapper.java
@@ -520,9 +520,7 @@ public class JCRMessageMapper extends AbstractMessageMapper implements JCRImapCo
                 membership.merge(messageNode);
             }
             return new SimpleMessageMetaData(membership);
-        } catch (RepositoryException e) {
-            throw new MailboxException("Unable to save message " + message + " in mailbox " + mailbox, e);
-        } catch (IOException e) {
+        } catch (RepositoryException | IOException e) {
             throw new MailboxException("Unable to save message " + message + " in mailbox " + mailbox, e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
index 81fb757..8e59765 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMessageMapper.java
@@ -341,9 +341,7 @@ public class JPAMessageMapper extends JPATransactionalMapper implements MessageM
                 return new SimpleMessageMetaData(persistData);
             }
 
-        } catch (PersistenceException e) {
-            throw new MailboxException("Save of message " + message + " failed in mailbox " + mailbox, e);
-        } catch (ArgumentException e) {
+        } catch (PersistenceException | ArgumentException e) {
             throw new MailboxException("Save of message " + message + " failed in mailbox " + mailbox, e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
----------------------------------------------------------------------
diff --git a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
index bcbc54f..2acaa37 100644
--- a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
+++ b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
@@ -743,15 +743,11 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
         try {
             // parse the message to index headers and body
             parser.parse(membership.getFullContent());
-        } catch (MimeException e) {
+        } catch (MimeException | IOException e) {
             // This should never happen as it was parsed before too without problems.            
             throw new MailboxException("Unable to index content of message", e);
-        } catch (IOException e) {
-            // This should never happen as it was parsed before too without problems.
-            // anyway let us just skip the body and headers in the index
-            throw new MailboxException("Unable to index content of message", e);
         }
-       
+
 
         return doc;
     }
@@ -1264,8 +1260,6 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
         try {
             writer.addDocument(doc);
             writer.addDocument(flagsDoc);
-        } catch (CorruptIndexException e) {
-            throw new MailboxException("Unable to add message to index", e);
         } catch (IOException e) {
             throw new MailboxException("Unable to add message to index", e);
         }
@@ -1390,9 +1384,6 @@ public class LuceneMessageSearchIndex extends ListeningMessageSearchIndex {
         
         try {
             writer.deleteDocuments(query);
-        } catch (CorruptIndexException e) {
-            throw new MailboxException("Unable to delete message from index", e);
-
         } catch (IOException e) {
             throw new MailboxException("Unable to delete message from index", e);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
index 3189e46..a7fc8f7 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/MaildirFolder.java
@@ -21,7 +21,6 @@ package org.apache.james.mailbox.maildir;
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FilenameFilter;
@@ -925,8 +924,6 @@ public class MaildirFolder {
                 try {
                     in = new FileInputStream(f);
                     props.load(in);
-                } catch (FileNotFoundException e) {
-                    throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e);
                 } catch (IOException e) {
                     throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e);
                 }
@@ -970,8 +967,6 @@ public class MaildirFolder {
                     try {
                         out = new FileOutputStream(f);
                         props.store(out, "written by "+ getClass().getName());
-                    } catch (FileNotFoundException e) {
-                        throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e);
                     } catch (IOException e) {
                         throw new MailboxException("Unable to read last ACL from "+ f.getAbsolutePath(), e);
                     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
index f21eafd..514cb70 100644
--- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
+++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java
@@ -139,10 +139,7 @@ public class MaildirMessage implements Message {
                 }
                 propertyBuilder.setTextualLineCount(lines);
             }
-        } catch (IOException e) {
-            // has successfully been parsen when appending, shouldn't give any
-            // problems
-        } catch (MimeException e) {
+        } catch (IOException | MimeException e) {
             // has successfully been parsen when appending, shouldn't give any
             // problems
         } finally {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
index cf75533..72c1586 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java
@@ -337,9 +337,7 @@ public class MessageResultImpl implements MessageResult {
                 } else {
                     mimeDescriptor = new LazyMimeDescriptor(this, message);
                 }
-            } catch (IOException e) {
-                throw new MailboxException("Unable to create the MimeDescriptor", e);
-            } catch (MimeException e) {
+            } catch (IOException | MimeException e) {
                 throw new MailboxException("Unable to create the MimeDescriptor", e);
             }
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
index ad4375c..04cc41d 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/ResultUtils.java
@@ -133,9 +133,7 @@ public class ResultUtils {
             }
             return messageResult;
 
-        } catch (IOException e) {
-            throw new MailboxException("Unable to parse message", e);
-        } catch (MimeException e) {
+        } catch (IOException | MimeException e) {
             throw new MailboxException("Unable to parse message", e);
         }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/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 5d3259e..03d45bd 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
@@ -423,9 +423,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
                 return new ComposedMessageId(mailbox.getMailboxId(), data.getMessageId(), data.getUid());
             }, true);
 
-        } catch (IOException e) {
-            throw new MailboxException("Unable to parse message", e);
-        } catch (MimeException e) {
+        } catch (IOException | MimeException e) {
             throw new MailboxException("Unable to parse message", e);
         } finally {
             IOUtils.closeQuietly(bIn);

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/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 966814a..b2fdd22 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
@@ -212,9 +212,7 @@ public class MessageSearches implements Iterable<SimpleMessageSearchIndex.Search
                 return messageContains(value, message);
             }
             throw new UnsupportedSearchException();
-        } catch (IOException e) {
-            throw new MailboxException("Unable to parse message", e);
-        } catch (MimeException e) {
+        } catch (IOException | MimeException e) {
             throw new MailboxException("Unable to parse message", e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/crypto/src/main/java/org/apache/james/transport/KeyStoreHolder.java
----------------------------------------------------------------------
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/KeyStoreHolder.java b/mailet/crypto/src/main/java/org/apache/james/transport/KeyStoreHolder.java
index c71e51e..be5fc14 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/KeyStoreHolder.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/KeyStoreHolder.java
@@ -87,20 +87,12 @@ public class KeyStoreHolder {
 
         try {
             InitJCE.init();
-        } catch (InstantiationException e) {
-            NoSuchProviderException ex = new NoSuchProviderException("Error during cryptography provider initialization. Has bcprov-jdkxx-yyy.jar been copied in the lib directory or installed in the system?");
-            ex.initCause(e);
-            throw ex;
-        } catch (IllegalAccessException e) {
-            NoSuchProviderException ex = new NoSuchProviderException("Error during cryptography provider initialization. Has bcprov-jdkxx-yyy.jar been copied in the lib directory or installed in the system?");
-            ex.initCause(e);
-            throw ex;
-        } catch (ClassNotFoundException e) {
+        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
             NoSuchProviderException ex = new NoSuchProviderException("Error during cryptography provider initialization. Has bcprov-jdkxx-yyy.jar been copied in the lib directory or installed in the system?");
             ex.initCause(e);
             throw ex;
         }
-        
+
         if (keyStoreType == null) {
             keyStoreType = KeyStore.getDefaultType();
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEKeyHolder.java
----------------------------------------------------------------------
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEKeyHolder.java b/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEKeyHolder.java
index 74ff5dc..388faf6 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEKeyHolder.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/SMIMEKeyHolder.java
@@ -116,15 +116,7 @@ public class SMIMEKeyHolder implements KeyHolder{
         
         try {
             InitJCE.init();
-        } catch (InstantiationException e) {
-            NoSuchProviderException ex = new NoSuchProviderException("Error during cryptography provider initialization. Has bcprov-jdkxx-yyy.jar been copied in the lib directory or installed in the system?");
-            ex.initCause(e);
-            throw ex;
-        } catch (IllegalAccessException e) {
-            NoSuchProviderException ex = new NoSuchProviderException("Error during cryptography provider initialization. Has bcprov-jdkxx-yyy.jar been copied in the lib directory or installed in the system?");
-            ex.initCause(e);
-            throw ex;
-        } catch (ClassNotFoundException e) {
+        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
             NoSuchProviderException ex = new NoSuchProviderException("Error during cryptography provider initialization. Has bcprov-jdkxx-yyy.jar been copied in the lib directory or installed in the system?");
             ex.initCause(e);
             throw ex;

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java
----------------------------------------------------------------------
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java
index f9e5aba..6e1a52a 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMECheckSignature.java
@@ -172,15 +172,12 @@ public class SMIMECheckSignature extends GenericMailet {
             // message to change its state. The message 
             // is considered as not signed and the process will
             // go on.
-        } catch (CMSException e) {
+        } catch (CMSException | SMIMEException e) {
             log("Error during the analysis of the signed message", e);
             signers = null;
         } catch (IOException e) {
             log("IO error during the analysis of the signed message", e);
             signers = null;
-        } catch (SMIMEException e) {
-            log("Error during the analysis of the signed message", e);
-            signers = null;
         } catch (Exception e) {
             log("Generic error occured during the analysis of the message", e);
             signers = null;

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java
----------------------------------------------------------------------
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java
index a6a628a..a3f138e 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/SMIMEDecrypt.java
@@ -99,9 +99,7 @@ public class SMIMEDecrypt extends GenericMailet {
         
         try {
             keyHolder = new SMIMEKeyHolder(privateStoreFile, privateStorePass, keyAlias, keyPass, privateStoreType);
-        } catch (IOException e) {
-            throw new MessagingException("Error loading keystore", e);
-        } catch (GeneralSecurityException e) {
+        } catch (IOException | GeneralSecurityException e) {
             throw new MessagingException("Error loading keystore", e);
         }
 
@@ -111,9 +109,7 @@ public class SMIMEDecrypt extends GenericMailet {
     private X509CertificateHolder from(X509Certificate certificate) throws MessagingException {
         try {
             return new X509CertificateHolder(certificate.getEncoded());
-        } catch (CertificateEncodingException e) {
-            throw new MessagingException("Error during the parsing of the certificate", e);
-        } catch (IOException e) {
+        } catch (CertificateEncodingException | IOException e) {
             throw new MessagingException("Error during the parsing of the certificate", e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
----------------------------------------------------------------------
diff --git a/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java b/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
index 0c7d075..73a7957 100644
--- a/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
+++ b/mailet/mailetdocs-maven-plugin/src/main/java/org/apache/james/mailet/DefaultDescriptorsExtractor.java
@@ -118,9 +118,7 @@ public class DefaultDescriptorsExtractor {
                 logInterfaces(log, klass, allInterfaces);
             }
 
-        } catch (NoClassDefFoundError e) {
-            log.error("NotFound: " + e.getMessage());
-        } catch (ClassNotFoundException e) {
+        } catch (NoClassDefFoundError | ClassNotFoundException e) {
             log.error("NotFound: " + e.getMessage());
         } catch (SecurityException e) {
             log.error("SE: " + e.getMessage());
@@ -175,17 +173,8 @@ public class DefaultDescriptorsExtractor {
             if (info != null && info.length() > 0) {
                 result.setInfo(info);
             }
-        } catch (InstantiationException e) {
-            handleInfoLoadFailure(log, nameOfClass, type, e);
-        } catch (IllegalAccessException e) {
-            handleInfoLoadFailure(log, nameOfClass, type, e);
-        } catch (IllegalArgumentException e) {
-            handleInfoLoadFailure(log, nameOfClass, type, e);
-        } catch (SecurityException e) {
-            handleInfoLoadFailure(log, nameOfClass, type, e);
-        } catch (InvocationTargetException e) {
-            handleInfoLoadFailure(log, nameOfClass, type, e);
-        } catch (NoSuchMethodException e) {
+        } catch (InstantiationException | IllegalAccessException | IllegalArgumentException
+                | InvocationTargetException | SecurityException | NoSuchMethodException e) {
             handleInfoLoadFailure(log, nameOfClass, type, e);
         }
         return result;
@@ -231,9 +220,7 @@ public class DefaultDescriptorsExtractor {
         if (log.isDebugEnabled()) {
             try {
                 log.debug("Constructor(empty): " + klass.getConstructor((Class<?>)null));
-            } catch (SecurityException e) { 
-                log.debug("Cannot introspect empty constructor", e);
-            } catch (NoSuchMethodException e) {
+            } catch (SecurityException | NoSuchMethodException e) {
                 log.debug("Cannot introspect empty constructor", e);
             }
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
index 92fb945..d2ab11b 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ContentReplacer.java
@@ -87,10 +87,7 @@ public class ContentReplacer {
             if (subjectChanged || contentChanged) {
                 mail.getMessage().saveChanges();
             }
-        } catch (MessagingException e) {
-            throw new MailetException("Error in replace", e);
-            
-        } catch (IOException e) {
+        } catch (MessagingException | IOException e) {
             throw new MailetException("Error in replace", e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/HeadersToHTTP.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/HeadersToHTTP.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/HeadersToHTTP.java
index 0057ea0..25434ef 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/HeadersToHTTP.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/HeadersToHTTP.java
@@ -116,12 +116,9 @@ public class HeadersToHTTP extends GenericMailet {
             } else {
                 mail.setState(Mail.GHOST);
             }
-        } catch (javax.mail.MessagingException me) {
+        } catch (MessagingException | IOException me) {
             log(me.getMessage());
             addHeader(mail, false, me.getMessage());
-        } catch (IOException e) {
-            log(e.getMessage());
-            addHeader(mail, false, e.getMessage());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
index ce71916..cfe5517 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/LogMessage.java
@@ -80,9 +80,7 @@ public class LogMessage extends GenericMailet {
             MimeMessage message = mail.getMessage();
             logHeaders(message);
             logBody(message);
-        } catch (MessagingException e) {
-            log("Error logging message.", e);
-        } catch (java.io.IOException e) {
+        } catch (MessagingException | IOException e) {
             log("Error logging message.", e);
         }
         if (!passThrough) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/OnlyText.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/OnlyText.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/OnlyText.java
index 3fc4f53..e26827c 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/OnlyText.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/OnlyText.java
@@ -127,10 +127,7 @@ public class OnlyText extends GenericMailet {
                 setContentFromPart(mail.getMessage(), mail.getMessage(), html2Text((String) mail.getMessage().getContent()), true);
             }
 
-        } catch (IOException e) {
-            throw new MailetException("Failed fetching text part", e);
-
-        } catch (MessagingException e) {
+        } catch (IOException | MessagingException e) {
             throw new MailetException("Failed fetching text part", e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
index 3656522..6da5c79 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/ReplaceContent.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.transport.mailets;
 
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.List;
@@ -126,15 +125,8 @@ public class ReplaceContent extends GenericMailet {
                     .addAllSubjectReplacingUnits(subjectPatternFile())
                     .addAllBodyReplacingUnits(bodyPatternFile())
                     .build();
-        } catch (FileNotFoundException e) {
+        } catch (MailetException | IOException e) {
             throw new MailetException("Failed initialization", e);
-            
-        } catch (MailetException e) {
-            throw new MailetException("Failed initialization", e);
-            
-        } catch (IOException e) {
-            throw new MailetException("Failed initialization", e);
-            
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java
index bc41065..337f490 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/SerialiseToHTTP.java
@@ -124,12 +124,9 @@ public class SerialiseToHTTP extends GenericMailet {
             } else {
                 mail.setState(Mail.GHOST);
             }
-        } catch (javax.mail.MessagingException me) {
+        } catch (MessagingException | IOException me) {
             log(me.getMessage());
             addHeader(mail, false, me.getMessage());
-        } catch (IOException e) {
-            log(e.getMessage());
-            addHeader(mail, false, e.getMessage());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/UnwrapText.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/UnwrapText.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/UnwrapText.java
index 09e84b1..c5d38f6 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/UnwrapText.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/UnwrapText.java
@@ -19,18 +19,18 @@
 
 package org.apache.james.transport.mailets;
 
-import org.apache.mailet.Experimental;
-import org.apache.mailet.base.FlowedMessageUtils;
-import org.apache.mailet.base.GenericMailet;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailetException;
-
-import javax.mail.MessagingException;
-
 import java.io.IOException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.mail.MessagingException;
+
+import org.apache.mailet.Experimental;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailetException;
+import org.apache.mailet.base.FlowedMessageUtils;
+import org.apache.mailet.base.GenericMailet;
+
 /**
  * <p>Remove (best effort to) the hardcoded wrapping from a message.<br>
  * If the text is  "format=flowed" then deflows the text. Otherwise it forces a dewrap of the text.
@@ -87,14 +87,9 @@ public class UnwrapText extends GenericMailet {
                     mail.getMessage().saveChanges();
                 }
             }
-            
-        } catch (MessagingException e) {
-            throw new MailetException("Could not unwrap message", e);
-            
-        } catch (IOException e) {
+        } catch (MessagingException | IOException e) {
             throw new MailetException("Could not unwrap message", e);
         }
-        
     }
     
     public static String unwrap(String text) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mailet/standard/src/main/java/org/apache/james/transport/mailets/WrapText.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/WrapText.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/WrapText.java
index 959440e..d67f02c 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/WrapText.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/WrapText.java
@@ -19,15 +19,15 @@
 
 package org.apache.james.transport.mailets;
 
-import org.apache.mailet.Experimental;
-import org.apache.mailet.base.FlowedMessageUtils;
-import org.apache.mailet.base.GenericMailet;
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailetException;
+import java.io.IOException;
 
 import javax.mail.MessagingException;
 
-import java.io.IOException;
+import org.apache.mailet.Experimental;
+import org.apache.mailet.Mail;
+import org.apache.mailet.MailetException;
+import org.apache.mailet.base.FlowedMessageUtils;
+import org.apache.mailet.base.GenericMailet;
 
 /**
  * Convert a message to format=flowed
@@ -56,16 +56,10 @@ public class WrapText extends GenericMailet {
 
     public void service(Mail mail) throws MailetException {
         // TODO We could even manage the flow when the message is quoted-printable
-        
         try {
             FlowedMessageUtils.flowMessage(mail.getMessage(), optionFlowedDelsp, optionWidth);
-            
-        } catch (MessagingException e) {
-            throw new MailetException("Could not wrap message", e);
-            
-        } catch (IOException e) {
+        } catch (MessagingException | IOException e) {
             throw new MailetException("Could not wrap message", e);
         }
-        
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
index f9dc546..c52fd3d 100644
--- a/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
+++ b/mpt/impl/imap-mailbox/cyrus/src/test/java/org/apache/james/mpt/imapmailbox/cyrus/host/Docker.java
@@ -89,9 +89,7 @@ public class Docker {
         try {
             dockerClient.killContainer(container.id());
             dockerClient.removeContainer(container.id(), true);
-        } catch (DockerException e) {
-            Throwables.propagate(e);
-        } catch (InterruptedException e) {
+        } catch (DockerException | InterruptedException e) {
             Throwables.propagate(e);
         }
     }
@@ -110,12 +108,9 @@ public class Docker {
                                     .ports()
                                     .get(EXPOSED_IMAP_PORT))
                             .hostPort());
-        } catch (NumberFormatException e) {
-            throw Throwables.propagate(e);
-        } catch (DockerException e) {
+        } catch (NumberFormatException | DockerException | InterruptedException e) {
             throw Throwables.propagate(e);
-        } catch (InterruptedException e) {
-            throw Throwables.propagate(e);        }
+        }
     }
     
     public void createUser(ContainerCreation container, String user, String password) throws DockerException, InterruptedException {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
index b5ca051..6bd7221 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
@@ -140,9 +140,7 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
                 new DefaultImapEncoderFactory().buildImapEncoder(),
                 defaultImapProcessorFactory);
 
-        } catch (IOException e) {
-            throw Throwables.propagate(e);
-        } catch (MailboxException e) {
+        } catch (IOException | MailboxException e) {
             throw Throwables.propagate(e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
index 89875bd..57c9420 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/ImapRequestLineReader.java
@@ -28,8 +28,6 @@ import java.nio.charset.Charset;
 import java.nio.charset.CharsetDecoder;
 import java.nio.charset.CoderResult;
 import java.nio.charset.CodingErrorAction;
-import java.nio.charset.MalformedInputException;
-import java.nio.charset.UnmappableCharacterException;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -447,13 +445,7 @@ public abstract class ImapRequestLineReader {
         try {
             return charset.newDecoder().onMalformedInput(CodingErrorAction.REPORT).onUnmappableCharacter(CodingErrorAction.REPORT).decode(buffer).toString();
 
-        } catch (IllegalStateException e) {
-            throw new DecodingException(HumanReadableText.BAD_IO_ENCODING, "Bad character encoding", e);
-        } catch (MalformedInputException e) {
-            throw new DecodingException(HumanReadableText.BAD_IO_ENCODING, "Bad character encoding", e);
-        } catch (UnmappableCharacterException e) {
-            throw new DecodingException(HumanReadableText.BAD_IO_ENCODING, "Bad character encoding", e);
-        } catch (CharacterCodingException e) {
+        } catch (IllegalStateException | CharacterCodingException e) {
             throw new DecodingException(HumanReadableText.BAD_IO_ENCODING, "Bad character encoding", e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
index 052a327..55484db 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/decode/parser/GetAnnotationCommandParser.java
@@ -19,12 +19,6 @@
 
 package org.apache.james.imap.decode.parser;
 
-import com.google.common.base.Optional;
-import org.apache.james.imap.message.request.GetAnnotationRequest;
-import org.apache.james.mailbox.model.MailboxAnnotationKey;
-import com.google.common.base.CharMatcher;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSet.Builder;
 import org.apache.james.imap.api.ImapCommand;
 import org.apache.james.imap.api.ImapConstants;
 import org.apache.james.imap.api.ImapMessage;
@@ -32,9 +26,16 @@ import org.apache.james.imap.api.display.HumanReadableText;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.imap.decode.ImapRequestLineReader;
 import org.apache.james.imap.decode.base.AbstractImapCommandParser;
+import org.apache.james.imap.message.request.GetAnnotationRequest;
 import org.apache.james.imap.message.request.GetAnnotationRequest.Depth;
+import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.protocols.imap.DecodingException;
 
+import com.google.common.base.CharMatcher;
+import com.google.common.base.Optional;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSet.Builder;
+
 public class GetAnnotationCommandParser extends AbstractImapCommandParser {
     private static final CharMatcher ENDOFLINE_PATTERN = CharMatcher.isNot('\n').and(CharMatcher.isNot('\r'));
     private static final  String MAXSIZE = "MAXSIZE";
@@ -50,12 +51,8 @@ public class GetAnnotationCommandParser extends AbstractImapCommandParser {
         throws DecodingException {
         try {
             return buildAnnotationRequest(command, requestReader, tag);
-        } catch (NullPointerException e) {
-            throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, e.getMessage());
-        } catch (IllegalArgumentException e) {
-            throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, e.getMessage());
-        } catch (IllegalStateException e) {
-            throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, e.getMessage());
+        } catch (NullPointerException | IllegalArgumentException | IllegalStateException e) {
+            throw new DecodingException(HumanReadableText.ILLEGAL_ARGUMENTS, e.getMessage(), e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/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 875b2cd..6adc7c2 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
@@ -1021,10 +1021,7 @@ public class SearchCommandParser extends AbstractUidCommandParser {
             }
 
             return new SearchRequest(command, new SearchOperation(finalKey, options), useUids, tag);
-        } catch (IllegalCharsetNameException e) {
-            session.getLog().debug("Unable to decode request", e);
-            return unsupportedCharset(tag, command);
-        } catch (UnsupportedCharsetException e) {
+        } catch (IllegalCharsetNameException | UnsupportedCharsetException e) {
             session.getLog().debug("Unable to decode request", e);
             return unsupportedCharset(tag, command);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
index 1994c7a..f872f31 100644
--- a/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
+++ b/protocols/pop3/src/main/java/org/apache/james/protocols/pop3/core/TopCmdHandler.java
@@ -101,10 +101,7 @@ public class TopCmdHandler extends RetrCmdHandler implements CapaCapability {
                 }
             } catch (IOException ioe) {
                 return ERROR_MESSAGE_RETR;
-            } catch (IndexOutOfBoundsException iob) {
-                StringBuilder exceptionBuffer = new StringBuilder(64).append("Message (").append(num).append(") does not exist.");
-                return new POP3Response(POP3Response.ERR_RESPONSE, exceptionBuffer.toString());
-            } catch (NoSuchElementException iob) {
+            } catch (IndexOutOfBoundsException | NoSuchElementException iob) {
                 StringBuilder exceptionBuffer = new StringBuilder(64).append("Message (").append(num).append(") does not exist.");
                 return new POP3Response(POP3Response.ERR_RESPONSE, exceptionBuffer.toString());
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/container/core/src/main/java/org/apache/james/core/MailImpl.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/core/MailImpl.java b/server/container/core/src/main/java/org/apache/james/core/MailImpl.java
index 857302a..c7ecd83 100644
--- a/server/container/core/src/main/java/org/apache/james/core/MailImpl.java
+++ b/server/container/core/src/main/java/org/apache/james/core/MailImpl.java
@@ -184,10 +184,7 @@ public class MailImpl implements Disposable, Mail {
                 }
                 setAttributesRaw(attribs);
             }
-        } catch (IOException e) {
-            LOGGER.error("Error while deserializing attributes", e);
-            setAttributesRaw(new HashMap<>());
-        } catch (ClassNotFoundException e) {
+        } catch (IOException | ClassNotFoundException e) {
             LOGGER.error("Error while deserializing attributes", e);
             setAttributesRaw(new HashMap<>());
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/container/core/src/main/java/org/apache/james/core/MimeMessageUtil.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/core/MimeMessageUtil.java b/server/container/core/src/main/java/org/apache/james/core/MimeMessageUtil.java
index fc7b8e7..5ee7a49 100644
--- a/server/container/core/src/main/java/org/apache/james/core/MimeMessageUtil.java
+++ b/server/container/core/src/main/java/org/apache/james/core/MimeMessageUtil.java
@@ -134,7 +134,7 @@ public class MimeMessageUtil {
             // raw stream, but see
             bos = MimeUtility.encode(bodyOs, message.getEncoding());
             bis = message.getInputStream();
-        } catch (UnsupportedDataTypeException udte) {
+        } catch (UnsupportedDataTypeException | MessagingException udte) {
             /*
              * If we get an UnsupportedDataTypeException try using the raw input
              * stream as a "best attempt" at rendering a message.
@@ -159,24 +159,6 @@ public class MimeMessageUtil {
             } catch (javax.mail.MessagingException ignored) {
                 throw udte;
             }
-        } catch (javax.mail.MessagingException me) {
-            /*
-             * This could be another kind of MessagingException thrown by
-             * MimeMessage.getInputStream(), such as a
-             * javax.mail.internet.ParseException.
-             * 
-             * The ParseException is precisely one of the reasons why the
-             * getRawInputStream() method exists, so that we can continue to
-             * stream the content, even if we cannot handle it. Again, if we get
-             * an exception, we throw the one that caused us to call
-             * getRawInputStream().
-             */
-            try {
-                bis = message.getRawInputStream();
-                bos = bodyOs;
-            } catch (javax.mail.MessagingException ignored) {
-                throw me;
-            }
         }
 
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxCopierManagement.java
----------------------------------------------------------------------
diff --git a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxCopierManagement.java b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxCopierManagement.java
index 7be2847..f9b02a0 100644
--- a/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxCopierManagement.java
+++ b/server/container/mailbox-adapter/src/main/java/org/apache/james/adapter/mailbox/MailboxCopierManagement.java
@@ -81,13 +81,7 @@ public class MailboxCopierManagement implements MailboxCopierManagementMBean {
             throw new IllegalArgumentException("srcBean and dstBean can not have the same name!");
         try {
             copier.copyMailboxes(resolver.resolveMailboxManager(srcBean), resolver.resolveMailboxManager(dstBean));
-        } catch (MailboxManagerResolverException e) {
-            log.error("An exception occured during the copy process", e);
-            throw new Exception(e.getMessage());
-        } catch (MailboxException e) {
-            log.error("An exception occured during the copy process", e);
-            throw new Exception(e.getMessage());
-        } catch (IOException e) {
+        } catch (MailboxManagerResolverException | MailboxException | IOException e) {
             log.error("An exception occured during the copy process", e);
             throw new Exception(e.getMessage());
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java
----------------------------------------------------------------------
diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java
index 598daef..8770adb 100644
--- a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java
+++ b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/protocols/ProtocolHandlerLoaderBeanFactory.java
@@ -39,11 +39,7 @@ public class ProtocolHandlerLoaderBeanFactory extends AbstractBeanFactory implem
             ProtocolHandler handler =  (ProtocolHandler) getBeanFactory().createBean(c, AutowireCapableBeanFactory.AUTOWIRE_AUTODETECT, true);
             handler.init(config);
             return handler;
-        } catch (ClassNotFoundException e) {
-            throw new LoadingException("Unable to load handler", e);
-        } catch (BeansException e) {
-            throw new LoadingException("Unable to load handler", e);
-        } catch (ConfigurationException e) {
+        } catch (ClassNotFoundException | BeansException | ConfigurationException e) {
             throw new LoadingException("Unable to load handler", e);
         }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/container/util/src/main/java/org/apache/james/util/scanner/SpamAssassinInvoker.java
----------------------------------------------------------------------
diff --git a/server/container/util/src/main/java/org/apache/james/util/scanner/SpamAssassinInvoker.java b/server/container/util/src/main/java/org/apache/james/util/scanner/SpamAssassinInvoker.java
index 6ea131a..bb222ac 100644
--- a/server/container/util/src/main/java/org/apache/james/util/scanner/SpamAssassinInvoker.java
+++ b/server/container/util/src/main/java/org/apache/james/util/scanner/SpamAssassinInvoker.java
@@ -130,9 +130,7 @@ public class SpamAssassinInvoker {
             return false;
         } catch (UnknownHostException e1) {
             throw new MessagingException("Error communicating with spamd. Unknown host: " + spamdHost);
-        } catch (IOException e1) {
-            throw new MessagingException("Error communicating with spamd on " + spamdHost + ":" + spamdPort + " Exception: " + e1);
-        } catch (MessagingException e1) {
+        } catch (IOException | MessagingException e1) {
             throw new MessagingException("Error communicating with spamd on " + spamdHost + ":" + spamdPort + " Exception: " + e1);
         } finally {
             try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
index 39f096b..5f66612 100755
--- a/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/mailrepository/file/MBoxMailRepository.java
@@ -559,9 +559,7 @@ public class MBoxMailRepository implements MailRepository, LogEnabled, Configura
                 fromHeader = "From " + mc.getMessage().getFrom()[0] + " " + dy.format(Calendar.getInstance().getTime());
             }
 
-        } catch (IOException e) {
-            getLogger().error("Unable to parse mime message for " + mboxFile, e);
-        } catch (MessagingException e) {
+        } catch (IOException | MessagingException e) {
             getLogger().error("Unable to parse mime message for " + mboxFile, e);
         }
         // And save only the new stuff to disk

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
index 19274ee..a45ae25 100644
--- a/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
+++ b/server/data/data-file/src/main/java/org/apache/james/sieverepository/file/SieveFileRepository.java
@@ -193,9 +193,7 @@ public class SieveFileRepository implements SieveRepository {
             try {
                 scanner = new Scanner(file, UTF_8);
                 quota = scanner.nextLong();
-            } catch (FileNotFoundException ex) {
-                // no op
-            } catch (NoSuchElementException ex) {
+            } catch (FileNotFoundException | NoSuchElementException ex) {
                 // no op
             } finally {
                 if (null != scanner) {
@@ -398,9 +396,7 @@ public class SieveFileRepository implements SieveRepository {
             try {
                 scanner = new Scanner(file, UTF_8);
                 quota = scanner.nextLong();
-            } catch (FileNotFoundException ex) {
-                // no op
-            } catch (NoSuchElementException ex) {
+            } catch (FileNotFoundException | NoSuchElementException ex) {
                 // no op
             } finally {
                 if (null != scanner) {
@@ -452,9 +448,7 @@ public class SieveFileRepository implements SieveRepository {
             try {
                 scanner = new Scanner(file, UTF_8);
                 quota = scanner.nextLong();
-            } catch (FileNotFoundException ex) {
-                // no op
-            } catch (NoSuchElementException ex) {
+            } catch (FileNotFoundException | NoSuchElementException ex) {
                 // no op
             } finally {
                 if (null != scanner) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/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 dae56e9..8544473 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
@@ -154,9 +154,7 @@ public class JCRMailRepository extends AbstractMailRepository implements MailRep
             } finally {
                 session.logout();
             }
-        } catch (IOException e) {
-            throw new MessagingException("Unable to retrieve message: " + key, e);
-        } catch (RepositoryException e) {
+        } catch (IOException | RepositoryException e) {
             throw new MessagingException("Unable to retrieve message: " + key, e);
         }
     }
@@ -656,9 +654,7 @@ public class JCRMailRepository extends AbstractMailRepository implements MailRep
             } finally {
                 session.logout();
             }
-        } catch (IOException e) {
-            throw new MessagingException("Unable to store message: " + mail.getName(), e);
-        } catch (RepositoryException e) {
+        } catch (IOException | RepositoryException e) {
             throw new MessagingException("Unable to store message: " + mail.getName(), e);
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
index 0c9cccd..acd16de 100644
--- a/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
+++ b/server/data/data-jdbc/src/main/java/org/apache/james/mailrepository/jdbc/MessageInputStream.java
@@ -19,15 +19,6 @@
 
 package org.apache.james.mailrepository.jdbc;
 
-import org.apache.james.core.MimeMessageCopyOnWriteProxy;
-import org.apache.james.core.MimeMessageUtil;
-import org.apache.james.core.MimeMessageWrapper;
-import org.apache.james.repository.api.StreamRepository;
-import org.apache.mailet.Mail;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -36,6 +27,15 @@ import java.io.OutputStream;
 import java.io.PipedInputStream;
 import java.io.PipedOutputStream;
 
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+
+import org.apache.james.core.MimeMessageCopyOnWriteProxy;
+import org.apache.james.core.MimeMessageUtil;
+import org.apache.james.core.MimeMessageWrapper;
+import org.apache.james.repository.api.StreamRepository;
+import org.apache.mailet.Mail;
+
 /**
  * This class provides an inputStream for a Mail object.<br>
  * If the Mail is larger than 4KB it uses Piped streams and a worker thread,
@@ -101,9 +101,7 @@ final class MessageInputStream extends InputStream {
                 public void run() {
                     try {
                         writeStream(mail, out, update);
-                    } catch (IOException e) {
-                        caughtException = e;
-                    } catch (MessagingException e) {
+                    } catch (IOException | MessagingException e) {
                         caughtException = e;
                     }
                 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
index 2621f64..2b8fafa 100644
--- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
+++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
@@ -131,10 +131,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
                     if (target.startsWith(RecipientRewriteTable.REGEX_PREFIX)) {
                         try {
                             target = RecipientRewriteTableUtil.regexMap(new MailAddress(user, domain), target);
-                        } catch (PatternSyntaxException e) {
-                            getLogger().error("Exception during regexMap processing: ", e);
-                        } catch (ParseException e) {
-                            // should never happen
+                        } catch (PatternSyntaxException | ParseException e) {
                             getLogger().error("Exception during regexMap processing: ", e);
                         }
                     } else if (target.startsWith(RecipientRewriteTable.ALIASDOMAIN_PREFIX)) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/data/data-library/src/main/java/org/apache/james/user/lib/util/DigestUtil.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/util/DigestUtil.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/util/DigestUtil.java
index b085f47..cebc918 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/util/DigestUtil.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/util/DigestUtil.java
@@ -19,9 +19,6 @@
 
 package org.apache.james.user.lib.util;
 
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeUtility;
-
 import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -31,6 +28,9 @@ import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Locale;
 
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeUtility;
+
 /**
  * Computes and verifies digests of files and strings
  */
@@ -148,10 +148,8 @@ public class DigestUtil {
             OutputStream encodedStream = MimeUtility.encode(bos, "base64");
             encodedStream.write(digest);
             return bos.toString("iso-8859-1");
-        } catch (IOException ioe) {
-            throw new RuntimeException("Fatal error: " + ioe);
-        } catch (MessagingException me) {
-            throw new RuntimeException("Fatal error: " + me);
+        } catch (IOException | MessagingException e) {
+            throw new RuntimeException("Fatal error: " + e);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
index 0b45833..1fe511a 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java
@@ -116,13 +116,7 @@ public class RecipientRewriteTableProcessor {
                 return new RrtExecutionResult(Optional.of(newMailAddresses), Optional.<List<MailAddress>>absent());
             }
             return origin(recipient);
-        } catch (ErrorMappingException e) {
-            mailetContext.log(LogLevel.INFO, "Error while process mail.", e);
-            return error(recipient);
-        } catch (RecipientRewriteTableException e) {
-            mailetContext.log(LogLevel.INFO, "Error while process mail.", e);
-            return error(recipient);
-        } catch (MessagingException e) {
+        } catch (ErrorMappingException | RecipientRewriteTableException | MessagingException e) {
             mailetContext.log(LogLevel.INFO, "Error while process mail.", e);
             return error(recipient);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
index d33f7d6..f770218 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveExecutor.java
@@ -140,13 +140,9 @@ public class SieveExecutor {
             // This logging operation is potentially costly
             log.debug("Evaluating " + aMailAdapter.toString() + " against \"" + recipient.asPrettyString() + "\"");
             factory.evaluate(aMailAdapter, factory.parse(userSieveInformation.getScriptContent()));
-        } catch (SieveException ex) {
+        } catch (SieveException | ParseException ex) {
             handleFailure(recipient, aMail, ex);
-        }
-        catch (ParseException ex) {
-            handleFailure(recipient, aMail, ex);
-        }
-        catch (TokenMgrError ex) {
+        } catch (TokenMgrError ex) {
             handleFailure(recipient, aMail, new SieveException(ex));
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/transcode/MessageToCoreToMessage.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/transcode/MessageToCoreToMessage.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/transcode/MessageToCoreToMessage.java
index 6eddaa0..f5d2312 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/transcode/MessageToCoreToMessage.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/transcode/MessageToCoreToMessage.java
@@ -20,20 +20,21 @@
 
 package org.apache.james.transport.mailets.managesieve.transcode;
 
-import org.apache.james.managesieve.api.ManageSieveException;
-import org.apache.james.managesieve.api.Session;
-import org.apache.james.managesieve.transcode.ManageSieveProcessor;
-import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Locale;
+import java.util.Scanner;
 
 import javax.mail.Address;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Locale;
-import java.util.Scanner;
+
+import org.apache.james.managesieve.api.ManageSieveException;
+import org.apache.james.managesieve.api.Session;
+import org.apache.james.managesieve.transcode.ManageSieveProcessor;
+import org.apache.james.sieverepository.api.exception.SieveRepositoryException;
 
 public class MessageToCoreToMessage {
     
@@ -144,9 +145,7 @@ public class MessageToCoreToMessage {
     private String retrieveAttachedScript(MimeMessage message) {
         try {
             return getScript(message);
-        } catch (IOException e) {
-            return  "";
-        } catch (MessagingException e) {
+        } catch (IOException | MessagingException e) {
             return  "";
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
index 180a0bf..84d87fc 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remoteDelivery/EnhancedMessagingException.java
@@ -114,10 +114,7 @@ public class EnhancedMessagingException {
         if (hasReturnCode()) {
             try {
                 return Optional.of((InternetAddress) invokeGetter(messagingException, "getAddress"));
-            } catch (ClassCastException cce) {
-            } catch (IllegalArgumentException iae) {
-            } catch (IllegalStateException ise) {
-            }
+            } catch (ClassCastException | IllegalArgumentException | IllegalStateException cce) { }
         }
         return Optional.absent();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/mock/MockProtocolHandlerLoader.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/mock/MockProtocolHandlerLoader.java b/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/mock/MockProtocolHandlerLoader.java
index 9adaf84..02a1316 100644
--- a/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/mock/MockProtocolHandlerLoader.java
+++ b/server/protocols/protocols-library/src/test/java/org/apache/james/protocols/lib/mock/MockProtocolHandlerLoader.java
@@ -71,9 +71,7 @@ public class MockProtocolHandlerLoader implements ProtocolHandlerLoader{
         for (Object aLoaderRegistry : loaderRegistry) {
             try {
                 preDestroy(aLoaderRegistry);
-            } catch (IllegalAccessException e) {
-                e.printStackTrace();
-            } catch (InvocationTargetException e) {
+            } catch (IllegalAccessException | InvocationTargetException e) {
                 e.printStackTrace();
             }
         }
@@ -131,11 +129,7 @@ public class MockProtocolHandlerLoader implements ProtocolHandlerLoader{
                     try {
                         Object[] args = { service };
                         method.invoke(resource, args);
-                    } catch (IllegalAccessException e) {
-                        throw new RuntimeException("Injection failed for object " + resource + " on method " + method + " with resource " + service, e);
-                    } catch (IllegalArgumentException e) {
-                        throw new RuntimeException("Injection failed for object " + resource + " on method " + method + " with resource " + service, e);
-                    } catch (InvocationTargetException e) {
+                    } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
                         throw new RuntimeException("Injection failed for object " + resource + " on method " + method + " with resource " + service, e);
                     }
                 } else {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
index 4645ef8..68d29bc 100644
--- a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
+++ b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
@@ -88,13 +88,7 @@ public class MailboxDeliverToRecipientHandler implements DeliverToRecipientHook
             mailboxManager.endProcessingRequest(mailboxSession);
             result = new HookResult(HookReturnCode.OK, SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.CONTENT_OTHER) + " Message received");
 
-        } catch (IOException e) {
-            session.getLogger().error("Unexpected error handling DATA stream", e);
-            result = new HookResult(HookReturnCode.DENYSOFT, " Temporary error deliver message to " + recipient);
-        } catch (MailboxException e) {
-            session.getLogger().error("Unexpected error handling DATA stream", e);
-            result = new HookResult(HookReturnCode.DENYSOFT, " Temporary error deliver message to " + recipient);
-        } catch (UsersRepositoryException e) {
+        } catch (IOException | MailboxException | UsersRepositoryException e) {
             session.getLogger().error("Unexpected error handling DATA stream", e);
             result = new HookResult(HookReturnCode.DENYSOFT, " Temporary error deliver message to " + recipient);
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/URIRBLHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/URIRBLHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/URIRBLHandler.java
index 241ae12..df5782b 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/URIRBLHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/URIRBLHandler.java
@@ -223,9 +223,7 @@ public class URIRBLHandler implements JamesMessageHook, ProtocolHandler {
                     }
                 }
             }
-        } catch (MessagingException e) {
-            session.getLogger().error(e.getMessage());
-        } catch (IOException e) {
+        } catch (MessagingException | IOException e) {
             session.getLogger().error(e.getMessage());
         }
         return false;

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
index 61a2aa1..da88082 100644
--- a/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
+++ b/server/queue/queue-activemq/src/main/java/org/apache/james/queue/activemq/ActiveMQMailQueueItem.java
@@ -61,9 +61,7 @@ public class ActiveMQMailQueueItem extends JMSMailQueueItem implements ActiveMQS
                 // https://issues.apache.org/activemq/browse/AMQ-1529
                 try {
                     ((ActiveMQBlobMessage) message).deleteFile();
-                } catch (IOException e) {
-                    logger.warn("Unable to delete blob message file for mail {}", getMail().getName());
-                } catch (JMSException e) {
+                } catch (IOException | JMSException e) {
                     logger.warn("Unable to delete blob message file for mail {}", getMail().getName());
                 }
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/queue/queue-api/src/test/java/org/apache/james/queue/api/mock/MockMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/mock/MockMailQueue.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/mock/MockMailQueue.java
index 4f9d3ce..0ec3281 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/mock/MockMailQueue.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/mock/MockMailQueue.java
@@ -90,11 +90,8 @@ public class MockMailQueue implements MailQueue {
             bais = new ByteArrayInputStream(baos.toByteArray());
             return new MailImpl("MockMailCopy" + new Random().nextLong(),
                     mail.getSender(), mail.getRecipients(), bais);
-        } catch (MessagingException ex) {
-            log.error("", ex);
-            throw new RuntimeException(ex);
-        } catch (IOException ex) {
-            log.error("", ex);
+        } catch (MessagingException | IOException ex) {
+            log.error("Exception caught", ex);
             throw new RuntimeException(ex);
         } finally {
             IOUtils.closeQuietly(bais);

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java b/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
index 5251c9e..a870d36 100644
--- a/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
+++ b/server/queue/queue-file/src/main/java/org/apache/james/queue/file/FileMailQueue.java
@@ -20,7 +20,6 @@ package org.apache.james.queue.file;
 
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -133,9 +132,7 @@ public class FileMailQueue implements ManageableMailQueue {
                         }, next - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
                     }
 
-                } catch (ClassNotFoundException e1) {
-                    log.error("Unable to load Mail", e1);
-                } catch (IOException e) {
+                } catch (ClassNotFoundException | IOException e) {
                     log.error("Unable to load Mail", e);
                 } finally {
                     if (oin != null) {
@@ -197,16 +194,8 @@ public class FileMailQueue implements ManageableMailQueue {
             }
 
             //TODO: Think about exception handling in detail
-        } catch (FileNotFoundException e) {
-            throw new MailQueueException("Unable to enqueue mail", e);
-        } catch (IOException e) {
-            throw new MailQueueException("Unable to enqueue mail", e);
-
-        } catch (MessagingException e) {
+        } catch (IOException | MessagingException | InterruptedException e) {
             throw new MailQueueException("Unable to enqueue mail", e);
-        } catch (InterruptedException e) {
-            throw new MailQueueException("Unable to enqueue mail", e);
-
         } finally {
             if (out != null) {
                 try {
@@ -285,15 +274,8 @@ public class FileMailQueue implements ManageableMailQueue {
                 return mailQueueItemDecoratorFactory.decorate(fileMailQueueItem);
 
                 // TODO: Think about exception handling in detail
-            } catch (FileNotFoundException e) {
+            } catch (IOException | ClassNotFoundException | MessagingException e) {
                 throw new MailQueueException("Unable to dequeue", e);
-            } catch (IOException e) {
-                throw new MailQueueException("Unable to dequeue", e);
-            } catch (ClassNotFoundException e) {
-                throw new MailQueueException("Unable to dequeue", e);
-            } catch (MessagingException e) {
-                throw new MailQueueException("Unable to dequeue", e);
-
             } finally {
                 if (oin != null) {
                     try {
@@ -487,12 +469,7 @@ public class FileMailQueue implements ManageableMailQueue {
                                 }
                             };
                             return true;
-                        } catch (FileNotFoundException e) {
-                            log.info("Unable to load mail", e);
-                        } catch (IOException e) {
-                            log.info("Unable to load mail", e);
-
-                        } catch (ClassNotFoundException e) {
+                        } catch (IOException | ClassNotFoundException e) {
                             log.info("Unable to load mail", e);
                         } finally {
                             if (in != null) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/5ad47aed/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index 8cfbe44..629d869 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -689,9 +689,7 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
                                     return mail;
                                 }
                             };
-                        } catch (MessagingException e) {
-                            logger.error("Unable to browse queue", e);
-                        } catch (JMSException e) {
+                        } catch (MessagingException | JMSException e) {
                             logger.error("Unable to browse queue", e);
                         }
                     }


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


[3/5] james-project git commit: JAMES-2107 Use guava instead of unmodifiable collections

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java
index fc0272c..5fb3964 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/StartTlsCmdHandler.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.protocols.smtp.core.esmtp;
 
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -35,6 +34,9 @@ import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.SMTPStartTlsResponse;
 import org.apache.james.protocols.smtp.dsn.DSNStatus;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+
 /**
  * Handles STARTTLS command
  */
@@ -43,8 +45,8 @@ public class StartTlsCmdHandler implements CommandHandler<SMTPSession>, EhloExte
      * The name of the command handled by the command handler
      */
     private final static String COMMAND_NAME = "STARTTLS";
-    private final static Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_NAME));
-    private final static List<String> FEATURES = Collections.unmodifiableList(Arrays.asList(COMMAND_NAME));
+    private final static Collection<String> COMMANDS = ImmutableSet.of(COMMAND_NAME);
+    private final static List<String> FEATURES = ImmutableList.of(COMMAND_NAME);
 
     private static final Response TLS_ALREADY_ACTIVE = new SMTPResponse("500", DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD) + " TLS already active RFC2487 5.2").immutable();
     private static final Response READY_FOR_STARTTLS = new SMTPStartTlsResponse("220", DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.UNDEFINED_STATUS) + " Ready to start TLS").immutable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
index be49842..26f7c17 100644
--- a/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
+++ b/server/data/data-jpa/src/main/java/org/apache/james/user/jpa/JPAUsersRepository.java
@@ -19,7 +19,6 @@
 
 package org.apache.james.user.jpa;
 
-import java.util.Collections;
 import java.util.Iterator;
 import java.util.Locale;
 
@@ -39,6 +38,8 @@ import org.apache.james.user.api.model.User;
 import org.apache.james.user.jpa.model.JPAUser;
 import org.apache.james.user.lib.AbstractUsersRepository;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * JPA based UserRepository
  */
@@ -241,7 +242,7 @@ public class JPAUsersRepository extends AbstractUsersRepository {
         EntityManager entityManager = entityManagerFactory.createEntityManager();
 
         try {
-            return Collections.unmodifiableList(entityManager.createNamedQuery("listUserNames").getResultList()).iterator();
+            return ImmutableList.copyOf(entityManager.createNamedQuery("listUserNames").getResultList()).iterator();
 
         } catch (PersistenceException e) {
             getLogger().debug("Failed to find user", e);

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
index f21ac95..1970a29 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java
@@ -19,9 +19,7 @@
 
 package org.apache.james.mailetcontainer.impl;
 
-import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashSet;
@@ -63,6 +61,8 @@ import org.apache.mailet.MailetContext;
 import org.apache.mailet.base.RFC2822Headers;
 import org.slf4j.Logger;
 
+import com.google.common.collect.ImmutableSet;
+
 @SuppressWarnings("deprecation")
 public class JamesMailetContext implements MailetContext, LogEnabled, Configurable {
 
@@ -109,7 +109,7 @@ public class JamesMailetContext implements MailetContext, LogEnabled, Configurab
         } catch (TemporaryResolutionException e) {
             // TODO: We only do this to not break backward compatiblity. Should
             // fixed later
-            return Collections.unmodifiableCollection(new ArrayList<String>(0));
+            return ImmutableSet.of();
         }
     }
 
@@ -306,7 +306,7 @@ public class JamesMailetContext implements MailetContext, LogEnabled, Configurab
         } catch (TemporaryResolutionException e) {
             // TODO: We only do this to not break backward compatiblity. Should
             // fixed later
-            return Collections.unmodifiableCollection(new ArrayList<HostAddress>(0)).iterator();
+            return ImmutableSet.<HostAddress>of().iterator();
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/4964e3d9/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
index c4cf74b..907e9e7 100644
--- a/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
+++ b/server/protocols/protocols-pop3/src/main/java/org/apache/james/pop3server/mailbox/MailboxAdapter.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -42,6 +41,7 @@ import org.apache.james.protocols.pop3.mailbox.Mailbox;
 import org.apache.james.protocols.pop3.mailbox.MessageMetaData;
 
 import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
 
 public class MailboxAdapter implements Mailbox {
 
@@ -160,7 +160,7 @@ public class MailboxAdapter implements Mailbox {
                 MessageMetaData metaData = new MessageMetaData(String.valueOf(result.getUid().asLong()), result.getSize());
                 mList.add(metaData);
             }
-            return Collections.unmodifiableList(mList);
+            return ImmutableList.copyOf(mList);
         } catch (MailboxException e) {
             throw new IOException("Unable to retrieve messages", e);
         } finally {


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