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 rd...@apache.org on 2007/06/03 11:54:33 UTC

svn commit: r543869 [2/2] - in /james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src: main/java/org/apache/james/experimental/imapserver/ main/java/org/apache/james/experimental/imapserver/encode/ main/java/org/apache/james/experi...

Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java?view=auto&rev=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/main/DefaultImapEncoderFactory.java Sun Jun  3 02:54:30 2007
@@ -0,0 +1,50 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.experimental.imapserver.encode.main;
+
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.base.EndImapEncoder;
+import org.apache.james.experimental.imapserver.encode.imap4rev1.legacy.*;
+
+/**
+ * TODO: perhaps a POJO would be better
+ */
+public class DefaultImapEncoderFactory {
+    
+    public static final ImapEncoder createDefaultEncoder() {
+     
+        final EndImapEncoder endImapEncoder = new EndImapEncoder();
+        final StoreResponseEncoder storeResponseEncoder = new StoreResponseEncoder(endImapEncoder);
+        final StatusResponseEncoder statusResponseEncoder = new StatusResponseEncoder(storeResponseEncoder);
+        final SearchResponseEncoder searchResponseEncoder = new SearchResponseEncoder(statusResponseEncoder);
+        final LogoutResponseEncoder logoutResponseEncoder = new LogoutResponseEncoder(searchResponseEncoder);
+        final ListResponseEncoder listResponseEncoder = new ListResponseEncoder(logoutResponseEncoder);
+        final FetchResponseEncoder fetchResponseEncoder = new FetchResponseEncoder(listResponseEncoder);
+        final ExamineAndSelectResponseEncoder examineAndSelectResponseEncoder = new ExamineAndSelectResponseEncoder(fetchResponseEncoder);
+        final ErrorResponseEncoder errorResponseEncoder = new ErrorResponseEncoder(examineAndSelectResponseEncoder);
+        final CommandFailedResponseEncoder commandFailedResponseEncoder = new CommandFailedResponseEncoder(errorResponseEncoder);
+        final CommandCompleteResponseEncoder commandCompleteResponseEncoder = new CommandCompleteResponseEncoder(commandFailedResponseEncoder);
+        final CloseResponseEncoder closeResponseEncoder = new CloseResponseEncoder(commandCompleteResponseEncoder);
+        final CapabilityResponseEncoder capabilityResponseEncoder = new CapabilityResponseEncoder(closeResponseEncoder);
+        final BadResponseEncoder result = new BadResponseEncoder(capabilityResponseEncoder);
+        return result;
+    }
+   
+}

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/AbstractImapResponse.java Sun Jun  3 02:54:30 2007
@@ -23,7 +23,7 @@
 import org.apache.avalon.framework.logger.Logger;
 import org.apache.james.api.imap.ImapCommand;
 import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
 import org.apache.james.imapserver.store.MailboxException;
 
 abstract public class AbstractImapResponse extends AbstractLogEnabled implements ImapResponseMessage {
@@ -37,24 +37,11 @@
         this.tag = tag;
     }
     
-    public ImapCommand getCommand() {
-        return command;
+    public final String getTag() {
+        return tag;
     }
 
-    public void encode(ImapResponse response, ImapSession session) {
-        try {
-            doEncode(response, session, command, tag);
-        } catch (MailboxException e) {
-            // TODO: it seems wrong for session to throw a mailbox exception
-            // TODO: really, errors in unsolicited response should not
-            // TODO: impact the execution of this command
-            final Logger logger = getLogger();
-            if (logger != null) {
-                logger.debug("error processing command ", e);
-            }
-            response.commandFailed( command, e.getResponseCode(), e.getMessage(), tag );            
-        }
+    public ImapCommand getCommand() {
+        return command;
     }
-    protected abstract void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException;
-
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/ImapResponseMessage.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/ImapResponseMessage.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/ImapResponseMessage.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/ImapResponseMessage.java Sun Jun  3 02:54:30 2007
@@ -19,8 +19,8 @@
 
 package org.apache.james.experimental.imapserver.message.response;
 
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
+import org.apache.james.api.imap.ImapMessage;
+
 
 /**
  * <p>Responds to an IMAP command.</p>
@@ -29,12 +29,6 @@
  * and is liable to change.
  * </p>
  */
-public interface ImapResponseMessage {
+public interface ImapResponseMessage extends ImapMessage{
     
-    /**
-     * Writes response.
-     * @param response <code>ImapResponse</code>, not null
-     * @param session <code>ImapSession</code>, not null
-     */
-    void encode( ImapResponse response, ImapSession session );
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/BadResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/BadResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/BadResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/BadResponse.java Sun Jun  3 02:54:30 2007
@@ -20,8 +20,6 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.ImapResponseMessage;
 
 /**
@@ -45,12 +43,11 @@
         this.tag = tag;
     }
 
-    public void encode(ImapResponse response, ImapSession session) {
-    	if (tag == null) {
-    		response.badResponse(message);
-    	} else {
-    		response.badResponse(message, tag);
-    	}
+    public final String getMessage() {
+        return message;
     }
 
+    public final String getTag() {
+        return tag;
+    }
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CapabilityResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CapabilityResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CapabilityResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CapabilityResponse.java Sun Jun  3 02:54:30 2007
@@ -19,11 +19,7 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.api.imap.ImapConstants;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * @deprecated responses should correspond directly to the specification
@@ -32,13 +28,5 @@
 
     public CapabilityResponse(ImapCommand command, String tag) {
         super(command, tag);
-    }
-
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        // TODO: inject capability text
-        response.untaggedResponse( ImapConstants.CAPABILITY_RESPONSE );
-        session.unsolicitedResponses( response, false);
-        response.commandComplete( command , tag );            
-    }
-    
+    }    
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CloseResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CloseResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CloseResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CloseResponse.java Sun Jun  3 02:54:30 2007
@@ -19,26 +19,14 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * @deprecated responses should correspond directly to the specification
  */
 public class CloseResponse extends AbstractImapResponse {
-        public CloseResponse(ImapCommand command, String tag) {
-            super(command, tag);
-        }
-
-        protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-            //TODO: the following comment was present in the code before refactoring
-            //TODO: doesn't seem to match the implementation
-            //TODO: check that implementation is correct
-//          Don't send unsolicited responses on close.
-            session.unsolicitedResponses( response, false );
-            response.commandComplete( command , tag);
-            //TODO: what about the bye?
-        }
+    public CloseResponse(ImapCommand command, String tag) {
+        super(command, tag);
     }
+
+}

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandCompleteResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandCompleteResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandCompleteResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandCompleteResponse.java Sun Jun  3 02:54:30 2007
@@ -20,11 +20,8 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
 import org.apache.james.experimental.imapserver.message.response.ImapResponseMessage;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * 
@@ -67,10 +64,11 @@
         this.useUids = useUids;
     }
 
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        if (writeUnsolicited) {
-            session.unsolicitedResponses( response, useUids);
-        }
-        response.commandComplete( command , tag );
+    public final boolean isUseUids() {
+        return useUids;
+    }
+
+    public final boolean isWriteUnsolicited() {
+        return writeUnsolicited;
     }
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandFailedResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandFailedResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandFailedResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/CommandFailedResponse.java Sun Jun  3 02:54:30 2007
@@ -20,8 +20,6 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.ImapResponseMessage;
 
 /**
@@ -46,12 +44,21 @@
         this.tag = tag;
     }
 
-    public void encode(ImapResponse response, ImapSession session) {
-        if (responseCode == null) {
-            response.commandFailed(command, reason, tag);
-        } else {
-            response.commandFailed(command, responseCode, reason, tag);
-        }
+    public final ImapCommand getCommand() {
+        return command;
     }
 
+    public final String getReason() {
+        return reason;
+    }
+
+    public final String getResponseCode() {
+        return responseCode;
+    }
+
+    public final String getTag() {
+        return tag;
+    }
+    
+    
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ErrorResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ErrorResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ErrorResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ErrorResponse.java Sun Jun  3 02:54:30 2007
@@ -20,8 +20,6 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.ImapResponseMessage;
 
 /**
@@ -39,8 +37,12 @@
         this.message = message;
         this.tag = tag;
     }
-    
-    public void encode(ImapResponse response, ImapSession session) {
-        response.commandError(message, tag);
+
+    public final String getMessage() {
+        return message;
+    }
+
+    public final String getTag() {
+        return tag;
     }
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ExamineAndSelectResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ExamineAndSelectResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ExamineAndSelectResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ExamineAndSelectResponse.java Sun Jun  3 02:54:30 2007
@@ -21,10 +21,7 @@
 import javax.mail.Flags;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MessageResult;
 
 /**
@@ -49,24 +46,30 @@
         this.uidValidity = uidValidity;
         this.firstUnseen = firstUnseen;
         this.messageCount = messageCount;
+    }
+
+    public final MessageResult getFirstUnseen() {
+        return firstUnseen;
+    }
+
+    public final int getMessageCount() {
+        return messageCount;
+    }
+
+    public final Flags getPermanentFlags() {
+        return permanentFlags;
+    }
+
+    public final int getRecentCount() {
+        return recentCount;
+    }
+
+    public final long getUidValidity() {
+        return uidValidity;
+    }
+
+    public final boolean isWriteable() {
+        return writeable;
     }        
     
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        response.flagsResponse(permanentFlags);
-        response.recentResponse(recentCount);
-        response.okResponse("UIDVALIDITY " + uidValidity, null);
-        response.existsResponse(messageCount);
-        if (firstUnseen != null) {
-            response.okResponse("UNSEEN " + firstUnseen.getMsn(), "Message "
-                    + firstUnseen.getMsn() + " is the first unseen");
-        } else {
-            response.okResponse(null, "No messages unseen");
-        }
-        response.permanentFlagsResponse(permanentFlags);
-        if (!writeable) {
-            response.commandComplete(command, "READ-ONLY", tag);
-        } else {
-            response.commandComplete(command, "READ-WRITE", tag);
-        }
-    }
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/FetchResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/FetchResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/FetchResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/FetchResponse.java Sun Jun  3 02:54:30 2007
@@ -19,14 +19,11 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * @deprecated responses should correspond directly to the specification
@@ -48,31 +45,32 @@
         messages.add(data);
     }
     
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        for (final Iterator it=messages.iterator();it.hasNext();) {
-            MessageData data = (MessageData) it.next();
-            data.encode(response);
-        }
-        boolean omitExpunged = (!useUids);
-        session.unsolicitedResponses( response, omitExpunged , useUids);
-        response.commandComplete( command, tag );
-        
+    public List getMessageData() {
+        return Collections.unmodifiableList(messages);
     }
     
-    private class MessageData {
+    public class MessageData {
         // TODO: this is not an efficient solution
         // TODO: would be better to lazy load and stream on output
         // TODO: this is just a transitional solution
         private final int number;
+        // TODO remove unnecessary string conversion
         private final String data;
         public MessageData(final int number, final String data) {
             super();
             this.number = number;
             this.data = data;
         }
-        
-        public void encode(ImapResponse response) {
-            response.fetchResponse(number, data);
+        public final String getData() {
+            return data;
+        }
+        public final int getNumber() {
+            return number;
         }
+        
+    }
+
+    public final boolean isUseUids() {
+        return useUids;
     }
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ListResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ListResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ListResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/ListResponse.java Sun Jun  3 02:54:30 2007
@@ -19,14 +19,11 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import java.util.ArrayList;
-import java.util.Iterator;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * @deprecated responses should correspond directly to the specification
@@ -45,13 +42,7 @@
         messages.add(message);
     }
     
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        for (final Iterator it=messages.iterator();it.hasNext();) {
-            String message = (String) it.next();
-            response.commandResponse(command, message);
-        }
-        session.unsolicitedResponses( response, false );
-        response.commandComplete( command, tag );
+    public List getMessages() {
+        return Collections.unmodifiableList(messages);
     }
-    
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/LogoutResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/LogoutResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/LogoutResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/LogoutResponse.java Sun Jun  3 02:54:30 2007
@@ -21,27 +21,21 @@
 import org.apache.james.api.imap.ImapCommand;
 import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.api.imap.ImapMessage;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * @deprecated responses should correspond directly to the specification
  */
 public class LogoutResponse extends AbstractImapResponse implements ImapMessage {
 
-
+    // TODO: inject message
     public static final String BYE_MESSAGE = ImapConstants.VERSION + ImapConstants.SP + "Server logging out";
     
     public LogoutResponse(final ImapCommand command, final String tag) {
         super(command, tag);
     }
-
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        response.byeResponse( BYE_MESSAGE );
-        response.commandComplete( command, tag );
-        // TODO: think about how this will work with SEDA
-        session.closeConnection();            
+    
+    public String getMessage() {
+        return BYE_MESSAGE;
     }
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/SearchResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/SearchResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/SearchResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/SearchResponse.java Sun Jun  3 02:54:30 2007
@@ -19,10 +19,7 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * @deprecated responses should correspond directly to the specification
@@ -37,13 +34,12 @@
         this.idList = idList;
         this.useUids = useUids;
     }
-    
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        
-        response.commandResponse( command, idList );
-        boolean omitExpunged = (!useUids);
-        session.unsolicitedResponses( response, omitExpunged, useUids );
-        response.commandComplete( command, tag );  
+
+    public final String getIdList() {
+        return idList;
+    }
+
+    public final boolean isUseUids() {
+        return useUids;
     }
-    
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StatusResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StatusResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StatusResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StatusResponse.java Sun Jun  3 02:54:30 2007
@@ -19,10 +19,7 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * @deprecated responses should correspond directly to the specification
@@ -35,9 +32,7 @@
         this.message = message;
     }
 
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        response.commandResponse( command, message);
-        session.unsolicitedResponses( response, false );
-        response.commandComplete( command, tag );
+    public final String getMessage() {
+        return message;
     }
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StoreResponse.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StoreResponse.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StoreResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/legacy/StoreResponse.java Sun Jun  3 02:54:30 2007
@@ -19,10 +19,7 @@
 package org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapCommand;
-import org.apache.james.experimental.imapserver.ImapSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
 import org.apache.james.experimental.imapserver.message.response.AbstractImapResponse;
-import org.apache.james.imapserver.store.MailboxException;
 
 /**
  * TODO: this is probably redundent 
@@ -36,10 +33,7 @@
         this.useUids = useUids;
     }
 
-    protected void doEncode(ImapResponse response, ImapSession session, ImapCommand command, String tag) throws MailboxException {
-        boolean omitExpunged = (!useUids);
-        session.unsolicitedResponses( response, omitExpunged , useUids);
-        response.commandComplete( command, tag );            
-    }
-    
+    public final boolean isUseUids() {
+        return useUids;
+    }    
 }

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/ImapResponseTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/ImapResponseTest.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/ImapResponseTest.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/ImapResponseTest.java Sun Jun  3 02:54:30 2007
@@ -25,14 +25,14 @@
 
 import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.commands.MockCommand;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
 import org.apache.james.api.imap.message.MessageFlags;
 
 public class ImapResponseTest extends TestCase {
 
     private static final String TAG = "TAG"; 
     
-    ImapResponse response;
+    ImapResponseComposer response;
     MockImapResponseWriter writer;
     MockCommand command;
     
@@ -40,7 +40,7 @@
         super.setUp();
         command = new MockCommand();
         writer = new MockImapResponseWriter();
-        response = new ImapResponse(writer);;
+        response = new ImapResponseComposer(writer);;
     }
 
     protected void tearDown() throws Exception {
@@ -87,7 +87,7 @@
                 writer.operations.get(1));
         assertEquals(new MockImapResponseWriter.CommandNameOperation(MockCommand.NAME),
                 writer.operations.get(2));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.FAILED),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.FAILED),
                 writer.operations.get(3));
         assertEquals(new MockImapResponseWriter.TextMessageOperation(reason), 
                 writer.operations.get(4));
@@ -107,7 +107,7 @@
                 writer.operations.get(2));
         assertEquals(new MockImapResponseWriter.CommandNameOperation(MockCommand.NAME),
                 writer.operations.get(3));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.FAILED),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.FAILED),
                 writer.operations.get(4));
         assertEquals(new MockImapResponseWriter.TextMessageOperation(reason), 
                 writer.operations.get(5));
@@ -162,7 +162,7 @@
         response.flagsResponse(flags);
         assertEquals(4, writer.operations.size());
         assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.FLAGS), 
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.FLAGS), 
                 writer.operations.get(1));
         assertEquals(new MockImapResponseWriter.TextMessageOperation(MessageFlags.format(flags)),
                 writer.operations.get(2));
@@ -177,7 +177,7 @@
         assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
         assertEquals(new MockImapResponseWriter.NumericMessageOperation(count), 
                 writer.operations.get(1));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.EXISTS),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.EXISTS),
                 writer.operations.get(2));
         assertEquals(new MockImapResponseWriter.EndOperation(), 
                 writer.operations.get(3));
@@ -190,7 +190,7 @@
         assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
         assertEquals(new MockImapResponseWriter.NumericMessageOperation(count), 
                 writer.operations.get(1));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.RECENT),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.RECENT),
                 writer.operations.get(2));
         assertEquals(new MockImapResponseWriter.EndOperation(), 
                 writer.operations.get(3));
@@ -203,7 +203,7 @@
         assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
         assertEquals(new MockImapResponseWriter.NumericMessageOperation(count), 
                 writer.operations.get(1));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.EXPUNGE),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.EXPUNGE),
                 writer.operations.get(2));
         assertEquals(new MockImapResponseWriter.EndOperation(), 
                 writer.operations.get(3));
@@ -217,7 +217,7 @@
         assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
         assertEquals(new MockImapResponseWriter.NumericMessageOperation(count), 
                 writer.operations.get(1));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.FETCH),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.FETCH),
                 writer.operations.get(2));
         assertEquals(new MockImapResponseWriter.TextMessageOperation("(" + data + ")"),
                 writer.operations.get(3));
@@ -266,7 +266,7 @@
         response.byeResponse(message);
         assertEquals(3, writer.operations.size());
         assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.BYE + ImapResponse.SP + message),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.BYE + ImapResponseComposer.SP + message),
                 writer.operations.get(1));
         assertEquals(new MockImapResponseWriter.EndOperation(), 
                 writer.operations.get(2));
@@ -277,7 +277,7 @@
         response.permanentFlagsResponse(flags);
         assertEquals(4, writer.operations.size());
         assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
-        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponse.OK),
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.OK),
                 writer.operations.get(1));
         assertEquals(new MockImapResponseWriter.ResponseCodeOperation("PERMANENTFLAGS " + MessageFlags.format(flags)),
                 writer.operations.get(2));

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/MockImapSession.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/MockImapSession.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/MockImapSession.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/MockImapSession.java Sun Jun  3 02:54:30 2007
@@ -6,7 +6,7 @@
 import org.apache.james.api.imap.ImapSessionState;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.SelectedMailboxSession;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.mailbox.ImapMailboxSession;
@@ -74,12 +74,11 @@
             throws MailboxManagerException {
     }
 
-    public void unsolicitedResponses(ImapResponse response, boolean useUid)
-            throws MailboxException {
+    public void unsolicitedResponses(ImapResponseComposer response, boolean useUid) {
     }
 
-    public void unsolicitedResponses(ImapResponse request,
-            boolean omitExpunged, boolean useUid) throws MailboxException {
+    public void unsolicitedResponses(ImapResponseComposer request,
+            boolean omitExpunged, boolean useUid) {
     }
 
     public Object getAttribute(String key) {

Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncodeTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncodeTest.java?view=auto&rev=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncodeTest.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/BadResponseEncodeTest.java Sun Jun  3 02:54:30 2007
@@ -0,0 +1,70 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+
+import org.apache.james.api.imap.ImapConstants;
+import org.apache.james.experimental.imapserver.ImapSession;
+import org.apache.james.experimental.imapserver.MockImapResponseWriter;
+import org.apache.james.experimental.imapserver.MockImapSession;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.message.response.ImapResponseMessage;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy.BadResponse;
+import org.jmock.Mock;
+
+import junit.framework.TestCase;
+
+public class BadResponseEncodeTest extends TestCase {
+
+    private static final String MESSAGE = "A Message";
+    
+    MockImapResponseWriter writer;
+    ImapResponseComposer response;
+    BadResponse message;
+    Mock mockNextEncoder;
+    BadResponseEncoder encoder;
+    ImapSession session;
+    
+    protected void setUp() throws Exception {
+        super.setUp();
+        mockNextEncoder = new Mock(ImapEncoder.class);
+        encoder = new BadResponseEncoder((ImapEncoder) mockNextEncoder.proxy());
+        writer = new MockImapResponseWriter();
+        response = new ImapResponseComposer(writer);
+        message = new BadResponse(MESSAGE);
+        session = new MockImapSession();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void testEncode() throws Exception {
+        encoder.encode(message, this.response, session);
+        assertEquals(4, this.writer.operations.size());
+        assertEquals(new MockImapResponseWriter.UntaggedOperation(), writer.operations.get(0));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapConstants.BAD), 
+                writer.operations.get(1));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(MESSAGE),
+                writer.operations.get(2));
+        assertEquals(new MockImapResponseWriter.EndOperation(), 
+                writer.operations.get(3));
+    }
+
+}

Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoderTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoderTest.java?view=auto&rev=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoderTest.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/CommandFailedResponseEncoderTest.java Sun Jun  3 02:54:30 2007
@@ -0,0 +1,99 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
+
+import org.apache.james.api.imap.ImapConstants;
+import org.apache.james.experimental.imapserver.ImapSession;
+import org.apache.james.experimental.imapserver.MockImapResponseWriter;
+import org.apache.james.experimental.imapserver.MockImapSession;
+import org.apache.james.experimental.imapserver.commands.MockCommand;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
+import org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy.CommandFailedResponse;
+import org.jmock.Mock;
+
+import junit.framework.TestCase;
+
+public class CommandFailedResponseEncoderTest extends TestCase {
+
+    private static final String TAG = "A Tag";
+    
+    MockImapResponseWriter writer;
+    ImapResponseComposer response;
+    MockCommand command;
+    ImapSession session;
+    Mock mockNextEncoder;
+    CommandFailedResponseEncoder encoder;
+    
+    protected void setUp() throws Exception {
+        super.setUp();
+        writer = new MockImapResponseWriter();
+        mockNextEncoder = new Mock(ImapEncoder.class);
+        encoder = new CommandFailedResponseEncoder((ImapEncoder) mockNextEncoder.proxy());
+        response = new ImapResponseComposer(writer);
+        command = new MockCommand();
+        session = new MockImapSession();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    public void testWithResponseCode() throws Exception {
+        String code = "A code";
+        String message = "A message";
+        CommandFailedResponse responseMessage 
+            = new CommandFailedResponse(command, code, message, TAG);
+        encoder.encode(responseMessage, response, session);
+        assertEquals(7, writer.operations.size());
+        assertEquals(new MockImapResponseWriter.TagOperation(TAG), writer.operations.get(0));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapConstants.NO), 
+                writer.operations.get(1));
+        assertEquals(new MockImapResponseWriter.ResponseCodeOperation(code),
+                writer.operations.get(2));
+        assertEquals(new MockImapResponseWriter.CommandNameOperation(MockCommand.NAME),
+                writer.operations.get(3));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.FAILED),
+                writer.operations.get(4));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(message), 
+                writer.operations.get(5));
+        assertEquals(new MockImapResponseWriter.EndOperation(), 
+                writer.operations.get(6));
+    }
+    
+    public void testWithoutResponseCode() throws Exception {
+        String message = "A message";
+        CommandFailedResponse responseMessage 
+            = new CommandFailedResponse(command, message, TAG);
+        encoder.encode(responseMessage, response, session);
+        assertEquals(6, writer.operations.size());
+        assertEquals(new MockImapResponseWriter.TagOperation(TAG), writer.operations.get(0));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapConstants.NO), 
+                writer.operations.get(1));
+        assertEquals(new MockImapResponseWriter.CommandNameOperation(MockCommand.NAME),
+                writer.operations.get(2));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapResponseComposer.FAILED),
+                writer.operations.get(3));
+        assertEquals(new MockImapResponseWriter.TextMessageOperation(message), 
+                writer.operations.get(4));
+        assertEquals(new MockImapResponseWriter.EndOperation(), 
+                writer.operations.get(5));
+    }
+}

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseMessageTest.java (from r543856, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/ErrorResponseMessageTest.java)
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseMessageTest.java?view=diff&rev=543869&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/ErrorResponseMessageTest.java&r1=543856&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseMessageTest.java&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/ErrorResponseMessageTest.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/encode/imap4rev1/legacy/ErrorResponseMessageTest.java Sun Jun  3 02:54:30 2007
@@ -17,12 +17,14 @@
  * under the License.                                           *
  ****************************************************************/
 
-package org.apache.james.experimental.imapserver.message;
+package org.apache.james.experimental.imapserver.encode.imap4rev1.legacy;
 
 import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.MockImapResponseWriter;
-import org.apache.james.experimental.imapserver.encode.ImapResponse;
+import org.apache.james.experimental.imapserver.encode.ImapEncoder;
+import org.apache.james.experimental.imapserver.encode.ImapResponseComposer;
 import org.apache.james.experimental.imapserver.message.response.imap4rev1.legacy.ErrorResponse;
+import org.jmock.Mock;
 
 import junit.framework.TestCase;
 
@@ -33,12 +35,16 @@
     
     ErrorResponse message;
     MockImapResponseWriter writer;
-    ImapResponse response;
+    ImapResponseComposer response;
+    Mock mockNextEncoder;
+    ErrorResponseEncoder encoder;
     
     protected void setUp() throws Exception {
         super.setUp();
         writer = new MockImapResponseWriter();
-        response = new ImapResponse(writer);
+        mockNextEncoder = new Mock(ImapEncoder.class);
+        encoder = new ErrorResponseEncoder((ImapEncoder) mockNextEncoder.proxy());
+        response = new ImapResponseComposer(writer);
         message = new ErrorResponse(ERROR, TAG);
     }
 
@@ -47,7 +53,7 @@
     }
 
     public void testWrite() {
-        message.encode(response, null);
+        encoder.encode(message, response, null);
         assertEquals(4, writer.operations.size());
         assertEquals(new MockImapResponseWriter.TagOperation(TAG), writer.operations.get(0));
         assertEquals(new MockImapResponseWriter.TextMessageOperation(ImapConstants.BAD), 

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/commands/AbstractCommandTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/commands/AbstractCommandTest.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/commands/AbstractCommandTest.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/commands/AbstractCommandTest.java Sun Jun  3 02:54:30 2007
@@ -27,6 +27,7 @@
 import org.apache.james.experimental.imapserver.ImapRequestHandler;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.StandardFactory;
+import org.apache.james.experimental.imapserver.encode.main.DefaultImapEncoderFactory;
 import org.apache.james.experimental.imapserver.processor.base.AbstractMailboxAwareProcessor;
 import org.apache.james.experimental.imapserver.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.imapserver.codec.decode.base.AbstractImapCommandParser;
@@ -55,7 +56,8 @@
         mockUsersRepository = mock ( UsersRepository.class );
         handler=new ImapRequestHandler(StandardFactory.createDecoder(), 
                 DefaultImapProcessorFactory.createDefaultProcessor((UsersRepository)mockUsersRepository.proxy(), 
-                        (MailboxManagerProvider) mockMailboxManagerProvider.proxy()));
+                        (MailboxManagerProvider) mockMailboxManagerProvider.proxy()),
+                        DefaultImapEncoderFactory.createDefaultEncoder());
         handler.enableLogging(new MockLogger());
         mockSession = mock ( ImapSession.class);
         mockUser = mock (User.class );

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/session/AbstractSessionTest.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/session/AbstractSessionTest.java?view=diff&rev=543869&r1=543868&r2=543869
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/session/AbstractSessionTest.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/handler/session/AbstractSessionTest.java Sun Jun  3 02:54:30 2007
@@ -46,6 +46,7 @@
 import org.apache.james.experimental.imapserver.StandardFactory;
 import org.apache.james.experimental.imapserver.TestConstants;
 import org.apache.james.experimental.imapserver.client.Command;
+import org.apache.james.experimental.imapserver.encode.main.DefaultImapEncoderFactory;
 import org.apache.james.experimental.imapserver.mock.MockImapHandler;
 import org.apache.james.experimental.imapserver.mock.MockImapHandlerConfigurationData;
 import org.apache.james.experimental.imapserver.mock.MockUser;
@@ -84,7 +85,8 @@
                 HOST_NAME, HOST_ADDRESS);
         ((LogEnabled)session).enableLogging(new MockLogger());
         handler = new ImapRequestHandler(StandardFactory.createDecoder(),  
-                DefaultImapProcessorFactory.createDefaultProcessor(theConfigData.getUsersRepository(), theConfigData.getMailboxManagerProvider()));
+                DefaultImapProcessorFactory.createDefaultProcessor(theConfigData.getUsersRepository(), theConfigData.getMailboxManagerProvider()),
+                        DefaultImapEncoderFactory.createDefaultEncoder());
         handler.enableLogging(new MockLogger());
         mailboxManager=theConfigData.getMailboxManagerProvider().getMailboxManagerInstance(new MockUser());
 



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