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 no...@apache.org on 2011/12/22 23:17:32 UTC

svn commit: r1222491 - in /james/protocols/trunk/smtp/src: main/java/org/apache/james/protocols/smtp/core/ main/java/org/apache/james/protocols/smtp/core/esmtp/ main/java/org/apache/james/protocols/smtp/core/fastfail/ test/java/org/apache/james/protoco...

Author: norman
Date: Thu Dec 22 22:17:31 2011
New Revision: 1222491

URL: http://svn.apache.org/viewvc?rev=1222491&view=rev
Log:
Remove usage of @deprecated methods. See PROTOCOLS-63

Modified:
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
    james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java Thu Dec 22 22:17:31 2011
@@ -20,6 +20,7 @@ package org.apache.james.protocols.smtp.
 
 import java.util.Locale;
 
+import org.apache.james.protocols.api.ProtocolSession;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -40,8 +41,8 @@ public abstract class AbstractSenderAuth
             MailAddress rcpt) {
         if (session.getUser() != null) {
             String authUser = (session.getUser()).toLowerCase(Locale.US);
-            MailAddress senderAddress = (MailAddress) session.getState().get(
-                    SMTPSession.SENDER);
+            MailAddress senderAddress = (MailAddress) session.getAttachment(
+                    SMTPSession.SENDER, ProtocolSession.State.Transaction);
             String username= null;
 
             if (senderAddress != null) {

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataCmdHandler.java Thu Dec 22 22:17:31 2011
@@ -25,6 +25,7 @@ import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.james.protocols.api.ProtocolSession;
 import org.apache.james.protocols.api.Request;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.CommandHandler;
@@ -113,8 +114,8 @@ public class DataCmdHandler implements C
      */
     @SuppressWarnings("unchecked")
     protected Response doDATA(SMTPSession session, String argument) {
-        MailEnvelope env = createEnvelope(session, (MailAddress) session.getState().get(SMTPSession.SENDER), new ArrayList<MailAddress>((Collection<MailAddress>)session.getState().get(SMTPSession.RCPT_LIST)));
-        session.getState().put(MAILENV, env);
+        MailEnvelope env = createEnvelope(session, (MailAddress) session.getAttachment(SMTPSession.SENDER,ProtocolSession.State.Transaction), new ArrayList<MailAddress>((Collection<MailAddress>)session.getAttachment(SMTPSession.RCPT_LIST,ProtocolSession.State.Transaction)));
+        session.setAttachment(MAILENV, env,ProtocolSession.State.Transaction);
         session.pushLineHandler(lineHandler);
         
         return new SMTPResponse(SMTPRetCode.DATA_READY, "Ok Send data ending with <CRLF>.<CRLF>");
@@ -167,9 +168,9 @@ public class DataCmdHandler implements C
         if ((argument != null) && (argument.length() > 0)) {
             return new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_INVALID_ARG)+" Unexpected argument provided with DATA command");
         }
-        if (!session.getState().containsKey(SMTPSession.SENDER)) {
+        if (session.getAttachment(SMTPSession.SENDER, ProtocolSession.State.Transaction) == null) {
             return new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" No sender specified");
-        } else if (!session.getState().containsKey(SMTPSession.RCPT_LIST)) {
+        } else if (session.getAttachment(SMTPSession.RCPT_LIST, ProtocolSession.State.Transaction) == null) {
             return new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.DELIVERY_OTHER)+" No recipients specified");
         }
         return null;

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/DataLineMessageHookHandler.java Thu Dec 22 22:17:31 2011
@@ -26,6 +26,7 @@ import java.io.OutputStream;
 import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.james.protocols.api.ProtocolSession;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.ExtensibleHandler;
 import org.apache.james.protocols.api.handler.LineHandler;
@@ -57,7 +58,7 @@ public class DataLineMessageHookHandler 
      * @see org.apache.james.protocols.smtp.core.DataLineFilter#onLine(SMTPSession, byte[], LineHandler)
      */
     public Response onLine(final SMTPSession session, byte[] line, LineHandler<SMTPSession> next) {
-        MailEnvelopeImpl env = (MailEnvelopeImpl) session.getState().get(DataCmdHandler.MAILENV);
+        MailEnvelopeImpl env = (MailEnvelopeImpl) session.getAttachment(DataCmdHandler.MAILENV, ProtocolSession.State.Transaction);
         OutputStream out = env.getMessageOutputStream();
         try {
             // 46 is "."

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/HeloCmdHandler.java Thu Dec 22 22:17:31 2011
@@ -23,6 +23,8 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 
+import org.apache.james.protocols.api.ProtocolSession;
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
@@ -55,8 +57,7 @@ public class HeloCmdHandler extends Abst
      */
     protected Response doCoreCmd(SMTPSession session, String command,
             String parameters) {
-        session.getConnectionState().put(SMTPSession.CURRENT_HELO_MODE,
-        		COMMAND_NAME);
+        session.setAttachment(SMTPSession.CURRENT_HELO_MODE, COMMAND_NAME, ProtocolSession.State.Connection);
         StringBuilder response = new StringBuilder();
         response.append(session.getConfiguration().getHelloName()).append(
                 " Hello ").append(parameters).append(" [").append(
@@ -79,7 +80,7 @@ public class HeloCmdHandler extends Abst
                             + " Domain address required: " + COMMAND_NAME);
         } else {
             // store provided name
-            session.getState().put(SMTPSession.CURRENT_HELO_NAME, parameters);
+            session.setAttachment(SMTPSession.CURRENT_HELO_NAME, parameters, State.Connection);
             return null;
         }
     }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java Thu Dec 22 22:17:31 2011
@@ -29,6 +29,7 @@ import java.util.Locale;
 import java.util.Map;
 import java.util.StringTokenizer;
 
+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.smtp.MailAddress;
@@ -61,7 +62,7 @@ public class MailCmdHandler extends Abst
         // Check if the response was not ok
         if (response.getRetCode().equals(SMTPRetCode.MAIL_OK) == false) {
             // cleanup the session
-            session.getState().remove(SMTPSession.SENDER);
+            session.setAttachment(SMTPSession.SENDER, null,  State.Transaction);
         }
 
         return response;
@@ -78,8 +79,8 @@ public class MailCmdHandler extends Abst
      */
     private Response doMAIL(SMTPSession session, String argument) {
         StringBuilder responseBuffer = new StringBuilder();
-        MailAddress sender = (MailAddress) session.getState().get(
-                SMTPSession.SENDER);
+        MailAddress sender = (MailAddress) session.getAttachment(
+                SMTPSession.SENDER, State.Transaction);
         responseBuffer.append(
                 DSNStatus.getStatus(DSNStatus.SUCCESS, DSNStatus.ADDRESS_OTHER))
                 .append(" Sender <");
@@ -129,12 +130,12 @@ public class MailCmdHandler extends Abst
             sender = argument.substring(colonIndex + 1);
             argument = argument.substring(0, colonIndex);
         }
-        if (session.getState().containsKey(SMTPSession.SENDER)) {
+        if (session.getAttachment(SMTPSession.SENDER, State.Transaction) != null) {
             return new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus
                     .getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_OTHER)
                     + " Sender already specified");
-        } else if (!session.getConnectionState().containsKey(
-                SMTPSession.CURRENT_HELO_MODE)
+        } else if (session.getAttachment(
+                SMTPSession.CURRENT_HELO_MODE, State.Connection) == null
                 && session.getConfiguration().useHeloEhloEnforcement()) {
             return new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus
                     .getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_OTHER)
@@ -244,7 +245,7 @@ public class MailCmdHandler extends Abst
             }
 
             // Store the senderAddress in session map
-            session.getState().put(SMTPSession.SENDER, senderAddress);
+            session.setAttachment(SMTPSession.SENDER, senderAddress, State.Transaction);
         }
         return null;
     }
@@ -260,7 +261,7 @@ public class MailCmdHandler extends Abst
      * {@inheritDoc}
      */
     protected HookResult callHook(MailHook rawHook, SMTPSession session, String parameters) {
-        return rawHook.doMail(session,(MailAddress) session.getState().get(SMTPSession.SENDER));
+        return rawHook.doMail(session,(MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction));
     }
 
     

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/RcptCmdHandler.java Thu Dec 22 22:17:31 2011
@@ -26,6 +26,7 @@ import java.util.Collections;
 import java.util.Locale;
 import java.util.StringTokenizer;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.smtp.MailAddress;
@@ -62,15 +63,15 @@ public class RcptCmdHandler extends Abst
     @SuppressWarnings("unchecked")
     protected Response doCoreCmd(SMTPSession session, String command,
             String parameters) {
-        Collection<MailAddress> rcptColl = (Collection<MailAddress>) session.getState().get(
-                SMTPSession.RCPT_LIST);
+        Collection<MailAddress> rcptColl = (Collection<MailAddress>) session.getAttachment(
+                SMTPSession.RCPT_LIST, State.Transaction);
         if (rcptColl == null) {
             rcptColl = new ArrayList<MailAddress>();
         }
-        MailAddress recipientAddress = (MailAddress) session.getState().get(
-                CURRENT_RECIPIENT);
+        MailAddress recipientAddress = (MailAddress) session.getAttachment(
+                CURRENT_RECIPIENT, State.Transaction);
         rcptColl.add(recipientAddress);
-        session.getState().put(SMTPSession.RCPT_LIST, rcptColl);
+        session.setAttachment(SMTPSession.RCPT_LIST, rcptColl, State.Transaction);
         StringBuilder response = new StringBuilder();
         response
                 .append(
@@ -95,7 +96,7 @@ public class RcptCmdHandler extends Abst
             recipient = argument.substring(colonIndex + 1);
             argument = argument.substring(0, colonIndex);
         }
-        if (!session.getState().containsKey(SMTPSession.SENDER)) {
+        if (session.getAttachment(SMTPSession.SENDER, State.Transaction) == null) {
             return new SMTPResponse(SMTPRetCode.BAD_SEQUENCE, DSNStatus
                     .getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_OTHER)
                     + " Need MAIL before RCPT");
@@ -203,7 +204,7 @@ public class RcptCmdHandler extends Abst
             optionTokenizer = null;
         }
 
-        session.getState().put(CURRENT_RECIPIENT,recipientAddress);
+        session.setAttachment(CURRENT_RECIPIENT,recipientAddress, State.Transaction);
 
         return null;
     }
@@ -218,11 +219,10 @@ public class RcptCmdHandler extends Abst
         } else if (null != recipient) {
             sb.append(" [to:" + recipient + "]");
         }
-        if (null != session.getState().get(SMTPSession.SENDER)) {
-            sb
-                    .append(" [from:"
-                            + ((MailAddress) session.getState().get(
-                                    SMTPSession.SENDER)).toString() + "]");
+        if (null != session.getAttachment(SMTPSession.SENDER, State.Transaction)) {
+            sb.append(" [from:"
+                            + ((MailAddress) session.getAttachment(
+                                    SMTPSession.SENDER, State.Transaction)).toString() + "]");
         }
         return sb.toString();
     }
@@ -247,8 +247,8 @@ public class RcptCmdHandler extends Abst
     protected HookResult callHook(RcptHook rawHook, SMTPSession session,
             String parameters) {
         return rawHook.doRcpt(session,
-                (MailAddress) session.getState().get(SMTPSession.SENDER),
-                (MailAddress) session.getState().get(CURRENT_RECIPIENT));
+                (MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction),
+                (MailAddress) session.getAttachment(CURRENT_RECIPIENT, State.Transaction));
     }
 
     protected String getDefaultDomain() {

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/ReceivedDataLineFilter.java Thu Dec 22 22:17:31 2011
@@ -26,6 +26,7 @@ import java.util.Date;
 import java.util.List;
 import java.util.Locale;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.api.handler.LineHandler;
 import org.apache.james.protocols.smtp.MailAddress;
@@ -52,10 +53,10 @@ public class ReceivedDataLineFilter impl
      * @see org.apache.james.protocols.smtp.core.DataLineFilter#onLine(SMTPSession, byte[], LineHandler)
      */
     public Response onLine(SMTPSession session,  byte[] line, LineHandler<SMTPSession> next) {
-        if (session.getState().containsKey(HEADERS_WRITTEN) == false) {
+        if (session.getAttachment(HEADERS_WRITTEN, State.Transaction) == null) {
             Response response = addNewReceivedMailHeaders(session, next);
 
-            session.getState().put(HEADERS_WRITTEN, true);
+            session.setAttachment(HEADERS_WRITTEN, true, State.Transaction);
             
             if (response != null) {
                 return response;
@@ -70,8 +71,8 @@ public class ReceivedDataLineFilter impl
         try {
             StringBuilder headerLineBuffer = new StringBuilder();
 
-            String heloMode = (String) session.getConnectionState().get(SMTPSession.CURRENT_HELO_MODE);
-            String heloName = (String) session.getConnectionState().get(SMTPSession.CURRENT_HELO_NAME);
+            String heloMode = (String) session.getAttachment(SMTPSession.CURRENT_HELO_MODE, State.Connection);
+            String heloName = (String) session.getAttachment(SMTPSession.CURRENT_HELO_NAME, State.Connection);
 
             // Put our Received header first
             headerLineBuffer.append("Received: from ").append(session.getRemoteAddress().getHostName());
@@ -93,7 +94,7 @@ public class ReceivedDataLineFilter impl
            
             headerLineBuffer.append(" ID ").append(session.getSessionID());
 
-            if (((Collection<?>) session.getState().get(SMTPSession.RCPT_LIST)).size() == 1) {
+            if (((Collection<?>) session.getAttachment(SMTPSession.RCPT_LIST, State.Transaction)).size() == 1) {
                 // Only indicate a recipient if they're the only recipient
                 // (prevents email address harvesting and large headers in
                 // bulk email)
@@ -102,7 +103,7 @@ public class ReceivedDataLineFilter impl
                 headerLineBuffer.delete(0, headerLineBuffer.length());
 
                 headerLineBuffer.delete(0, headerLineBuffer.length());
-                headerLineBuffer.append("          for <").append(((List<MailAddress>) session.getState().get(SMTPSession.RCPT_LIST)).get(0).toString()).append(">;").append("\r\n");
+                headerLineBuffer.append("          for <").append(((List<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, State.Transaction)).get(0).toString()).append(">;").append("\r\n");
                 response = next.onLine(session, headerLineBuffer.toString().getBytes(CHARSET));
 
                 if (response != null) {

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java Thu Dec 22 22:17:31 2011
@@ -25,6 +25,7 @@ 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.Response;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
@@ -60,13 +61,13 @@ public class UnknownCmdHandler extends A
 
     @Override
     protected Response doFilterChecks(SMTPSession session, String command, String parameters) {
-        session.getState().put("CURR_COMMAND", command);
+        session.setAttachment("CURR_COMMAND", command, State.Transaction);
         return null;
     }
 
     @Override
     protected HookResult callHook(UnknownHook rawHook, SMTPSession session, String parameters) {
-        return rawHook.doUnknown(session, (String) session.getState().get("CURR_COMMAND"));
+        return rawHook.doUnknown(session, (String) session.getAttachment("CURR_COMMAND", State.Transaction));
     }
 
     @Override

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/EhloCmdHandler.java Thu Dec 22 22:17:31 2011
@@ -24,6 +24,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
@@ -62,8 +63,8 @@ public class EhloCmdHandler extends Abst
                 .append(" [")
                 .append(session.getRemoteAddress().getAddress().getHostAddress()).append("])"));
         
-        session.getConnectionState().put(SMTPSession.CURRENT_HELO_MODE,
-                COMMAND_NAME);
+        session.setAttachment(SMTPSession.CURRENT_HELO_MODE,
+                COMMAND_NAME, State.Connection);
 
         processExtensions(session, resp);
 
@@ -146,7 +147,7 @@ public class EhloCmdHandler extends Abst
                             + " Domain address required: " + COMMAND_NAME);
         } else {
             // store provided name
-            session.getState().put(SMTPSession.CURRENT_HELO_NAME, parameters);
+            session.setAttachment(SMTPSession.CURRENT_HELO_NAME, parameters, State.Transaction);
             return null;
         }
     }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/esmtp/MailSizeEsmtpExtension.java Thu Dec 22 22:17:31 2011
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.protocols.api.Response;
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.api.handler.LineHandler;
 import org.apache.james.protocols.smtp.MailEnvelope;
 import org.apache.james.protocols.smtp.SMTPRetCode;
@@ -52,7 +53,7 @@ public class MailSizeEsmtpExtension impl
     public HookResult doMailParameter(SMTPSession session, String paramName,
             String paramValue) {
         HookResult res = doMailSize(session, paramValue,
-                (String) session.getState().get(SMTPSession.SENDER));
+                (String) session.getAttachment(SMTPSession.SENDER, State.Transaction));
         return res;
     }
 
@@ -131,7 +132,7 @@ public class MailSizeEsmtpExtension impl
         } else {
             // put the message size in the message state so it can be used
             // later to restrict messages for user quotas, etc.
-            session.getState().put(MESG_SIZE, Integer.valueOf(size));
+            session.setAttachment(MESG_SIZE, Integer.valueOf(size), State.Transaction);
         }
         return null;
     }
@@ -142,7 +143,7 @@ public class MailSizeEsmtpExtension impl
      */
     public Response onLine(SMTPSession session, byte[] line, LineHandler<SMTPSession> next) {
         Response response = null;
-    	Boolean failed = (Boolean) session.getState().get(MESG_FAILED);
+    	Boolean failed = (Boolean) session.getAttachment(MESG_FAILED, State.Transaction);
         // If we already defined we failed and sent a reply we should simply
         // wait for a CRLF.CRLF to be sent by the client.
         if (failed != null && failed.booleanValue()) {
@@ -151,7 +152,7 @@ public class MailSizeEsmtpExtension impl
             if (line.length == 3 && line[0] == 46) {
                 response = next.onLine(session, line);
             } else {
-                Long currentSize = (Long) session.getState().get("CURRENT_SIZE");
+                Long currentSize = (Long) session.getAttachment("CURRENT_SIZE", State.Transaction);
                 Long newSize;
                 if (currentSize == null) {
                     newSize = Long.valueOf(line.length);
@@ -164,7 +165,7 @@ public class MailSizeEsmtpExtension impl
                     // logging of extra lines of data
                     // that are sent after the size limit has
                     // been hit.
-                    session.getState().put(MESG_FAILED, Boolean.TRUE);
+                    session.setAttachment(MESG_FAILED, Boolean.TRUE, State.Transaction);
                     // then let the client know that the size
                     // limit has been hit.
                     response = next.onLine(session, ".\r\n".getBytes());
@@ -172,7 +173,7 @@ public class MailSizeEsmtpExtension impl
                     response = next.onLine(session, line);
                 }
                 
-                session.getState().put("CURRENT_SIZE", newSize);
+                session.setAttachment("CURRENT_SIZE", newSize, State.Transaction);
             }
         }
         return response;
@@ -182,14 +183,14 @@ public class MailSizeEsmtpExtension impl
      * @see org.apache.james.protocols.smtp.hook.MessageHook#onMessage(SMTPSession, MailEnvelope)
      */
     public HookResult onMessage(SMTPSession session, MailEnvelope mail) {
-        Boolean failed = (Boolean) session.getState().get(MESG_FAILED);
+        Boolean failed = (Boolean) session.getAttachment(MESG_FAILED, State.Transaction);
         if (failed != null && failed.booleanValue()) {
             HookResult response = new HookResult(HookReturnCode.DENY, SMTPRetCode.QUOTA_EXCEEDED,DSNStatus.getStatus(DSNStatus.PERMANENT,
                     DSNStatus.SYSTEM_MSG_TOO_BIG) + " Maximum message size exceeded");
   
             StringBuilder errorBuffer = new StringBuilder(256).append(
                     "Rejected message from ").append(
-                    session.getState().get(SMTPSession.SENDER).toString())
+                    session.getAttachment(SMTPSession.SENDER, State.Transaction).toString())
                     .append(" from ").append(session.getRemoteAddress().getAddress().getHostAddress())
                     .append(" exceeding system maximum message size of ")
                     .append(

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandler.java Thu Dec 22 22:17:31 2011
@@ -24,6 +24,7 @@ package org.apache.james.protocols.smtp.
 import java.util.Collection;
 import java.util.StringTokenizer;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -167,11 +168,11 @@ public class DNSRBLHandler implements  R
                             // Set the detail
                             String blocklistedDetail = txt.iterator().next().toString();
                             
-                            session.getConnectionState().put(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, blocklistedDetail);
+                            session.setAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, blocklistedDetail, State.Connection);
                         }
                     }
                     
-                    session.getConnectionState().put(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, "true");
+                    session.setAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, "true", State.Connection);
                     return;
                 } catch (java.net.UnknownHostException uhe) {
                     // if it is unknown, it isn't blocked
@@ -190,7 +191,7 @@ public class DNSRBLHandler implements  R
         checkDNSRBL(session, session.getRemoteAddress().getAddress().getHostAddress());
 
         if (!session.isRelayingAllowed()) {
-            String blocklisted = (String) session.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME);
+            String blocklisted = (String) session.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, State.Connection);
     
             if (blocklisted != null) { // was found in the RBL
                 if (blocklistedDetail == null) {

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandler.java Thu Dec 22 22:17:31 2011
@@ -20,6 +20,7 @@
 
 package org.apache.james.protocols.smtp.core.fastfail;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.SMTPSession;
 import org.apache.james.protocols.smtp.hook.HookResult;
 import org.apache.james.protocols.smtp.hook.HookReturnCode;
@@ -46,13 +47,13 @@ public class MaxUnknownCmdHandler implem
      * @see org.apache.james.protocols.smtp.hook.UnknownHook#doUnknown(org.apache.james.protocols.smtp.SMTPSession, java.lang.String)
      */
     public HookResult doUnknown(SMTPSession session, String command) {
-        Integer count = (Integer) session.getState().get(UNKOWN_COMMAND_COUNT);
+        Integer count = (Integer) session.getAttachment(UNKOWN_COMMAND_COUNT, State.Transaction);
         if (count == null) {
             count = 1;
         } else {
             count++;
         }
-        session.getState().put(UNKOWN_COMMAND_COUNT, count);
+        session.setAttachment(UNKOWN_COMMAND_COUNT, count, State.Transaction);
         if (count > maxUnknown) {
             return new HookResult(HookReturnCode.DENY | HookReturnCode.DISCONNECT, "521", "Closing connection as to many unknown commands received");
 

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandler.java Thu Dec 22 22:17:31 2011
@@ -22,6 +22,7 @@ package org.apache.james.protocols.smtp.
 import java.net.UnknownHostException;
 
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.DNSService;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
@@ -70,7 +71,7 @@ public class ResolvableEhloHeloHandler i
     protected void checkEhloHelo(SMTPSession session, String argument) {
         
         if (isBadHelo(session, argument)) {
-            session.getState().put(BAD_EHLO_HELO, "true");
+            session.setAttachment(BAD_EHLO_HELO, "true", State.Transaction);
         }
     }
     
@@ -93,7 +94,7 @@ public class ResolvableEhloHeloHandler i
 
     protected boolean check(SMTPSession session,MailAddress rcpt) {
         // not reject it
-        if (session.getState().get(BAD_EHLO_HELO) == null) {
+        if (session.getAttachment(BAD_EHLO_HELO, State.Transaction) == null) {
             return false;
         }
 
@@ -106,7 +107,7 @@ public class ResolvableEhloHeloHandler i
     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)
-                    + " Provided EHLO/HELO " + session.getState().get(SMTPSession.CURRENT_HELO_NAME) + " can not resolved.");
+                    + " Provided EHLO/HELO " + session.getAttachment(SMTPSession.CURRENT_HELO_NAME, State.Transaction) + " can not resolved.");
         } else {
             return new HookResult(HookReturnCode.DECLINED);
         }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/SupressDuplicateRcptHandler.java Thu Dec 22 22:17:31 2011
@@ -24,6 +24,7 @@ package org.apache.james.protocols.smtp.
 
 import java.util.Collection;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.MailAddress;
 import org.apache.james.protocols.smtp.SMTPRetCode;
 import org.apache.james.protocols.smtp.SMTPSession;
@@ -43,7 +44,7 @@ public class SupressDuplicateRcptHandler
      */
     @SuppressWarnings("unchecked")
     public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) {
-        Collection<MailAddress> rcptList = (Collection<MailAddress>) session.getState().get(SMTPSession.RCPT_LIST);
+        Collection<MailAddress> rcptList = (Collection<MailAddress>) session.getAttachment(SMTPSession.RCPT_LIST, State.Transaction);
     
         // Check if the recipient is already in the rcpt list
         if(rcptList != null && rcptList.contains(rcpt)) {

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/DNSRBLHandlerTest.java Thu Dec 22 22:17:31 2011
@@ -32,6 +32,7 @@ import java.util.Map;
 
 import junit.framework.TestCase;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.BaseFakeDNSService;
 import org.apache.james.protocols.smtp.BaseFakeSMTPSession;
 import org.apache.james.protocols.smtp.DNSService;
@@ -117,7 +118,7 @@ public class DNSRBLHandlerTest extends T
      */
     private void setupMockedSMTPSession(final MailAddress rcpt) {
         mockedSMTPSession = new BaseFakeSMTPSession() {
-            HashMap<String,Object> state = new HashMap<String,Object>();
+            HashMap<String,Object> sessionState = new HashMap<String,Object>();
             HashMap<String,Object> connectionState = new HashMap<String,Object>();
             
             @Override
@@ -130,7 +131,7 @@ public class DNSRBLHandlerTest extends T
             }
 
             public Map<String,Object> getState() {
-                return state;
+                return sessionState;
             }
 
             public boolean isRelayingAllowed() {
@@ -144,9 +145,29 @@ public class DNSRBLHandlerTest extends T
             public int getRcptCount() {
                 return 0;
             }
+            
+            public Object setAttachment(String key, Object value, State state) {
+                if (state == State.Connection) {
+                    if (value == null) {
+                        return connectionState.remove(key);
+                    } else {
+                        return connectionState.put(key, value);
+                    }
+                } else {
+                    if (value == null) {
+                        return sessionState.remove(key);
+                    } else {
+                        return sessionState.put(key, value);
+                    }
+                }
+            }
 
-            public Map<String,Object> getConnectionState() {       
-                return connectionState;
+            public Object getAttachment(String key, State state) {
+                if (state == State.Connection) {
+                    return connectionState.get(key);
+                } else {
+                    return sessionState.get(key);
+                }
             }
 
         };
@@ -163,8 +184,8 @@ public class DNSRBLHandlerTest extends T
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
         assertEquals("Details","Blocked - see http://www.spamcop.net/bl.shtml?127.0.0.2",
-               mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
-        assertNotNull("Blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
+               mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, State.Connection));
+        assertNotNull("Blocked",mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, State.Connection));
     }
 
     // ip is blacklisted and has txt details but we don'T want to retrieve the txt record
@@ -176,8 +197,8 @@ public class DNSRBLHandlerTest extends T
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(false);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
-        assertNull("No details",mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
-        assertNotNull("Blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
+        assertNull("No details",mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, State.Connection));
+        assertNotNull("Blocked",mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, State.Connection));
     }
 
     // ip is allowed to relay
@@ -191,8 +212,8 @@ public class DNSRBLHandlerTest extends T
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
-        assertNull("No details",mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
-        assertNull("Not blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
+        assertNull("No details", mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, State.Connection));
+        assertNull("Not blocked", mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, State.Connection));
     }
 
     // ip not on blacklist
@@ -207,8 +228,8 @@ public class DNSRBLHandlerTest extends T
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
-        assertNull("No details",mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
-        assertNull("Not blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
+        assertNull("No details", mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, State.Connection));
+        assertNull("Not blocked", mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, State.Connection));
     }
 
     // ip on blacklist without txt details
@@ -223,8 +244,8 @@ public class DNSRBLHandlerTest extends T
         rbl.setBlacklist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
-        assertNull(mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
-        assertNotNull("Blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
+        assertNull(mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, State.Connection));
+        assertNotNull("Blocked", mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, State.Connection));
     }
 
     // ip on whitelist
@@ -239,8 +260,8 @@ public class DNSRBLHandlerTest extends T
         rbl.setWhitelist(new String[] { "bl.spamcop.net." });
         rbl.setGetDetail(true);
         rbl.doRcpt(mockedSMTPSession, null, new MailAddress("test@localhost"));
-        assertNull(mockedSMTPSession.getConnectionState().get(RBL_DETAIL_MAIL_ATTRIBUTE_NAME));
-        assertNull("Not blocked",mockedSMTPSession.getConnectionState().get(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME));
+        assertNull(mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, State.Connection));
+        assertNull("Not blocked", mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, State.Connection));
     }
    
 

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/MaxUnknownCmdHandlerTest.java Thu Dec 22 22:17:31 2011
@@ -36,10 +36,38 @@ public class MaxUnknownCmdHandlerTest ex
     
     public void testRejectAndClose() throws MailAddressException {
         SMTPSession session = new BaseFakeSMTPSession() {
-            private final HashMap<String,Object> state = new HashMap<String,Object>();
+            private final HashMap<String,Object> map = new HashMap<String,Object>();
 
             public Map<String,Object> getState() {
-                return state;
+                return map;
+            }
+            /*
+             * (non-Javadoc)
+             * @see org.apache.james.protocols.api.ProtocolSession#setAttachment(java.lang.String, java.lang.Object, org.apache.james.protocols.api.ProtocolSession.State)
+             */
+            public Object setAttachment(String key, Object value, State state) {
+                if (state == State.Connection) {
+                    throw new UnsupportedOperationException();
+
+                } else {
+                    if (value == null) {
+                        return map.remove(key);
+                    } else {
+                        return map.put(key, value);
+                    }
+                }
+            }
+
+            /*
+             * (non-Javadoc)
+             * @see org.apache.james.protocols.api.ProtocolSession#getAttachment(java.lang.String, org.apache.james.protocols.api.ProtocolSession.State)
+             */
+            public Object getAttachment(String key, State state) {
+                if (state == State.Connection) {
+                    throw new UnsupportedOperationException();
+                } else {
+                    return map.get(key);
+                }
             }
         };
         

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ResolvableEhloHeloHandlerTest.java Thu Dec 22 22:17:31 2011
@@ -29,6 +29,7 @@ import java.util.Map;
 
 import junit.framework.TestCase;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.BaseFakeDNSService;
 import org.apache.james.protocols.smtp.BaseFakeSMTPSession;
 import org.apache.james.protocols.smtp.DNSService;
@@ -73,6 +74,37 @@ public class ResolvableEhloHeloHandlerTe
                 return map;
             }
             
+            /*
+             * (non-Javadoc)
+             * @see org.apache.james.protocols.api.ProtocolSession#setAttachment(java.lang.String, java.lang.Object, org.apache.james.protocols.api.ProtocolSession.State)
+             */
+            public Object setAttachment(String key, Object value, State state) {
+                if (state == State.Connection) {
+                    if (value == null) {
+                        return connectionMap.remove(key);
+                    } else {
+                        return connectionMap.put(key, value);
+                    }
+                } else {
+                    if (value == null) {
+                        return map.remove(key);
+                    } else {
+                        return connectionMap.put(key, value);
+                    }
+                }
+            }
+
+            /*
+             * (non-Javadoc)
+             * @see org.apache.james.protocols.api.ProtocolSession#getAttachment(java.lang.String, org.apache.james.protocols.api.ProtocolSession.State)
+             */
+            public Object getAttachment(String key, State state) {
+                if (state == State.Connection) {
+                    return connectionMap.get(key);
+                } else {
+                    return connectionMap.get(key);
+                }
+            }
             
         };
 
@@ -98,7 +130,7 @@ public class ResolvableEhloHeloHandlerTe
         handler.setDNSService(setupMockDNSServer());
         
         handler.doHelo(session, INVALID_HOST);
-        assertNotNull("Invalid HELO",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
+        assertNotNull("Invalid HELO",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
         
         int result = handler.doRcpt(session,null, mailAddress).getResult();
         assertEquals("Reject", result,HookReturnCode.DENY);
@@ -113,7 +145,7 @@ public class ResolvableEhloHeloHandlerTe
         handler.setDNSService(setupMockDNSServer());
   
         handler.doHelo(session, VALID_HOST);
-        assertNull("Valid HELO",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
+        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);
@@ -128,7 +160,7 @@ public class ResolvableEhloHeloHandlerTe
         handler.setDNSService(setupMockDNSServer());
 
         handler.doHelo(session, INVALID_HOST);
-        assertNotNull("Value stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
+        assertNotNull("Value stored",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
         
         
         int result = handler.doRcpt(session,null, mailAddress).getResult();
@@ -146,7 +178,7 @@ public class ResolvableEhloHeloHandlerTe
         handler.setDNSService(setupMockDNSServer());
 
         handler.doHelo(session, INVALID_HOST);
-        assertNotNull("Value stored",session.getState().get(ResolvableEhloHeloHandler.BAD_EHLO_HELO));
+        assertNotNull("Value stored",session.getAttachment(ResolvableEhloHeloHandler.BAD_EHLO_HELO, State.Transaction));
         
         
         int result = handler.doRcpt(session,null, mailAddress).getResult();

Modified: james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java?rev=1222491&r1=1222490&r2=1222491&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java (original)
+++ james/protocols/trunk/smtp/src/test/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandlerTest.java Thu Dec 22 22:17:31 2011
@@ -27,6 +27,7 @@ import java.util.Map;
 
 import junit.framework.TestCase;
 
+import org.apache.james.protocols.api.ProtocolSession.State;
 import org.apache.james.protocols.smtp.BaseFakeDNSService;
 import org.apache.james.protocols.smtp.BaseFakeSMTPSession;
 import org.apache.james.protocols.smtp.DNSService;
@@ -55,19 +56,46 @@ public class ValidSenderDomainHandlerTes
     
     private SMTPSession setupMockedSession(final MailAddress sender) {
         SMTPSession session = new BaseFakeSMTPSession() {
-            HashMap<String,Object> state = new HashMap<String,Object>();
+            HashMap<String,Object> map = new HashMap<String,Object>();
 
             public Map<String,Object> getState() {
 
-                state.put(SMTPSession.SENDER, sender);
+                map.put(SMTPSession.SENDER, sender);
 
-                return state;
+                return map;
             }
             
             public boolean isRelayingAllowed() {
                 return false;
             }
+            /*
+             * (non-Javadoc)
+             * @see org.apache.james.protocols.api.ProtocolSession#setAttachment(java.lang.String, java.lang.Object, org.apache.james.protocols.api.ProtocolSession.State)
+             */
+            public Object setAttachment(String key, Object value, State state) {
+                if (state == State.Connection) {
+                    throw new UnsupportedOperationException();
+
+                } else {
+                    if (value == null) {
+                        return getState().remove(key);
+                    } else {
+                        return getState().put(key, value);
+                    }
+                }
+            }
 
+            /*
+             * (non-Javadoc)
+             * @see org.apache.james.protocols.api.ProtocolSession#getAttachment(java.lang.String, org.apache.james.protocols.api.ProtocolSession.State)
+             */
+            public Object getAttachment(String key, State state) {
+                if (state == State.Connection) {
+                    throw new UnsupportedOperationException();
+                } else {
+                    return getState().get(key);
+                }
+            }
             
         };
         return session;
@@ -87,7 +115,7 @@ public class ValidSenderDomainHandlerTes
         ValidSenderDomainHandler handler = new ValidSenderDomainHandler();
         SMTPSession session = setupMockedSession(new MailAddress("invalid@invalid"));
         handler.setDNSService(setupDNSServer());
-        int response = handler.doMail(session,(MailAddress) session.getState().get(SMTPSession.SENDER)).getResult();
+        int response = handler.doMail(session,(MailAddress) session.getAttachment(SMTPSession.SENDER, State.Transaction)).getResult();
         
         assertEquals("Blocked cause we use reject action", response,HookReturnCode.DENY);
     }



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