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 ma...@apache.org on 2018/04/25 08:55:25 UTC

[06/24] james-project git commit: JAMES-2381 Rely on enum for HookReturnCode

JAMES-2381 Rely on enum for HookReturnCode

This avoids weird int masks that hides the values and the intent.


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

Branch: refs/heads/master
Commit: d57da7bcf371c94cc3a04686306aea6f2cb792e3
Parents: cd366dd
Author: benwa <bt...@linagora.com>
Authored: Fri Apr 20 14:51:15 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Tue Apr 24 15:34:30 2018 +0200

----------------------------------------------------------------------
 .../protocols/lmtp/AbstractLMTPServerTest.java  |  4 +-
 .../AbstractAuthRequiredToRelayRcptHook.java    |  4 +-
 .../smtp/core/AbstractHookableCmdHandler.java   | 20 ++---
 ...tSenderAuthIdentifyVerificationRcptHook.java |  2 +-
 .../smtp/core/DataLineMessageHookHandler.java   |  2 +-
 .../smtp/core/esmtp/AuthCmdHandler.java         | 16 ++--
 .../smtp/core/esmtp/MailSizeEsmtpExtension.java |  4 +-
 .../core/fastfail/AbstractGreylistHandler.java  |  4 +-
 .../core/fastfail/AbstractValidRcptHandler.java |  2 +-
 .../smtp/core/fastfail/DNSRBLHandler.java       |  4 +-
 .../smtp/core/fastfail/MaxRcptHandler.java      |  2 +-
 .../core/fastfail/MaxUnknownCmdHandler.java     |  8 +-
 .../fastfail/ResolvableEhloHeloHandler.java     |  3 +-
 .../fastfail/SupressDuplicateRcptHandler.java   |  2 +-
 .../core/fastfail/ValidSenderDomainHandler.java |  3 +-
 .../smtp/core/log/HookResultLogger.java         | 49 +++--------
 .../james/protocols/smtp/hook/HookResult.java   | 48 +++--------
 .../protocols/smtp/hook/HookReturnCode.java     | 89 ++++++++++++++++++--
 .../james/protocols/smtp/hook/SimpleHook.java   |  8 +-
 .../protocols/smtp/AbstractSMTPServerTest.java  | 20 ++---
 .../smtp/core/fastfail/MaxRcptHandlerTest.java  |  8 +-
 .../core/fastfail/MaxUnknownCmdHandlerTest.java |  8 +-
 .../fastfail/ResolvableEhloHeloHandlerTest.java | 26 +++---
 .../smtp/core/fastfail/SpamTrapHandlerTest.java | 12 +--
 .../fastfail/ValidSenderDomainHandlerTest.java  |  8 +-
 .../protocols/smtp/hook/HookResultTest.java     | 39 +--------
 .../protocols/smtp/utils/TestMessageHook.java   |  2 +-
 .../hook/MailboxDeliverToRecipientHandler.java  |  4 +-
 .../AddDefaultAttributesMessageHook.java        |  2 +-
 .../james/smtpserver/MailPriorityHandler.java   |  2 +-
 .../james/smtpserver/SendMailHandler.java       |  4 +-
 .../SenderAuthIdentifyVerificationRcptHook.java |  2 +-
 .../james/smtpserver/SetMimeHeaderHandler.java  |  2 +-
 .../smtpserver/UsersRepositoryAuthHook.java     |  4 +-
 .../fastfail/JDBCGreylistHandler.java           |  2 +-
 .../james/smtpserver/fastfail/SPFHandler.java   |  8 +-
 .../fastfail/SpamAssassinHandler.java           |  4 +-
 .../smtpserver/fastfail/URIRBLHandler.java      |  6 +-
 .../james/smtpserver/fastfail/ValidRcptMX.java  |  6 +-
 .../apache/james/smtpserver/jmx/HookStats.java  | 27 +++---
 .../apache/james/smtpserver/SPFHandlerTest.java | 32 +++----
 .../smtpserver/SpamAssassinHandlerTest.java     |  6 +-
 .../james/smtpserver/URIRBLHandlerTest.java     |  6 +-
 .../james/smtpserver/ValidRcptHandlerTest.java  | 36 ++++----
 .../james/smtpserver/ValidRcptMXTest.java       |  4 +-
 45 files changed, 270 insertions(+), 284 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java b/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
index 2667642..f022a00 100644
--- a/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
+++ b/protocols/lmtp/src/test/java/org/apache/james/protocols/lmtp/AbstractLMTPServerTest.java
@@ -344,10 +344,10 @@ public abstract class AbstractLMTPServerTest extends AbstractSMTPServerTest {
         @Override
         public HookResult deliver(SMTPSession session, MailAddress recipient, MailEnvelope envelope) {
             if (RCPT1.equals(recipient.toString())) {
-                return new HookResult(HookReturnCode.DENY);
+                return new HookResult(HookReturnCode.deny());
             } else {
                 delivered.add(envelope);
-                return new HookResult(HookReturnCode.OK);
+                return new HookResult(HookReturnCode.ok());
             }
         }
         

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
index 5c3f880..6f435ec 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java
@@ -32,13 +32,13 @@ import org.apache.james.protocols.smtp.hook.RcptHook;
  */
 public abstract class AbstractAuthRequiredToRelayRcptHook implements RcptHook {
 
-    private static final HookResult AUTH_REQUIRED = new HookResult(HookReturnCode.DENY,
+    private static final HookResult AUTH_REQUIRED = new HookResult(HookReturnCode.deny(),
             SMTPRetCode.AUTH_REQUIRED, DSNStatus.getStatus(
                     DSNStatus.PERMANENT,
                     DSNStatus.SECURITY_AUTH)
                     + " Authentication Required");
     private static final HookResult RELAYING_DENIED = new HookResult(
-            HookReturnCode.DENY,
+            HookReturnCode.deny(),
             // sendmail returns 554 (SMTPRetCode.TRANSACTION_FAILED).
             // it is not clear in RFC wether it is better to use 550 or 554.
             SMTPRetCode.MAILBOX_PERM_UNAVAILABLE,

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java
index e7063f2..22723e5 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractHookableCmdHandler.java
@@ -124,9 +124,9 @@ public abstract class AbstractHookableCmdHandler<HookT extends org.apache.james.
                 }
 
                 // call the core cmd if we receive a ok return code of the hook so no other hooks are executed
-                if ((hRes.getResult() & HookReturnCode.OK) == HookReturnCode.OK) {
+                if (hRes.getResult().getAction() == HookReturnCode.Action.OK) {
                     final Response response = doCoreCmd(session, command, parameters);
-                    if ((hRes.getResult() & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+                    if (hRes.getResult().isDisconnected()) {
                         return new Response() {
 
                             @Override
@@ -176,11 +176,11 @@ public abstract class AbstractHookableCmdHandler<HookT extends org.apache.james.
      */
     public static SMTPResponse calcDefaultSMTPResponse(HookResult result) {
         if (result != null) {
-            int rCode = result.getResult();
+            HookReturnCode rCode = result.getResult();
             String smtpRetCode = result.getSmtpRetCode();
             String smtpDesc = result.getSmtpDescription();
     
-            if ((rCode & HookReturnCode.DENY) == HookReturnCode.DENY) {
+            if (rCode.getAction() == HookReturnCode.Action.DENY) {
                 if (smtpRetCode == null) {
                     smtpRetCode = SMTPRetCode.TRANSACTION_FAILED;
                 }
@@ -189,11 +189,11 @@ public abstract class AbstractHookableCmdHandler<HookT extends org.apache.james.
                 }
     
                 SMTPResponse response =  new SMTPResponse(smtpRetCode, smtpDesc);
-                if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+                if (rCode.isDisconnected()) {
                     response.setEndSession(true);
                 }
                 return response;
-            } else if ((rCode & HookReturnCode.DENYSOFT) == HookReturnCode.DENYSOFT) {
+            } else if (rCode.getAction() == HookReturnCode.Action.DENYSOFT) {
                 if (smtpRetCode == null) {
                     smtpRetCode = SMTPRetCode.LOCAL_ERROR;
                 }
@@ -202,11 +202,11 @@ public abstract class AbstractHookableCmdHandler<HookT extends org.apache.james.
                 }
     
                 SMTPResponse response = new SMTPResponse(smtpRetCode, smtpDesc);
-                if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+                if (rCode.isDisconnected()) {
                     response.setEndSession(true);
                 }
                 return response;
-            } else if ((rCode & HookReturnCode.OK) == HookReturnCode.OK) {
+            } else if (rCode.getAction() == HookReturnCode.Action.OK) {
                 if (smtpRetCode == null) {
                     smtpRetCode = SMTPRetCode.MAIL_OK;
                 }
@@ -215,11 +215,11 @@ public abstract class AbstractHookableCmdHandler<HookT extends org.apache.james.
                 }
     
                 SMTPResponse response = new SMTPResponse(smtpRetCode, smtpDesc);
-                if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+                if (rCode.isDisconnected()) {
                     response.setEndSession(true);
                 }
                 return response;
-            } else if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+            } else if (rCode.isDisconnected()) {
                 if (smtpRetCode == null) {
                     smtpRetCode = SMTPRetCode.TRANSACTION_FAILED;
                 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
index de3148e..4e381d4 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
@@ -34,7 +34,7 @@ import org.apache.james.protocols.smtp.hook.RcptHook;
  * Handler which check if the authenticated user is the same as the one used as MAIL FROM
  */
 public abstract class AbstractSenderAuthIdentifyVerificationRcptHook implements RcptHook {  
-    private static final HookResult INVALID_AUTH =  new HookResult(HookReturnCode.DENY, 
+    private static final HookResult INVALID_AUTH =  new HookResult(HookReturnCode.deny(),
             SMTPRetCode.BAD_SEQUENCE,
             DSNStatus.getStatus(DSNStatus.PERMANENT,
                     DSNStatus.SECURITY_AUTH)

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
index a69c40a..7b99366 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
@@ -153,7 +153,7 @@ public class DataLineMessageHookHandler implements DataLineFilter, ExtensibleHan
             }
 
             // Not queue the message!
-            return AbstractHookableCmdHandler.calcDefaultSMTPResponse(new HookResult(HookReturnCode.DENY));
+            return AbstractHookableCmdHandler.calcDefaultSMTPResponse(new HookResult(HookReturnCode.deny()));
         }
         
         return null;

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/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 450020c..0712d67 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
@@ -429,11 +429,11 @@ public class AuthCmdHandler
      */
     protected Response calcDefaultSMTPResponse(HookResult result) {
         if (result != null) {
-            int rCode = result.getResult();
+            HookReturnCode rCode = result.getResult();
             String smtpRetCode = result.getSmtpRetCode();
             String smtpDesc = result.getSmtpDescription();
     
-            if ((rCode & HookReturnCode.DENY) == HookReturnCode.DENY) {
+            if (rCode.getAction() == HookReturnCode.Action.DENY) {
                 if (smtpRetCode == null) {
                     smtpRetCode = SMTPRetCode.AUTH_FAILED;
                 }
@@ -443,11 +443,11 @@ public class AuthCmdHandler
     
                 SMTPResponse response =  new SMTPResponse(smtpRetCode, smtpDesc);
 
-                if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+                if (rCode.isDisconnected()) {
                     response.setEndSession(true);
                 }
                 return response;
-            } else if ((rCode & HookReturnCode.DENYSOFT) == HookReturnCode.DENYSOFT) {
+            } else if (rCode.getAction() == HookReturnCode.Action.DENYSOFT) {
                 if (smtpRetCode == null) {
                     smtpRetCode = SMTPRetCode.LOCAL_ERROR;
                 }
@@ -457,11 +457,11 @@ public class AuthCmdHandler
     
                 SMTPResponse response =  new SMTPResponse(smtpRetCode, smtpDesc);
 
-                if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+                if (rCode.isDisconnected()) {
                     response.setEndSession(true);
                 }
                 return response;
-            } else if ((rCode & HookReturnCode.OK) == HookReturnCode.OK) {
+            } else if (rCode.getAction() == HookReturnCode.Action.OK) {
                 if (smtpRetCode == null) {
                     smtpRetCode = SMTPRetCode.AUTH_OK;
                 }
@@ -471,11 +471,11 @@ public class AuthCmdHandler
                 
                 SMTPResponse response =  new SMTPResponse(smtpRetCode, smtpDesc);
 
-                if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+                if (rCode.isDisconnected()) {
                     response.setEndSession(true);
                 }
                 return response;
-            } else if ((rCode & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
+            } else if (rCode.isDisconnected()) {
                 SMTPResponse response =  new SMTPResponse("");
                 response.setEndSession(true);
             

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
index b150bb8..2c7e7ba 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
@@ -53,8 +53,8 @@ public class MailSizeEsmtpExtension implements MailParametersHook, EhloExtension
     private static final String MESG_FAILED = "MESG_FAILED";   // Message failed flag
     private static final String[] MAIL_PARAMS = { "SIZE" };
     
-    private static final HookResult SYNTAX_ERROR = new HookResult(HookReturnCode.DENY, SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntactically incorrect value for SIZE parameter");
-    private static final HookResult QUOTA_EXCEEDED = new HookResult(HookReturnCode.DENY, SMTPRetCode.QUOTA_EXCEEDED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SYSTEM_MSG_TOO_BIG) + " Message size exceeds fixed maximum message size");
+    private static final HookResult SYNTAX_ERROR = new HookResult(HookReturnCode.deny(), SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntactically incorrect value for SIZE parameter");
+    private static final HookResult QUOTA_EXCEEDED = new HookResult(HookReturnCode.deny(), SMTPRetCode.QUOTA_EXCEEDED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SYSTEM_MSG_TOO_BIG) + " Message size exceeds fixed maximum message size");
     public static final int SINGLE_CHARACTER_LINE = 3;
     public static final int DOT_BYTE = 46;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
index 8df48c8..d1ba16e 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractGreylistHandler.java
@@ -50,9 +50,9 @@ public abstract class AbstractGreylistHandler implements RcptHook {
     private long unseenLifeTime = 14400000;
 
 
-    private static final HookResult TO_FAST = new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) 
+    private static final HookResult TO_FAST = new HookResult(HookReturnCode.denySoft(), SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER)
             + " Temporary rejected: Reconnect to fast. Please try again later");
-    private static final HookResult TEMPORARY_REJECT = new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) 
+    private static final HookResult TEMPORARY_REJECT = new HookResult(HookReturnCode.denySoft(), SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER)
             + " Temporary rejected: Please try again later");
 
     public void setUnseenLifeTime(long unseenLifeTime) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
index d616896..b3eac76 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java
@@ -60,7 +60,7 @@ public abstract class AbstractValidRcptHandler implements RcptHook {
 
     public HookResult reject(MailAddress rcpt) {
         LOGGER.info("Rejected message. Unknown user: {}", rcpt);
-        return new HookResult(HookReturnCode.DENY,
+        return new HookResult(HookReturnCode.deny(),
             SMTPRetCode.MAILBOX_PERM_UNAVAILABLE,
             DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_MAILBOX) + " Unknown user: " + rcpt.toString());
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
index 55a811c..2d91e2b 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
@@ -186,11 +186,11 @@ public class DNSRBLHandler implements RcptHook {
     
             if (blocklisted != null) { // was found in the RBL
                 if (blocklistedDetail == null) {
-                    return new HookResult(HookReturnCode.DENY,DSNStatus.getStatus(DSNStatus.PERMANENT,
+                    return new HookResult(HookReturnCode.deny(),DSNStatus.getStatus(DSNStatus.PERMANENT,
                             DSNStatus.SECURITY_AUTH)  + " Rejected: unauthenticated e-mail from " + session.getRemoteAddress().getAddress() 
                             + " is restricted.  Contact the postmaster for details.");
                 } else {
-                    return new HookResult(HookReturnCode.DENY,DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SECURITY_AUTH) + " " + blocklistedDetail);
+                    return new HookResult(HookReturnCode.deny(),DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SECURITY_AUTH) + " " + blocklistedDetail);
                 }
                
             }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
index 3b084b8..01f9737 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandler.java
@@ -36,7 +36,7 @@ import org.slf4j.LoggerFactory;
 public class MaxRcptHandler implements RcptHook {
     private static final Logger LOGGER = LoggerFactory.getLogger(MaxRcptHandler.class);
 
-    private static final HookResult MAX_RCPT = new HookResult(HookReturnCode.DENY, SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC)
+    private static final HookResult MAX_RCPT = new HookResult(HookReturnCode.deny(), SMTPRetCode.SYSTEM_STORAGE_ERROR, DSNStatus.getStatus(DSNStatus.NETWORK, DSNStatus.DELIVERY_TOO_MANY_REC)
             + " Requested action not taken: max recipients reached");
     private int maxRcpt = 0;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java
index efd063b..7652c09 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java
@@ -30,8 +30,6 @@ import org.apache.james.protocols.smtp.hook.UnknownHook;
 
 /**
  * {@link UnknownHook} implementation which disconnect the client after a issue to many unknown commands
- * 
- *
  */
 public class MaxUnknownCmdHandler implements UnknownHook {
 
@@ -64,7 +62,11 @@ public class MaxUnknownCmdHandler implements UnknownHook {
         }
         session.setAttachment(UNKOWN_COMMAND_COUNT, count, State.Transaction);
         if (count > maxUnknown) {
-            return new HookResult(HookReturnCode.DENY | HookReturnCode.DISCONNECT, "521", "Closing connection as too many unknown commands received");
+            return new HookResult(new HookReturnCode(
+                HookReturnCode.Action.DENY,
+                HookReturnCode.ConnectionStatus.Disconnected),
+                "521",
+                "Closing connection as too many unknown commands received");
 
         } else {
             

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
index c31ab73..13a83c5 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
@@ -95,7 +95,8 @@ public class ResolvableEhloHeloHandler implements RcptHook, HeloHook {
     @Override
     public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
         if (check(session,rcpt)) {
-            return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG)
+            return new HookResult(HookReturnCode.deny(),
+                SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG)
                     + " Provided EHLO/HELO " + session.getAttachment(SMTPSession.CURRENT_HELO_NAME, State.Connection) + " can not resolved.");
         } else {
             return HookResult.declined();

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
index 305aefd..99e757d 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
@@ -64,7 +64,7 @@ public class SupressDuplicateRcptHandler implements RcptHook {
                           .append(rcpt.toString())
                           .append("> OK");
             LOGGER.debug("Duplicate recipient not add to recipient list: {}", rcpt);
-            return new HookResult(HookReturnCode.OK,SMTPRetCode.MAIL_OK, responseBuffer.toString());
+            return new HookResult(HookReturnCode.ok(), SMTPRetCode.MAIL_OK, responseBuffer.toString());
         }
         return HookResult.declined();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
index 4e3f57e..c99a1a0 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java
@@ -36,7 +36,8 @@ public abstract class ValidSenderDomainHandler implements MailHook {
     @Override
     public HookResult doMail(SMTPSession session, MailAddress sender) {
         if (sender != null  && !hasMXRecord(session,sender.getDomain().name())) {
-            return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_SYNTAX_SENDER) + " sender " + sender + " contains a domain with no valid MX records");
+            return new HookResult(HookReturnCode.deny(),
+                SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_SYNTAX_SENDER) + " sender " + sender + " contains a domain with no valid MX records");
         } else {
             return HookResult.declined();
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java
index 88d274d..d434fed 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/log/HookResultLogger.java
@@ -49,45 +49,20 @@ public class HookResultLogger implements HookResultHook {
 
     @Override
     public HookResult onHookResult(SMTPSession session, HookResult hResult, long executionTime, Hook hook) {
-        boolean match = false;
-        boolean info = false;
-        int result = hResult.getResult();
-        StringBuilder sb = new StringBuilder();
-        sb.append(hook.getClass().getName());
-        sb.append(": result=");
-        sb.append(result);
-        sb.append(" (");
-        if ((result & HookReturnCode.DECLINED) == HookReturnCode.DECLINED) {
-            sb.append("DECLINED");
-            match = true;
-        }
-        if ((result & HookReturnCode.OK) == HookReturnCode.OK) {
-            sb.append("OK");
-            match = true;
-        }
-        if ((result & HookReturnCode.DENY) == HookReturnCode.DENY) {
-            sb.append("DENY");
-            match = true;
-            info = true;
-        }
-        if ((result & HookReturnCode.DENYSOFT) == HookReturnCode.DENYSOFT) {
-            sb.append("DENYSOFT");
-            match = true;
-            info = true;
-        }
-        if ((result & HookReturnCode.DISCONNECT) == HookReturnCode.DISCONNECT) {
-            if (match) {
-                sb.append("|");
-            }
-            sb.append("DISCONNECT");
-            info = true;
-        }
-        sb.append(")");
+        HookReturnCode result = hResult.getResult();
+
+        boolean requiresInfoLogging = result.getAction() == HookReturnCode.Action.DENY
+            || result.getAction() == HookReturnCode.Action.DENYSOFT
+            || result.isDisconnected();
 
-        if (info) {
-            LOGGER.info("{}", sb);
+        if (requiresInfoLogging) {
+            LOGGER.info("{}: result= ({} {})", hook.getClass().getName(),
+                result.getAction(),
+                result.getConnectionStatus());
         } else {
-            LOGGER.debug("{}", sb);
+            LOGGER.debug("{}: result= ({} {})", hook.getClass().getName(),
+                result.getAction(),
+                result.getConnectionStatus());
         }
         return hResult;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java
index 69f3d4f..048cc92 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookResult.java
@@ -22,18 +22,16 @@ package org.apache.james.protocols.smtp.hook;
 import java.util.Objects;
 import java.util.Optional;
 
-import com.google.common.base.Preconditions;
-
 /**
  * Result which get used for hooks
  */
 public final class HookResult {
 
-    private static final HookResult DECLINED = new HookResult(HookReturnCode.DECLINED);
-    private static final HookResult OK = new HookResult(HookReturnCode.OK);
-    private static final HookResult DENY = new HookResult(HookReturnCode.DENY);
-    private static final HookResult DENYSOFT = new HookResult(HookReturnCode.DENYSOFT);
-    private static final HookResult DISCONNECT = new HookResult(HookReturnCode.DISCONNECT);
+    private static final HookResult DECLINED = new HookResult(HookReturnCode.declined());
+    private static final HookResult OK = new HookResult(HookReturnCode.ok());
+    private static final HookResult DENY = new HookResult(HookReturnCode.deny());
+    private static final HookResult DENYSOFT = new HookResult(HookReturnCode.denySoft());
+    private static final HookResult DISCONNECT = new HookResult(new HookReturnCode(HookReturnCode.Action.NONE, HookReturnCode.ConnectionStatus.Disconnected));
 
     public static HookResult declined() {
         return DECLINED;
@@ -55,37 +53,11 @@ public final class HookResult {
         return DISCONNECT;
     }
 
-    private final int result;
+    private final HookReturnCode result;
     private final String smtpRetCode;
     private final String smtpDescription;
 
-    public HookResult(int result, String smtpRetCode, CharSequence smtpDescription) {
-        boolean match = false;
-
-        if ((result & HookReturnCode.DECLINED) == HookReturnCode.DECLINED) {
-            if (match == true) {
-                throw new IllegalArgumentException();
-            }
-            match = true;
-        }
-        if ((result & HookReturnCode.OK) == HookReturnCode.OK) {
-            if (match == true) {
-                throw new IllegalArgumentException();
-            }
-            match = true;
-        }
-        if ((result & HookReturnCode.DENY) == HookReturnCode.DENY) {
-            if (match == true) {
-                throw new IllegalArgumentException();
-            }
-            match = true;
-        }
-        if ((result & HookReturnCode.DENYSOFT) == HookReturnCode.DENYSOFT) {
-            if (match == true) {
-                throw new IllegalArgumentException();
-            }
-            match = true;
-        }
+    public HookResult(HookReturnCode result, String smtpRetCode, CharSequence smtpDescription) {
         this.result = result;
         this.smtpRetCode = smtpRetCode;
         this.smtpDescription = Optional.ofNullable(smtpDescription)
@@ -93,15 +65,15 @@ public final class HookResult {
             .orElse(null);
     }
 
-    public HookResult(int result, String smtpDescription) {
+    public HookResult(HookReturnCode result, String smtpDescription) {
         this(result, null, smtpDescription);
     }
 
-    public HookResult(int result) {
+    public HookResult(HookReturnCode result) {
         this(result, null, null);
     }
 
-    public int getResult() {
+    public HookReturnCode getResult() {
         return result;
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookReturnCode.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookReturnCode.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookReturnCode.java
index b1e6de1..caa9f2c 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookReturnCode.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/HookReturnCode.java
@@ -19,15 +19,86 @@
 
 package org.apache.james.protocols.smtp.hook;
 
-import com.google.common.collect.ImmutableList;
+import java.util.Objects;
+
+import com.google.common.base.MoreObjects;
 
 public class HookReturnCode {
-    public static final int OK = 0x1;
-    public static final int DENY = 0x1 << 1;
-    public static final int DENYSOFT = 0x1 << 2;
-    public static final int DECLINED = 0x1 << 3;
-    public static final int DISCONNECT = 0x1 << 4;
-
-    public static final ImmutableList<Integer> VALID_RETURN_CODE = ImmutableList.of(
-        DECLINED, OK, DENY, DENYSOFT, DISCONNECT);
+
+    public enum Action {
+        OK,
+        DENY,
+        DENYSOFT,
+        DECLINED,
+        NONE
+    }
+
+    public enum ConnectionStatus {
+        Disconnected,
+        Connected
+    }
+
+    public static HookReturnCode denySoft() {
+        return connected(Action.DENYSOFT);
+    }
+
+    public static HookReturnCode deny() {
+        return connected(Action.DENY);
+    }
+
+    public static HookReturnCode ok() {
+        return connected(Action.OK);
+    }
+
+    public static HookReturnCode declined() {
+        return connected(Action.DECLINED);
+    }
+
+    public static HookReturnCode connected(Action action) {
+        return new HookReturnCode(action, ConnectionStatus.Connected);
+    }
+
+    private final Action action;
+    private final ConnectionStatus connectionStatus;
+
+    public HookReturnCode(Action action, ConnectionStatus connectionStatus) {
+        this.action = action;
+        this.connectionStatus = connectionStatus;
+    }
+
+    public Action getAction() {
+        return action;
+    }
+
+    public ConnectionStatus getConnectionStatus() {
+        return connectionStatus;
+    }
+
+    public boolean isDisconnected() {
+        return connectionStatus == ConnectionStatus.Disconnected;
+    }
+
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof HookReturnCode) {
+            HookReturnCode that = (HookReturnCode) o;
+
+            return Objects.equals(this.action, that.action)
+                && Objects.equals(this.connectionStatus, that.connectionStatus);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(action, connectionStatus);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("action", action)
+            .add("disconnection", connectionStatus)
+            .toString();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
index 6962209..b0d6033 100644
--- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
+++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/hook/SimpleHook.java
@@ -49,7 +49,7 @@ public class SimpleHook implements HeloHook, MailHook, RcptHook, MessageHook {
      */
     @Override
     public HookResult onMessage(SMTPSession session, MailEnvelope mail) {
-        return new HookResult(HookReturnCode.OK);
+        return new HookResult(HookReturnCode.ok());
     }
 
     /**
@@ -57,7 +57,7 @@ public class SimpleHook implements HeloHook, MailHook, RcptHook, MessageHook {
      */
     @Override
     public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
 
     }
 
@@ -66,7 +66,7 @@ public class SimpleHook implements HeloHook, MailHook, RcptHook, MessageHook {
      */
     @Override
     public HookResult doMail(SMTPSession session, MailAddress sender) {
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
 
     }
 
@@ -75,7 +75,7 @@ public class SimpleHook implements HeloHook, MailHook, RcptHook, MessageHook {
      */
     @Override
     public HookResult doHelo(SMTPSession session, String helo) {
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
index ce1f25e..36082bd 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/AbstractSMTPServerTest.java
@@ -501,7 +501,7 @@ public abstract class AbstractSMTPServerTest {
 
             @Override
             public HookResult doHelo(SMTPSession session, String helo) {
-                return new HookResult(HookReturnCode.DENY);
+                return new HookResult(HookReturnCode.deny());
             }
         };
         
@@ -549,7 +549,7 @@ public abstract class AbstractSMTPServerTest {
 
             @Override
             public HookResult doHelo(SMTPSession session, String helo) {
-                return new HookResult(HookReturnCode.DENYSOFT);
+                return new HookResult(HookReturnCode.denySoft());
             }
         };
         
@@ -596,7 +596,7 @@ public abstract class AbstractSMTPServerTest {
 
             @Override
             public HookResult doMail(SMTPSession session, MailAddress sender) {
-                return new HookResult(HookReturnCode.DENY);
+                return new HookResult(HookReturnCode.deny());
             }
         };
         
@@ -646,7 +646,7 @@ public abstract class AbstractSMTPServerTest {
 
             @Override
             public HookResult doMail(SMTPSession session, MailAddress sender) {
-                return new HookResult(HookReturnCode.DENYSOFT);
+                return new HookResult(HookReturnCode.denySoft());
             }
         };
         
@@ -698,9 +698,9 @@ public abstract class AbstractSMTPServerTest {
             @Override
             public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
                 if (RCPT1.equals(rcpt.toString())) {
-                    return new HookResult(HookReturnCode.DENY);
+                    return new HookResult(HookReturnCode.deny());
                 } else {
-                    return new HookResult(HookReturnCode.DECLINED);
+                    return new HookResult(HookReturnCode.declined());
                 }
             }
 
@@ -762,9 +762,9 @@ public abstract class AbstractSMTPServerTest {
             @Override
             public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
                 if (RCPT1.equals(rcpt.toString())) {
-                    return new HookResult(HookReturnCode.DENYSOFT);
+                    return new HookResult(HookReturnCode.denySoft());
                 } else {
-                    return new HookResult(HookReturnCode.DECLINED);
+                    return new HookResult(HookReturnCode.declined());
                 }
             }
 
@@ -860,7 +860,7 @@ public abstract class AbstractSMTPServerTest {
 
             @Override
             public HookResult onMessage(SMTPSession session, MailEnvelope mail) {
-                return new HookResult(HookReturnCode.DENY);
+                return new HookResult(HookReturnCode.deny());
             }
 
 
@@ -924,7 +924,7 @@ public abstract class AbstractSMTPServerTest {
 
             @Override
             public HookResult onMessage(SMTPSession session, MailEnvelope mail) {
-                return new HookResult(HookReturnCode.DENYSOFT);
+                return new HookResult(HookReturnCode.denySoft());
             }
 
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
index 6c28e54..a62edc5 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxRcptHandlerTest.java
@@ -60,9 +60,9 @@ public class MaxRcptHandlerTest {
         MaxRcptHandler handler = new MaxRcptHandler();
         
         handler.setMaxRcpt(2);
-        int resp = handler.doRcpt(session,null,new MailAddress("test@test")).getResult();
+        HookReturnCode resp = handler.doRcpt(session,null,new MailAddress("test@test")).getResult();
     
-        assertEquals("Rejected.. To many recipients", resp, HookReturnCode.DENY);
+        assertEquals("Rejected.. To many recipients", resp, HookReturnCode.deny());
     }
   
   
@@ -72,9 +72,9 @@ public class MaxRcptHandlerTest {
         MaxRcptHandler handler = new MaxRcptHandler();    
 
         handler.setMaxRcpt(4);
-        int resp = handler.doRcpt(session,null,new MailAddress("test@test")).getResult();
+        HookReturnCode resp = handler.doRcpt(session,null,new MailAddress("test@test")).getResult();
         
-        assertEquals("Not Rejected..", resp, HookReturnCode.DECLINED);
+        assertEquals("Not Rejected..", resp, HookReturnCode.declined());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
index 81851c1..cd5319c 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
@@ -70,13 +70,13 @@ public class MaxUnknownCmdHandlerTest {
         
         MaxUnknownCmdHandler handler = new MaxUnknownCmdHandler();
         handler.setMaxUnknownCmdCount(2);
-        int resp = handler.doUnknown(session, "what").getResult();
-        assertEquals(HookReturnCode.DECLINED, resp);
+        HookReturnCode resp = handler.doUnknown(session, "what").getResult();
+        assertEquals(HookReturnCode.declined(), resp);
 
         resp = handler.doUnknown(session, "what").getResult();
-        assertEquals(HookReturnCode.DECLINED, resp);
+        assertEquals(HookReturnCode.declined(), resp);
         
         resp = handler.doUnknown(session, "what").getResult();
-        assertEquals(HookReturnCode.DENY | HookReturnCode.DISCONNECT, resp);
+        assertEquals(new HookReturnCode(HookReturnCode.Action.DENY, HookReturnCode.ConnectionStatus.Disconnected), resp);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
index 4e21a21..13682b7 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
@@ -126,9 +126,9 @@ public class ResolvableEhloHeloHandlerTest {
         
         handler.doHelo(session, INVALID_HOST);
         assertNotNull("Invalid HELO",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
-        
-        int result = handler.doRcpt(session,null, mailAddress).getResult();
-        assertEquals("Reject", result,HookReturnCode.DENY);
+
+        HookReturnCode result = handler.doRcpt(session,null, mailAddress).getResult();
+        assertEquals("Reject", result,HookReturnCode.deny());
     }
     
     @Test
@@ -141,8 +141,8 @@ public class ResolvableEhloHeloHandlerTest {
         handler.doHelo(session, VALID_HOST);
         assertNull("Valid HELO",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
 
-        int result = handler.doRcpt(session,null, mailAddress).getResult();
-        assertEquals("Not reject", result,HookReturnCode.DECLINED);
+        HookReturnCode result = handler.doRcpt(session,null, mailAddress).getResult();
+        assertEquals("Not reject", result,HookReturnCode.declined());
     }
    
     @Test
@@ -154,10 +154,10 @@ public class ResolvableEhloHeloHandlerTest {
 
         handler.doHelo(session, INVALID_HOST);
         assertNotNull("Value stored",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
-        
-        
-        int result = handler.doRcpt(session,null, mailAddress).getResult();
-        assertEquals("Reject", result,HookReturnCode.DENY);
+
+
+        HookReturnCode result = handler.doRcpt(session,null, mailAddress).getResult();
+        assertEquals("Reject", result,HookReturnCode.deny());
     }
     
    
@@ -170,10 +170,10 @@ public class ResolvableEhloHeloHandlerTest {
 
         handler.doHelo(session, INVALID_HOST);
         assertNotNull("Value stored",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
-        
-        
-        int result = handler.doRcpt(session,null, mailAddress).getResult();
-        assertEquals("Reject", result,HookReturnCode.DENY);
+
+
+        HookReturnCode result = handler.doRcpt(session,null, mailAddress).getResult();
+        assertEquals("Reject", result,HookReturnCode.deny());
     }
 }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
index 878284b..044d063 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/SpamTrapHandlerTest.java
@@ -62,20 +62,20 @@ public class SpamTrapHandlerTest {
     
         handler.setBlockTime(blockTime);
         handler.setSpamTrapRecipients(rcpts);
+
+        HookReturnCode result = handler.doRcpt(setUpSMTPSession(ip),null,new MailAddress(SPAM_TRAP_RECIP1)).getResult();
     
-        int result = handler.doRcpt(setUpSMTPSession(ip),null,new MailAddress(SPAM_TRAP_RECIP1)).getResult();
-    
-        assertEquals("Blocked on first connect",HookReturnCode.DENY,result);
+        assertEquals("Blocked on first connect",HookReturnCode.deny(),result);
     
 
         result = handler.doRcpt(setUpSMTPSession(ip),null,new MailAddress(RECIP1)).getResult();
     
-        assertEquals("Blocked on second connect", HookReturnCode.DENY,result);
+        assertEquals("Blocked on second connect", HookReturnCode.deny(),result);
     
         
         result = handler.doRcpt(setUpSMTPSession(ip2),null,new MailAddress(RECIP1)).getResult();
     
-        assertEquals("Not Blocked", HookReturnCode.DECLINED,result);
+        assertEquals("Not Blocked", HookReturnCode.declined(),result);
     
         try {
             // Wait for the blockTime to exceed
@@ -86,6 +86,6 @@ public class SpamTrapHandlerTest {
     
         result = handler.doRcpt(setUpSMTPSession(ip),null,new MailAddress(RECIP1)).getResult();
     
-        assertEquals("Not blocked. BlockTime exceeded", HookReturnCode.DECLINED,result); 
+        assertEquals("Not blocked. BlockTime exceeded", HookReturnCode.declined(),result);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
index bebe107..1ce6c76 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
@@ -106,17 +106,17 @@ public class ValidSenderDomainHandlerTest {
     @Test
     public void testNullSenderNotReject() {
         ValidSenderDomainHandler handler = createHandler();
-        int response = handler.doMail(setupMockedSession(null),null).getResult();
+        HookReturnCode response = handler.doMail(setupMockedSession(null),null).getResult();
         
-        assertEquals("Not blocked cause its a nullsender",response,HookReturnCode.DECLINED);
+        assertEquals("Not blocked cause its a nullsender", response, HookReturnCode.declined());
     }
 
     @Test
     public void testInvalidSenderDomainReject() throws Exception {
         ValidSenderDomainHandler handler = createHandler();
         SMTPSession session = setupMockedSession(new MailAddress("invalid@invalid"));
-        int response = handler.doMail(session,(MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction)).getResult();
+        HookReturnCode response = handler.doMail(session,(MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction)).getResult();
         
-        assertEquals("Blocked cause we use reject action", response,HookReturnCode.DENY);
+        assertEquals("Blocked cause we use reject action", response, HookReturnCode.deny());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/hook/HookResultTest.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/hook/HookResultTest.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/hook/HookResultTest.java
index e82b98f..8c6db85 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/hook/HookResultTest.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/hook/HookResultTest.java
@@ -19,14 +19,12 @@
 
 package org.apache.james.protocols.smtp.hook;
 
-import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-
 import org.junit.Test;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 
 public class HookResultTest {
+
     @Test
     public void shouldMatchBeanContract() {
         EqualsVerifier.forClass(HookResult.class)
@@ -34,39 +32,4 @@ public class HookResultTest {
             .verify();
     }
 
-    @Test
-    public void shouldThrowOnInvalidReturnCode() {
-        assertThatThrownBy(() -> new HookResult(HookReturnCode.DENY + HookReturnCode.DECLINED))
-            .isInstanceOf(IllegalArgumentException.class);
-    }
-
-    @Test
-    public void shouldNotThrowOnOK() {
-        assertThatCode(() -> new HookResult(HookReturnCode.OK))
-            .doesNotThrowAnyException();
-    }
-
-    @Test
-    public void shouldNotThrowOnDeny() {
-        assertThatCode(() -> new HookResult(HookReturnCode.DENY))
-            .doesNotThrowAnyException();
-    }
-
-    @Test
-    public void shouldNotThrowOnDenySoft() {
-        assertThatCode(() -> new HookResult(HookReturnCode.DENYSOFT))
-            .doesNotThrowAnyException();
-    }
-
-    @Test
-    public void shouldNotThrowOnDeclined() {
-        assertThatCode(() -> new HookResult(HookReturnCode.DECLINED))
-            .doesNotThrowAnyException();
-    }
-
-    @Test
-    public void shouldNotThrowOnDisconnect() {
-        assertThatCode(() -> new HookResult(HookReturnCode.DISCONNECT))
-            .doesNotThrowAnyException();
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
----------------------------------------------------------------------
diff --git a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
index 5f7c60f..34cf60f 100644
--- a/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
+++ b/protocols/smtp/src/test/java/org/apache/james/protocols/smtp/utils/TestMessageHook.java
@@ -36,7 +36,7 @@ public class TestMessageHook implements MessageHook {
     @Override
     public HookResult onMessage(SMTPSession session, MailEnvelope mail) {
         queued.add(mail);
-        return new HookResult(HookReturnCode.OK);
+        return new HookResult(HookReturnCode.ok());
     }
  
     public List<MailEnvelope> getQueued() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/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 5830dbb..419bafa 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
@@ -90,10 +90,10 @@ public class MailboxDeliverToRecipientHandler implements DeliverToRecipientHook
                     .build(envelope.getMessageInputStream()),
                     mailboxSession);
             mailboxManager.endProcessingRequest(mailboxSession);
-            result = new HookResult(HookReturnCode.OK, SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.CONTENT_OTHER) + " Message received");
+            result = new HookResult(HookReturnCode.ok(), SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.CONTENT_OTHER) + " Message received");
         } catch (IOException | MailboxException | UsersRepositoryException e) {
             LOGGER.error("Unexpected error handling DATA stream", e);
-            result = new HookResult(HookReturnCode.DENYSOFT, " Temporary error deliver message to " + recipient);
+            result = new HookResult(HookReturnCode.denySoft(), " Temporary error deliver message to " + recipient);
         }
         return result;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
index 6044be0..1b2c572 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AddDefaultAttributesMessageHook.java
@@ -61,7 +61,7 @@ public class AddDefaultAttributesMessageHook implements JamesMessageHook {
                 mail.setAttribute(SMTP_AUTH_NETWORK_NAME, "true");
             }
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java
index ce8f348..e2df42b 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java
@@ -74,7 +74,7 @@ public class MailPriorityHandler implements JamesMessageHook, ProtocolHandler {
         if (p != null) {
             mail.setAttribute(MailPrioritySupport.MAIL_PRIORITY, p);
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SendMailHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SendMailHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SendMailHandler.java
index 3f01474..a14c3ba 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SendMailHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SendMailHandler.java
@@ -72,10 +72,10 @@ public class SendMailHandler implements JamesMessageHook {
             LOGGER.info("Successfully spooled mail {} from {} on {} for {}", mail.getName(), mail.getSender(), session.getRemoteAddress().getAddress(), mail.getRecipients());
         } catch (MessagingException me) {
             LOGGER.error("Unknown error occurred while processing DATA.", me);
-            return new HookResult(HookReturnCode.DENYSOFT, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + " Error processing message.");
+            return new HookResult(HookReturnCode.denySoft(), DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.UNDEFINED_STATUS) + " Error processing message.");
         }
         
-        return new HookResult(HookReturnCode.OK, DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.CONTENT_OTHER) + " Message received");
+        return new HookResult(HookReturnCode.ok(), DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.CONTENT_OTHER) + " Message received");
     
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
index 53028a9..cbdd726 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
@@ -69,7 +69,7 @@ public class SenderAuthIdentifyVerificationRcptHook extends AbstractSenderAuthId
         if (nSession.verifyIdentity()) {
             return super.doRcpt(session, sender, rcpt);
         } else {
-            return new HookResult(HookReturnCode.DECLINED);
+            return new HookResult(HookReturnCode.declined());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SetMimeHeaderHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SetMimeHeaderHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SetMimeHeaderHandler.java
index 1356272..6c70749 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SetMimeHeaderHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SetMimeHeaderHandler.java
@@ -81,7 +81,7 @@ public class SetMimeHeaderHandler implements JamesMessageHook, ProtocolHandler {
             LOGGER.error(me.getMessage());
         }
 
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/UsersRepositoryAuthHook.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/UsersRepositoryAuthHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/UsersRepositoryAuthHook.java
index 9fbf77f..152ad96 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/UsersRepositoryAuthHook.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/UsersRepositoryAuthHook.java
@@ -65,12 +65,12 @@ public class UsersRepositoryAuthHook implements AuthHook {
             if (users.test(username, password)) {
                 session.setUser(username);
                 session.setRelayingAllowed(true);
-                return new HookResult(HookReturnCode.OK, "Authentication Successful");
+                return new HookResult(HookReturnCode.ok(), "Authentication Successful");
             }
         } catch (UsersRepositoryException e) {
             LOGGER.info("Unable to access UsersRepository", e);
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/JDBCGreylistHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/JDBCGreylistHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/JDBCGreylistHandler.java
index 3b69a7e..152825b 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/JDBCGreylistHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/JDBCGreylistHandler.java
@@ -360,7 +360,7 @@ public class JDBCGreylistHandler extends AbstractGreylistHandler implements Prot
         } else {
             LOGGER.info("IpAddress {} is whitelisted. Skip greylisting.", session.getRemoteAddress().getAddress().getHostAddress());
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
index 26eae88..207529d 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SPFHandler.java
@@ -152,18 +152,18 @@ public class SPFHandler implements JamesMessageHook, MailHook, RcptHook, Protoco
         if (!session.isRelayingAllowed()) {
             // Check if session is blocklisted
             if (session.getAttachment(SPF_BLOCKLISTED, State.Transaction) != null) {
-                return new HookResult(HookReturnCode.DENY, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " " + session.getAttachment(SPF_TEMPBLOCKLISTED, State.Transaction));
+                return new HookResult(HookReturnCode.deny(), DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " " + session.getAttachment(SPF_TEMPBLOCKLISTED, State.Transaction));
             } else if (session.getAttachment(SPF_TEMPBLOCKLISTED, State.Transaction) != null) {
-                return new HookResult(HookReturnCode.DENYSOFT, SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + " " + "Temporarily rejected: Problem on SPF lookup");
+                return new HookResult(HookReturnCode.denySoft(), SMTPRetCode.LOCAL_ERROR, DSNStatus.getStatus(DSNStatus.TRANSIENT, DSNStatus.NETWORK_DIR_SERVER) + " " + "Temporarily rejected: Problem on SPF lookup");
             }
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     @Override
     public HookResult doMail(SMTPSession session, MailAddress sender) {
         doSPFCheck(session, sender);
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SpamAssassinHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SpamAssassinHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SpamAssassinHandler.java
index efa9611..bdcfd3b 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SpamAssassinHandler.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/SpamAssassinHandler.java
@@ -143,7 +143,7 @@ public class SpamAssassinHandler implements JamesMessageHook, ProtocolHandler {
                         LOGGER.info(buffer);
 
                         // Message reject .. abort it!
-                        return new HookResult(HookReturnCode.DENY, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER) + " This message reach the spam hits treshold. Please contact the Postmaster if the email is not SPAM. Message rejected");
+                        return new HookResult(HookReturnCode.deny(), DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER) + " This message reach the spam hits treshold. Please contact the Postmaster if the email is not SPAM. Message rejected");
                     }
                 } catch (NumberFormatException e) {
                     // hits unknown
@@ -152,7 +152,7 @@ public class SpamAssassinHandler implements JamesMessageHook, ProtocolHandler {
         } catch (MessagingException e) {
             LOGGER.error(e.getMessage());
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/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 f400763..5e331f9 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
@@ -125,13 +125,13 @@ public class URIRBLHandler implements JamesMessageHook, ProtocolHandler {
             }
 
             if (detail != null) {
-                return new HookResult(HookReturnCode.DENY, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER) + "Rejected: message contains domain " + target + " listed by " + uRblServer + " . Details: " + detail);
+                return new HookResult(HookReturnCode.deny(), DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER) + "Rejected: message contains domain " + target + " listed by " + uRblServer + " . Details: " + detail);
             } else {
-                return new HookResult(HookReturnCode.DENY, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER) + " Rejected: message contains domain " + target + " listed by " + uRblServer);
+                return new HookResult(HookReturnCode.deny(), DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_OTHER) + " Rejected: message contains domain " + target + " listed by " + uRblServer);
             }
 
         } else {
-            return new HookResult(HookReturnCode.DECLINED);
+            return new HookResult(HookReturnCode.declined());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java
index 4cdfb89..9844ff5 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java
@@ -98,7 +98,7 @@ public class ValidRcptMX implements RcptHook, ProtocolHandler {
             try {
                 mx = dnsService.findMXRecords(domain.name()).iterator();
             } catch (TemporaryResolutionException e1) {
-                return new HookResult(HookReturnCode.DENYSOFT);
+                return new HookResult(HookReturnCode.denySoft());
             }
 
             if (mx != null && mx.hasNext()) {
@@ -110,7 +110,7 @@ public class ValidRcptMX implements RcptHook, ProtocolHandler {
 
                         // Check for invalid MX
                         if (bNetwork.matchInetNetwork(ip)) {
-                            return new HookResult(HookReturnCode.DENY, SMTPRetCode.AUTH_REQUIRED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Invalid MX " + session.getRemoteAddress().getAddress().toString() + " for domain " + domain + ". Reject email");
+                            return new HookResult(HookReturnCode.deny(), SMTPRetCode.AUTH_REQUIRED, DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.SECURITY_AUTH) + " Invalid MX " + session.getRemoteAddress().getAddress().toString() + " for domain " + domain + ". Reject email");
                         }
                     } catch (UnknownHostException e) {
                         // Ignore this
@@ -118,7 +118,7 @@ public class ValidRcptMX implements RcptHook, ProtocolHandler {
                 }
             }
         }
-        return new HookResult(HookReturnCode.DECLINED);
+        return new HookResult(HookReturnCode.declined());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/jmx/HookStats.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/jmx/HookStats.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/jmx/HookStats.java
index 6636bc7..86b4e7a 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/jmx/HookStats.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/jmx/HookStats.java
@@ -56,20 +56,21 @@ public class HookStats extends StandardMBean implements HookStatsMBean, Disposab
         mbeanserver.registerMBean(this, baseObjectName);
     }
 
-    public void increment(int code) {
-        if ((code & HookReturnCode.OK) == HookReturnCode.OK) {
-            ok.incrementAndGet();
+    public void increment(HookReturnCode code) {
+        switch (code.getAction()) {
+            case DECLINED:
+                declined.incrementAndGet();
+                break;
+            case DENY:
+                deny.incrementAndGet();
+                break;
+            case DENYSOFT:
+                denysoft.incrementAndGet();
+                break;
+            case OK:
+                ok.incrementAndGet();
+                break;
         }
-        if ((code & HookReturnCode.DECLINED) == HookReturnCode.DECLINED) {
-            declined.incrementAndGet();
-        }
-        if ((code & HookReturnCode.DENYSOFT) == HookReturnCode.DENYSOFT) {
-            denysoft.incrementAndGet();
-        }
-        if ((code & HookReturnCode.DENY) == HookReturnCode.DENY) {
-            deny.incrementAndGet();
-        }
-
         all.incrementAndGet();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java
index fe9b76f..9c81ad9 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SPFHandlerTest.java
@@ -176,8 +176,8 @@ public class SPFHandlerTest {
 
         spf.setDNSService(mockedDnsService);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 
     @Test
@@ -189,8 +189,8 @@ public class SPFHandlerTest {
 
         spf.setDNSService(mockedDnsService);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("fail", HookReturnCode.DENY, spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("fail", HookReturnCode.deny(), spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 
     @Test
@@ -202,8 +202,8 @@ public class SPFHandlerTest {
 
         spf.setDNSService(mockedDnsService);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("softfail declined", HookReturnCode.DECLINED,
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("softfail declined", HookReturnCode.declined(),
                 spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 
@@ -219,8 +219,8 @@ public class SPFHandlerTest {
 
         spf.setBlockSoftFail(true);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("softfail reject", HookReturnCode.DENY, spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("softfail reject", HookReturnCode.deny(), spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 
     @Test
@@ -235,8 +235,8 @@ public class SPFHandlerTest {
 
         spf.setBlockSoftFail(true);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("permerror reject", HookReturnCode.DENY, spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("permerror reject", HookReturnCode.deny(), spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 
     @Test
@@ -250,8 +250,8 @@ public class SPFHandlerTest {
 
         spf.setDNSService(mockedDnsService);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("temperror denysoft", HookReturnCode.DENYSOFT, 
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("temperror denysoft", HookReturnCode.denySoft(),
                 spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 
@@ -265,8 +265,8 @@ public class SPFHandlerTest {
 
         spf.setDNSService(mockedDnsService);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 
     @Test
@@ -280,7 +280,7 @@ public class SPFHandlerTest {
 
         spf.setBlockPermError(false);
 
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doMail(mockedSMTPSession, sender).getResult());
-        assertEquals("declined", HookReturnCode.DECLINED, spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doMail(mockedSMTPSession, sender).getResult());
+        assertEquals("declined", HookReturnCode.declined(), spf.doRcpt(mockedSMTPSession, sender, rcpt).getResult());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/d57da7bc/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
index 5507679..97acaea 100644
--- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
+++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SpamAssassinHandlerTest.java
@@ -119,7 +119,7 @@ public class SpamAssassinHandlerTest {
         handler.setSpamdRejectionHits(200.0);
         HookResult response = handler.onMessage(session, mockedMail);
 
-        assertEquals("Email was not rejected", response.getResult(), HookReturnCode.DECLINED);
+        assertEquals("Email was not rejected", response.getResult(), HookReturnCode.declined());
         assertEquals("email was not spam", mockedMail.getAttribute(SpamAssassinResult.FLAG_MAIL_ATTRIBUTE_NAME), "NO");
         assertNotNull("spam hits", mockedMail.getAttribute(SpamAssassinResult.STATUS_MAIL_ATTRIBUTE_NAME));
 
@@ -136,7 +136,7 @@ public class SpamAssassinHandlerTest {
         handler.setSpamdRejectionHits(2000.0);
         HookResult response = handler.onMessage(session, mockedMail);
 
-        assertEquals("Email was not rejected", response.getResult(), HookReturnCode.DECLINED);
+        assertEquals("Email was not rejected", response.getResult(), HookReturnCode.declined());
         assertEquals("email was spam", mockedMail.getAttribute(SpamAssassinResult.FLAG_MAIL_ATTRIBUTE_NAME), "YES");
         assertNotNull("spam hits", mockedMail.getAttribute(SpamAssassinResult.STATUS_MAIL_ATTRIBUTE_NAME));
     }
@@ -152,7 +152,7 @@ public class SpamAssassinHandlerTest {
         handler.setSpamdRejectionHits(200.0);
         HookResult response = handler.onMessage(session, mockedMail);
 
-        assertEquals("Email was rejected", response.getResult(), HookReturnCode.DENY);
+        assertEquals("Email was rejected", response.getResult(), HookReturnCode.deny());
         assertEquals("email was spam", mockedMail.getAttribute(SpamAssassinResult.FLAG_MAIL_ATTRIBUTE_NAME), "YES");
         assertNotNull("spam hits", mockedMail.getAttribute(SpamAssassinResult.STATUS_MAIL_ATTRIBUTE_NAME));
     }


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