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/05/27 11:11:13 UTC

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

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/DeleteCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/DeleteCommandParser.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/decode/imap4rev1/DeleteCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/DeleteCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/DeleteCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/DeleteCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/DeleteCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 import org.apache.james.experimental.imapserver.message.ImapMessageFactory;
 

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ExamineCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ExamineCommandParser.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/decode/imap4rev1/ExamineCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ExamineCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ExamineCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ExamineCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ExamineCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class ExamineCommandParser extends AbstractImapCommandParser  implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ExpungeCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ExpungeCommandParser.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/decode/imap4rev1/ExpungeCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ExpungeCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ExpungeCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ExpungeCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ExpungeCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 import org.apache.james.experimental.imapserver.message.ImapMessageFactory;
 

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/FetchCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/FetchCommandParser.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/decode/imap4rev1/FetchCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/FetchCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/FetchCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/FetchCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/FetchCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,13 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
 import org.apache.james.experimental.imapserver.message.BodyFetchElement;
 import org.apache.james.experimental.imapserver.message.FetchData;
 import org.apache.james.experimental.imapserver.message.IdRange;

Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/Imap4Rev1CommandParserFactory.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/decode/imap4rev1/Imap4Rev1CommandParserFactory.java?view=auto&rev=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/Imap4Rev1CommandParserFactory.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/Imap4Rev1CommandParserFactory.java Sun May 27 02:11:09 2007
@@ -0,0 +1,151 @@
+/****************************************************************
+ * 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.decode.imap4rev1;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.avalon.framework.CascadingRuntimeException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.james.api.imap.ImapConstants;
+import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.DelegatingImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.ImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.MessagingImapCommandParser;
+import org.apache.james.experimental.imapserver.message.ImapMessageFactory;
+
+/**
+ * A factory for ImapCommand instances, provided based on the command name.
+ * Command instances are created on demand, when first accessed.
+ *
+ * @version $Revision: 109034 $
+ */
+public class Imap4Rev1CommandParserFactory extends AbstractLogEnabled
+{
+    private Map _imapCommands;
+    private final ImapMessageFactory messageFactory;
+    private final Imap4Rev1CommandFactory commandFactory;
+    
+    public Imap4Rev1CommandParserFactory(final ImapMessageFactory messageFactory, final Imap4Rev1CommandFactory commandFactory)
+    {
+        this.messageFactory = messageFactory;
+        this.commandFactory = commandFactory;
+        _imapCommands = new HashMap();
+
+        // Commands valid in any state
+        // CAPABILITY, NOOP, and LOGOUT
+        _imapCommands.put( ImapConstants.CAPABILITY_COMMAND_NAME, CapabilityCommandParser.class );
+        _imapCommands.put( ImapConstants.NOOP_COMMAND_NAME, NoopCommandParser.class );
+        _imapCommands.put( ImapConstants.LOGOUT_COMMAND_NAME, LogoutCommandParser.class );
+
+        // Commands valid in NON_AUTHENTICATED state.
+        // AUTHENTICATE and LOGIN
+        _imapCommands.put( ImapConstants.AUTHENTICATE_COMMAND_NAME, AuthenticateCommandParser.class );
+        _imapCommands.put( ImapConstants.LOGIN_COMMAND_NAME, LoginCommandParser.class );
+
+        // Commands valid in AUTHENTICATED or SELECTED state.
+        // RFC2060: SELECT, EXAMINE, CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE, LIST, LSUB, STATUS, and APPEND
+        _imapCommands.put( ImapConstants.SELECT_COMMAND_NAME, SelectCommandParser.class );
+        _imapCommands.put( ImapConstants.EXAMINE_COMMAND_NAME, ExamineCommandParser.class );
+        _imapCommands.put( ImapConstants.CREATE_COMMAND_NAME, CreateCommandParser.class );
+        _imapCommands.put( ImapConstants.DELETE_COMMAND_NAME, DeleteCommandParser.class );
+        _imapCommands.put( ImapConstants.RENAME_COMMAND_NAME, RenameCommandParser.class );
+        _imapCommands.put( ImapConstants.SUBSCRIBE_COMMAND_NAME, SubscribeCommandParser.class );
+        _imapCommands.put( ImapConstants.UNSUBSCRIBE_COMMAND_NAME, UnsubscribeCommandParser.class );
+        _imapCommands.put( ImapConstants.LIST_COMMAND_NAME, ListCommandParser.class );
+        _imapCommands.put( ImapConstants.LSUB_COMMAND_NAME, LsubCommandParser.class );
+        _imapCommands.put( ImapConstants.STATUS_COMMAND_NAME, StatusCommandParser.class );
+        _imapCommands.put( ImapConstants.APPEND_COMMAND_NAME, AppendCommandParser.class );
+
+//        // RFC2342 NAMESPACE
+//        _imapCommands.put( "NAMESPACE", NamespaceCommand.class );
+
+        // RFC2086 GETACL, SETACL, DELETEACL, LISTRIGHTS, MYRIGHTS
+//        _imapCommands.put( "GETACL", GetAclCommand.class );
+//        _imapCommands.put( "SETACL", SetAclCommand.class );
+//        _imapCommands.put( "DELETEACL", DeleteAclCommand.class );
+//        _imapCommands.put( "LISTRIGHTS", ListRightsCommand.class );
+//        _imapCommands.put( "MYRIGHTS", MyRightsCommand.class );
+
+
+        // Commands only valid in SELECTED state.
+        // CHECK, CLOSE, EXPUNGE, SEARCH, FETCH, STORE, COPY, and UID
+        _imapCommands.put( ImapConstants.CHECK_COMMAND_NAME, CheckCommandParser.class );
+        _imapCommands.put( ImapConstants.CLOSE_COMMAND_NAME, CloseCommandParser.class );
+        _imapCommands.put( ImapConstants.EXPUNGE_COMMAND_NAME, ExpungeCommandParser.class );
+        _imapCommands.put( ImapConstants.COPY_COMMAND_NAME, CopyCommandParser.class );
+        _imapCommands.put( ImapConstants.SEARCH_COMMAND_NAME, SearchCommandParser.class );
+        _imapCommands.put( ImapConstants.FETCH_COMMAND_NAME, FetchCommandParser.class );
+        _imapCommands.put( ImapConstants.STORE_COMMAND_NAME, StoreCommandParser.class );
+        _imapCommands.put( ImapConstants.UID_COMMAND_NAME, UidCommandParser.class );
+    }
+
+    public ImapCommandParser getParser( String commandName )
+    {
+        Class cmdClass = ( Class ) _imapCommands.get( commandName.toUpperCase() );
+
+        if ( cmdClass == null ) {
+            return null;
+        }
+        else {
+            return createCommand( cmdClass );
+        }
+    }
+
+    private ImapCommandParser createCommand( Class commandClass )
+    {
+        final Logger logger = getLogger(); 
+        try {
+            ImapCommandParser cmd = ( ImapCommandParser ) commandClass.newInstance();
+            initialiseParser(commandClass, logger, cmd);
+            return cmd;
+        }
+        catch ( Exception e ) {
+            if (logger.isWarnEnabled()) {
+                logger.warn("Create command instance failed: ", e);
+            }
+            // TODO: would probably be better to manage this in protocol
+            // TODO: this runtime will produce a nasty disconnect for the client
+            throw new CascadingRuntimeException( "Could not create command instance: " + commandClass.getName(), e );
+        }
+    }
+
+    protected void initialiseParser(Class commandClass, final Logger logger, ImapCommandParser cmd) {
+        setupLogger(cmd);
+        if (logger.isDebugEnabled()) {
+            logger.debug("Created command " + commandClass); 
+        }
+        
+        if ( cmd instanceof DelegatingImapCommandParser ) {
+            ( ( DelegatingImapCommandParser) cmd ).setParserFactory( this );
+        }
+        
+        if (cmd instanceof MessagingImapCommandParser) {
+            ((MessagingImapCommandParser) cmd).setMessageFactory(messageFactory);
+        }
+        
+        if (cmd instanceof InitialisableCommandFactory) {
+            ((InitialisableCommandFactory) cmd).init(commandFactory);
+        }
+    }
+
+}

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ListCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ListCommandParser.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/decode/imap4rev1/ListCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ListCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ListCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/ListCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/ListCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,15 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser.ATOM_CHARValidator;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 import org.apache.james.experimental.imapserver.message.ImapMessageFactory;
 class ListCommandParser extends AbstractUidCommandParser  implements InitialisableCommandFactory

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LoginCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LoginCommandParser.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/decode/imap4rev1/LoginCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LoginCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LoginCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LoginCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LoginCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class LoginCommandParser extends AbstractImapCommandParser  implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LogoutCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LogoutCommandParser.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/decode/imap4rev1/LogoutCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LogoutCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LogoutCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LogoutCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LogoutCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class LogoutCommandParser extends AbstractImapCommandParser  implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LsubCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LsubCommandParser.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/decode/imap4rev1/LsubCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LsubCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LsubCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/LsubCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/LsubCommandParser.java Sun May 27 02:11:09 2007
@@ -16,10 +16,11 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class LsubCommandParser extends ListCommandParser  implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/NoopCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/NoopCommandParser.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/decode/imap4rev1/NoopCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/NoopCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/NoopCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/NoopCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/NoopCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class NoopCommandParser extends AbstractImapCommandParser  implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/RenameCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/RenameCommandParser.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/decode/imap4rev1/RenameCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/RenameCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/RenameCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/RenameCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/RenameCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class RenameCommandParser extends AbstractImapCommandParser implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SearchCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SearchCommandParser.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/decode/imap4rev1/SearchCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SearchCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SearchCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SearchCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SearchCommandParser.java Sun May 27 02:11:09 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import javax.mail.Message;
 import javax.mail.search.SearchTerm;
@@ -25,6 +25,7 @@
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class SearchCommandParser extends AbstractUidCommandParser implements InitialisableCommandFactory

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SelectCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SelectCommandParser.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/decode/imap4rev1/SelectCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SelectCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SelectCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SelectCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SelectCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class SelectCommandParser extends AbstractImapCommandParser implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/StatusCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/StatusCommandParser.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/decode/imap4rev1/StatusCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/StatusCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/StatusCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/StatusCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/StatusCommandParser.java Sun May 27 02:11:09 2007
@@ -16,13 +16,17 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser.CharacterValidator;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser.NoopCharValidator;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 import org.apache.james.experimental.imapserver.message.ImapMessageFactory;
 import org.apache.james.experimental.imapserver.message.StatusDataItems;

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/StoreCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/StoreCommandParser.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/decode/imap4rev1/StoreCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/StoreCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/StoreCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/StoreCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/StoreCommandParser.java Sun May 27 02:11:09 2007
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import javax.mail.Flags;
 
@@ -24,6 +24,9 @@
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser.NoopCharValidator;
 import org.apache.james.experimental.imapserver.message.IdRange;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 import org.apache.james.experimental.imapserver.message.StoreDirective;

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SubscribeCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SubscribeCommandParser.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/decode/imap4rev1/SubscribeCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SubscribeCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SubscribeCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/SubscribeCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/SubscribeCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class SubscribeCommandParser extends AbstractImapCommandParser implements InitialisableCommandFactory {

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/UidCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/UidCommandParser.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/decode/imap4rev1/UidCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/UidCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/UidCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/UidCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/UidCommandParser.java Sun May 27 02:11:09 2007
@@ -16,16 +16,20 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.DelegatingImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.ImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class UidCommandParser extends AbstractImapCommandParser implements DelegatingImapCommandParser,InitialisableCommandFactory {
-    private ImapCommandParserFactory parserFactory;
+    private Imap4Rev1CommandParserFactory parserFactory;
 
     public UidCommandParser() {
     }
@@ -42,14 +46,14 @@
     /**
      * @see org.apache.james.experimental.imapserver.decode.DelegatingImapCommandParser#getParserFactory()
      */
-    public ImapCommandParserFactory getParserFactory() {
+    public Imap4Rev1CommandParserFactory getParserFactory() {
         return parserFactory;
     }
 
     /**
-     * @see org.apache.james.experimental.imapserver.decode.DelegatingImapCommandParser#setParserFactory(org.apache.james.experimental.imapserver.decode.ImapCommandParserFactory)
+     * @see org.apache.james.experimental.imapserver.decode.DelegatingImapCommandParser#setParserFactory(org.apache.james.experimental.imapserver.decode.imap4rev1.Imap4Rev1CommandParserFactory)
      */
-    public void setParserFactory( ImapCommandParserFactory imapCommandFactory )
+    public void setParserFactory( Imap4Rev1CommandParserFactory imapCommandFactory )
     {
         this.parserFactory = imapCommandFactory;
     }

Copied: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/UnsubscribeCommandParser.java (from r541965, james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/UnsubscribeCommandParser.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/decode/imap4rev1/UnsubscribeCommandParser.java?view=diff&rev=541968&p1=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/UnsubscribeCommandParser.java&r1=541965&p2=james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/UnsubscribeCommandParser.java&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/UnsubscribeCommandParser.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/imap4rev1/UnsubscribeCommandParser.java Sun May 27 02:11:09 2007
@@ -16,12 +16,14 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-package org.apache.james.experimental.imapserver.decode;
+package org.apache.james.experimental.imapserver.decode.imap4rev1;
 
 import org.apache.james.experimental.imapserver.ImapRequestLineReader;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;
 import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.InitialisableCommandFactory;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
 import org.apache.james.experimental.imapserver.message.ImapMessage;
 
 class UnsubscribeCommandParser extends AbstractImapCommandParser implements InitialisableCommandFactory {

Added: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/main/DefaultImapDecoder.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/decode/main/DefaultImapDecoder.java?view=auto&rev=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/main/DefaultImapDecoder.java (added)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/decode/main/DefaultImapDecoder.java Sun May 27 02:11:09 2007
@@ -0,0 +1,98 @@
+/****************************************************************
+ * 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.decode.main;
+
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+import org.apache.james.experimental.imapserver.ImapDecoder;
+import org.apache.james.experimental.imapserver.ImapRequestLineReader;
+import org.apache.james.experimental.imapserver.ProtocolException;
+import org.apache.james.experimental.imapserver.commands.imap4rev1.Imap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.commands.imap4rev1.StandardImap4Rev1CommandFactory;
+import org.apache.james.experimental.imapserver.decode.ImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.base.AbstractImapCommandParser;
+import org.apache.james.experimental.imapserver.decode.imap4rev1.Imap4Rev1CommandParserFactory;
+import org.apache.james.experimental.imapserver.message.BaseImapMessageFactory;
+import org.apache.james.experimental.imapserver.message.ImapMessage;
+import org.apache.james.experimental.imapserver.message.ImapMessageFactory;
+
+public class DefaultImapDecoder extends AbstractLogEnabled implements ImapDecoder {
+
+    private static final String INVALID_COMMAND = "Invalid command.";
+    // TODO: inject dependency
+    private final ImapMessageFactory messageFactory = new BaseImapMessageFactory();
+    private final Imap4Rev1CommandFactory commandFactory = new StandardImap4Rev1CommandFactory();
+    private final Imap4Rev1CommandParserFactory imapCommands = new Imap4Rev1CommandParserFactory(messageFactory, commandFactory);
+    private static final String REQUEST_SYNTAX = "Protocol Error: Was expecting <tag SPACE command [arguments]>";
+
+    /**
+     * @see org.apache.avalon.framework.logger.AbstractLogEnabled#enableLogging(org.apache.avalon.framework.logger.Logger)
+     */
+    public void enableLogging(Logger logger) { 
+        super.enableLogging(logger);
+        setupLogger(imapCommands);
+    }
+    
+    public ImapMessage decode(ImapRequestLineReader request) {
+        ImapMessage message;
+        final Logger logger = getLogger(); 
+        
+        try {
+            final String tag = AbstractImapCommandParser.tag( request );    
+            message = decodeCommandTagged(request, logger, tag);
+        }
+        catch ( ProtocolException e ) {
+            logger.debug("error parsing request", e);
+            message = messageFactory.createBadRequestMessage( REQUEST_SYNTAX );
+        }
+        return message;
+    }
+
+    private ImapMessage decodeCommandTagged(final ImapRequestLineReader request, final Logger logger, final String tag) {
+        ImapMessage message;
+        if (logger.isDebugEnabled()) { 
+            logger.debug( "Got <tag>: " + tag );
+        }
+        try {
+            final String commandName = AbstractImapCommandParser.atom( request );
+            message = decodeCommandNamed(request, tag, commandName, logger);
+        }
+        catch ( ProtocolException e ) {
+            logger.debug("Error during initial request parsing", e);            
+            message = messageFactory.createErrorMessage(REQUEST_SYNTAX , tag);
+        }
+        return message;
+    }
+
+    private ImapMessage decodeCommandNamed(final ImapRequestLineReader request, 
+            final String tag, String commandName, final Logger logger) {
+        ImapMessage message;
+        if (logger.isDebugEnabled()) { 
+            logger.debug( "Got <command>: " + commandName); 
+        }
+        final ImapCommandParser command = imapCommands.getParser( commandName );
+        if ( command == null ) {
+            logger.info("Missing command implementation.");
+            message = messageFactory.createErrorMessage(INVALID_COMMAND, tag);
+        } else {
+            message = command.parse( request, tag );
+        }
+        return message;
+    }
+}

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/OutputStreamImapResponseWriter.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/OutputStreamImapResponseWriter.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/OutputStreamImapResponseWriter.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/encode/OutputStreamImapResponseWriter.java Sun May 27 02:11:09 2007
@@ -23,7 +23,7 @@
 import java.io.PrintWriter;
 
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapResponseWriter;
 import org.apache.james.util.InternetPrintWriter;
 

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/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/CapabilityResponse.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/CapabilityResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/CapabilityResponse.java Sun May 27 02:11:09 2007
@@ -18,7 +18,7 @@
  ****************************************************************/
 package org.apache.james.experimental.imapserver.message.response.imap4rev1;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapResponse;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/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/LogoutResponse.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/LogoutResponse.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/message/response/imap4rev1/LogoutResponse.java Sun May 27 02:11:09 2007
@@ -18,7 +18,7 @@
  ****************************************************************/
 package org.apache.james.experimental.imapserver.message.response.imap4rev1;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapResponse;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/AbstractListingProcessor.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/processor/imap4rev1/AbstractListingProcessor.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/AbstractListingProcessor.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/AbstractListingProcessor.java Sun May 27 02:11:09 2007
@@ -19,8 +19,8 @@
 
 package org.apache.james.experimental.imapserver.processor.imap4rev1;
 
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.AuthorizationException;
-import org.apache.james.experimental.imapserver.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/FetchProcessor.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/processor/imap4rev1/FetchProcessor.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/FetchProcessor.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/FetchProcessor.java Sun May 27 02:11:09 2007
@@ -31,9 +31,9 @@
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.core.MimeMessageWrapper;
 import org.apache.james.experimental.imapserver.AuthorizationException;
-import org.apache.james.experimental.imapserver.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/SearchProcessor.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/processor/imap4rev1/SearchProcessor.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/SearchProcessor.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/SearchProcessor.java Sun May 27 02:11:09 2007
@@ -21,8 +21,8 @@
 
 import javax.mail.search.SearchTerm;
 
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.AuthorizationException;
-import org.apache.james.experimental.imapserver.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/StatusProcessor.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/processor/imap4rev1/StatusProcessor.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/StatusProcessor.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/main/java/org/apache/james/experimental/imapserver/processor/imap4rev1/StatusProcessor.java Sun May 27 02:11:09 2007
@@ -20,8 +20,8 @@
 package org.apache.james.experimental.imapserver.processor.imap4rev1;
 
 import org.apache.avalon.framework.logger.Logger;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.AuthorizationException;
-import org.apache.james.experimental.imapserver.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.ProtocolException;
 import org.apache.james.experimental.imapserver.commands.ImapCommand;

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=541968&r1=541967&r2=541968
==============================================================================
--- 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 May 27 02:11:09 2007
@@ -23,7 +23,7 @@
 
 import junit.framework.TestCase;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapResponse;
 import org.apache.james.experimental.imapserver.commands.MockCommand;
 import org.apache.james.imapserver.store.MessageFlags;

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/TestConstants.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/TestConstants.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/TestConstants.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/TestConstants.java Sun May 27 02:11:09 2007
@@ -1,6 +1,6 @@
 package org.apache.james.experimental.imapserver;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 
 public interface TestConstants
 {

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/BadResponseMessageTest.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/message/BadResponseMessageTest.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/BadResponseMessageTest.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/BadResponseMessageTest.java Sun May 27 02:11:09 2007
@@ -18,7 +18,7 @@
  ****************************************************************/
 package org.apache.james.experimental.imapserver.message;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapResponse;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.MockImapResponseWriter;

Modified: james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/CommandFailedResponseMessageTest.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/message/CommandFailedResponseMessageTest.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/CommandFailedResponseMessageTest.java (original)
+++ james/server/sandbox/seda-imap-modular/experimental-seda-imap-function/src/test/java/org/apache/james/experimental/imapserver/message/CommandFailedResponseMessageTest.java Sun May 27 02:11:09 2007
@@ -19,7 +19,7 @@
 
 package org.apache.james.experimental.imapserver.message;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapResponse;
 import org.apache.james.experimental.imapserver.ImapSession;
 import org.apache.james.experimental.imapserver.MockImapResponseWriter;

Modified: 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/message/ErrorResponseMessageTest.java?view=diff&rev=541968&r1=541967&r2=541968
==============================================================================
--- 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/message/ErrorResponseMessageTest.java Sun May 27 02:11:09 2007
@@ -19,7 +19,7 @@
 
 package org.apache.james.experimental.imapserver.message;
 
-import org.apache.james.experimental.imapserver.ImapConstants;
+import org.apache.james.api.imap.ImapConstants;
 import org.apache.james.experimental.imapserver.ImapResponse;
 import org.apache.james.experimental.imapserver.MockImapResponseWriter;
 import org.apache.james.experimental.imapserver.message.response.imap4rev1.ErrorResponse;



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