You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2010/01/19 12:35:02 UTC

svn commit: r900731 [1/4] - in /james/server/trunk: mina-socket-library/src/main/java/org/apache/james/socket/mina/ mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ pop3server-function/src/main/java/org/apache/james/pop3server/ po...

Author: norman
Date: Tue Jan 19 11:34:58 2010
New Revision: 900731

URL: http://svn.apache.org/viewvc?rev=900731&view=rev
Log:
* Just use one interface of LineHandler, CommandHandler, ConnectHandler for all protocol implementations
* Introduce Request, Response, RetCodeResponse interface to share more code
* Refactor MINA stuff to share more code

Added:
    james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractIoHandler.java
    james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ResponseValidationFilter.java
      - copied, changed from r900284, james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/AbstractValidationFilter.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/CommandHandler.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/ConnectHandler.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LineHandler.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/ProtocolSession.java
      - copied, changed from r900284, james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LogEnabledSession.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/Request.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/Response.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/RetCodeResponse.java
Removed:
    james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/AbstractValidationFilter.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/CommandHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/ConnectHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/LineHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/filter/POP3ValidationFilter.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/ConnectHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/LineHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/RemoteManagerValidationFilter.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/CommandHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/ConnectHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/LineHandler.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/filter/SMTPValidationFilter.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/CommonCommandHandler.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/LogEnabledSession.java
Modified:
    james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractAsyncServer.java
    james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractMINASession.java
    james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ConnectionFilter.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Request.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Response.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/DeleCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/NoopCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RsetCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StatCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UidlCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UnknownCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UserCmdHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/AsyncPOP3Server.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3IoHandler.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3SessionImpl.java
    james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/filter/POP3ResponseFilter.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerRequest.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddDomainCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddMappingCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddSpamCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddUserCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AuthorizationHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/CountUsersCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/DelUserCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/DeleteSpoolCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ExportBayesianDataCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/FlushSpoolCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/HelpCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ImportBayesianDataCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListAllMappingsCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListDomainsCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListMailetsCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListMappingCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListMatchersCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListProcessorsCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListSpoolCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ListUsersCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/MemStatCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/MoveMailsCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/QuitCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoteManagerCommandDispatcherLineHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoveDomainCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoveMappingCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ResetBayesianDataCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/SetAliasCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/SetForwardingCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/SetPasswordCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowAliasCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowForwardingCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowMailetInfoCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShowMatcherInfoCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/ShutdownCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnknownCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetAliasCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UnsetForwardingCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/UserCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/VerifyCmdHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/AsyncRemoteManager.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerIoHandler.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java
    james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPRequest.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPResponse.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPSession.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/AbstractHookableCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineFilter.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineMessageHookHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ExpnCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/HelpCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/MailCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/NoopCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RcptCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ReceivedDataLineFilter.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RsetCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/SMTPCommandDispatcherLineHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/UnknownCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/VrfyCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/WelcomeMessageHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/AuthCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/EhloCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/MailSizeEsmtpExtension.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/StartTlsCmdHandler.java
    james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/fastfail/DNSRBLHandler.java
    james/server/trunk/smtp-protocol-library/src/test/java/org/apache/james/smtpserver/protocol/BaseFakeSMTPSession.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandler.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/DataLineJamesMessageHookHandler.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/POP3BeforeSMTPHandler.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/AsyncSMTPServer.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPIoHandler.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java
    james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/filter/FilterLineHandlerAdapter.java
    james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/AbstractCommandDispatcher.java
    james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/TLSSupportedSession.java

Modified: james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractAsyncServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractAsyncServer.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractAsyncServer.java (original)
+++ james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractAsyncServer.java Tue Jan 19 11:34:58 2010
@@ -37,7 +37,6 @@
 import org.apache.james.services.FileSystem;
 import org.apache.james.services.MailServer;
 import org.apache.james.socket.mina.filter.ConnectionFilter;
-import org.apache.mailet.MailetContext;
 import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.session.IdleStatus;

Added: james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractIoHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractIoHandler.java?rev=900731&view=auto
==============================================================================
--- james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractIoHandler.java (added)
+++ james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractIoHandler.java Tue Jan 19 11:34:58 2010
@@ -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.socket.mina;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.james.api.protocol.ConnectHandler;
+import org.apache.james.api.protocol.LineHandler;
+import org.apache.james.api.protocol.ProtocolSession;
+import org.apache.james.api.protocol.ProtocolHandlerChain;
+import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.mina.core.session.IoSession;
+
+/**
+ * This abstract IoHandler handling the calling of ConnectHandler and LineHandlers
+ * on the right events.
+ * 
+ *
+ */
+public abstract class AbstractIoHandler extends IoHandlerAdapter{
+    
+    private ProtocolHandlerChain chain;
+    
+    public AbstractIoHandler(ProtocolHandlerChain chain) {
+        this.chain = chain;
+    }
+
+    /**
+     * @see org.apache.mina.core.service.IoHandlerAdapter#messageReceived(org.apache.mina.core.session.IoSession, java.lang.Object)
+     */
+    @SuppressWarnings("unchecked")
+    public final void messageReceived(IoSession session, Object message)
+            throws Exception {
+        ProtocolSession pSession = (ProtocolSession) session.getAttribute(getSessionKey());
+        LinkedList<LineHandler> lineHandlers = chain.getHandlers(LineHandler.class);
+        if (lineHandlers.size() > 0) {
+            ((LineHandler) lineHandlers.getLast()).onLine(pSession, (String) message);
+        }
+    }
+
+    /**
+     * @see org.apache.mina.core.service.IoHandler#sessionCreated(org.apache.mina.core.session.IoSession)
+     */
+    public final void  sessionCreated(IoSession session) throws Exception { 
+        // Add attribute
+        session.setAttribute(getSessionKey(), createSession(session));
+    }
+
+    /**
+     * Create a new "protocol" session 
+     * 
+     * @param session ioSession
+     * @return psession
+     * @throws Exception
+     */
+    protected abstract ProtocolSession createSession(IoSession session) throws Exception;
+
+    /**
+     * Return the Key which is used to store the "protocol" session within the IoSession
+     * 
+     * @return key
+     */
+    protected abstract String getSessionKey();
+
+    
+    /**
+     * @see org.apache.mina.core.service.IoHandler#sessionOpened(org.apache.mina.core.session.IoSession)
+     */
+    @SuppressWarnings("unchecked")
+    public final void sessionOpened(IoSession session) throws Exception {
+        List<ConnectHandler> connectHandlers = chain
+                .getHandlers(ConnectHandler.class);
+      
+        if (connectHandlers != null) {
+            for (int i = 0; i < connectHandlers.size(); i++) {
+                connectHandlers.get(i).onConnect(
+                        (ProtocolSession) session.getAttribute(getSessionKey()));
+            }
+        }    
+    }
+}

Modified: james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractMINASession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractMINASession.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractMINASession.java (original)
+++ james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/AbstractMINASession.java Tue Jan 19 11:34:58 2010
@@ -116,7 +116,7 @@
     }
 
     /**
-     * @see org.apache.james.api.protocol.LogEnabledSession#getLogger()
+     * @see org.apache.james.api.protocol.ProtocolSession#getLogger()
      */
     public Log getLogger() {
         return logger;

Modified: james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ConnectionFilter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ConnectionFilter.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ConnectionFilter.java (original)
+++ james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ConnectionFilter.java Tue Jan 19 11:34:58 2010
@@ -33,7 +33,6 @@
 /**
  * Use this class to set a connection limit
  */
-
 public class ConnectionFilter extends IoFilterAdapter{
 
     private Map<String, Integer> connections = new HashMap<String, Integer>();

Copied: james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ResponseValidationFilter.java (from r900284, james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/AbstractValidationFilter.java)
URL: http://svn.apache.org/viewvc/james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ResponseValidationFilter.java?p2=james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ResponseValidationFilter.java&p1=james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/AbstractValidationFilter.java&r1=900284&r2=900731&rev=900731&view=diff
==============================================================================
--- james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/AbstractValidationFilter.java (original)
+++ james/server/trunk/mina-socket-library/src/main/java/org/apache/james/socket/mina/filter/ResponseValidationFilter.java Tue Jan 19 11:34:58 2010
@@ -19,15 +19,18 @@
 package org.apache.james.socket.mina.filter;
 
 import org.apache.commons.logging.Log;
+import org.apache.james.api.protocol.Response;
 import org.apache.mina.core.filterchain.IoFilterAdapter;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.core.write.WriteRequest;
 
-public abstract class AbstractValidationFilter extends IoFilterAdapter {
+public class ResponseValidationFilter<R extends Response> extends IoFilterAdapter {
 
     private Log logger;
+    private Class<R> rClass;
     
-    public AbstractValidationFilter(Log logger) {
+    public ResponseValidationFilter(Log logger, Class<R> rClass) {
+        this.rClass = rClass;
         this.logger = logger;
     }
     
@@ -36,70 +39,17 @@
     }
 
     /**
-     * @see org.apache.mina.core.filterchain.IoFilterAdapter#messageReceived(org.apache.mina.core.filterchain.IoFilter.NextFilter, org.apache.mina.core.session.IoSession, java.lang.Object)
-     */
-    public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
-        if (isValidRequest(message)) {
-            super.messageReceived(nextFilter, session, message);
-        } else {
-            errorRequest(message);
-        }
-    }
-
-    /**
      * @see org.apache.mina.core.filterchain.IoFilterAdapter#filterWrite(org.apache.mina.core.filterchain.IoFilter.NextFilter, org.apache.mina.core.session.IoSession, org.apache.mina.core.write.WriteRequest)
      */
-    public void filterWrite(NextFilter arg0, IoSession arg1, WriteRequest arg2)
+    public final void filterWrite(NextFilter arg0, IoSession arg1, WriteRequest arg2)
             throws Exception {
         Object obj = arg2.getMessage();
 
-        if (isValidRequest(obj) || isValidResponse(obj)) {
+        if (rClass.isInstance(obj)) {
             super.filterWrite(arg0, arg1, arg2);
         } else {
             logger.error("WriteRequest holds not a an valid Object but "
                     + (obj == null ? "NULL" : obj.getClass()));
-            WriteRequest request = errorResponse(obj);
-            if (request != null) {
-                arg0.filterWrite(arg1, request); 
-            }
         }
     }
-
-    /**
-     * Check if the given Object is valid as Request. If so return true
-     * 
-     * @param requestObject
-     * @return isValidRequest
-     */
-    protected abstract boolean isValidRequest(Object requestObject);
-    
-    
-    /**
-     * Check if the given Object is a valid Response. If so return true
-     * 
-     * @param responseObject
-     * @return isValidResponse
-     */
-    protected abstract boolean isValidResponse(Object responseObject);
-    
-  
-    /**
-     * Return the WriteRequest which should get written to the client. If you don't want to write anything just return
-     * null
-     * 
-     * @param obj the original obj
-     * @return writeRequest
-     */
-    protected abstract WriteRequest errorResponse(Object obj);
-    
-    
-    /**
-     * Return the WriteRequest which should get written to the client. If you don't want to write anything just return
-     * null
-     * 
-     * @param obj the original obj
-     * @return writeRequest
-     */
-    protected abstract WriteRequest errorRequest(Object obj);
-
 }

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Handler.java Tue Jan 19 11:34:58 2010
@@ -31,7 +31,11 @@
 import java.util.Map;
 
 import org.apache.avalon.framework.container.ContainerUtil;
+import org.apache.james.api.protocol.ConnectHandler;
+import org.apache.james.api.protocol.LineHandler;
 import org.apache.james.api.protocol.ProtocolHandlerChain;
+import org.apache.james.api.protocol.Response;
+import org.apache.james.api.protocol.RetCodeResponse;
 import org.apache.james.services.MailRepository;
 import org.apache.james.socket.api.CRLFTerminatedReader;
 import org.apache.james.socket.api.ProtocolContext;
@@ -95,11 +99,13 @@
      * If not null every line is sent to this command handler instead
      * of the default "command parsing -> dipatching" procedure.
      */
+    @SuppressWarnings("unchecked")
     private LinkedList<LineHandler> lineHandlers;
 
     /**
      * Connect Handlers
      */
+    @SuppressWarnings("unchecked")
     private final LinkedList<ConnectHandler> connectHandlers;
     
     private int writtenBytes = 0;
@@ -115,6 +121,7 @@
     /**
      * @see org.apache.james.socket.shared.AbstractProtocolHandler#handleProtocolInternal(org.apache.james.socket.api.ProtocolContext)
      */
+    @SuppressWarnings("unchecked")
     public void handleProtocolInternal(ProtocolContext context) throws IOException {
         this.context = context;
         handlerState = AUTHENTICATION_READY;
@@ -305,7 +312,7 @@
 	/**
 	 * @see org.apache.james.pop3server.POP3Session#writePOP3Response(org.apache.james.pop3server.POP3Response)
 	 */
-    public void writePOP3Response(POP3Response response) {
+    public void writeResponse(Response response) {
         // Write a single-line or multiline response
         if (response != null) {
            
@@ -315,7 +322,7 @@
                 for (int k = 0; k < responseList.size(); k++) {
                 	StringBuffer respBuff = new StringBuffer(256);
                     if (k == 0) {
-                    	respBuff.append(response.getRetCode());
+                    	respBuff.append(((RetCodeResponse)response).getRetCode());
                         respBuff.append(" ");
                         respBuff.append(response.getLines().get(k));
                       

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Request.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Request.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Request.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Request.java Tue Jan 19 11:34:58 2010
@@ -19,11 +19,13 @@
 
 package org.apache.james.pop3server;
 
+import org.apache.james.api.protocol.Request;
+
 /**
  * POP3Request object 
  *
  */
-public class POP3Request {
+public class POP3Request implements Request{
 
 	private final String command;
 

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Response.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Response.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Response.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Response.java Tue Jan 19 11:34:58 2010
@@ -22,10 +22,12 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.james.api.protocol.RetCodeResponse;
+
 /**
  * Contains an SMTP result
  */
-public class POP3Response {
+public class POP3Response implements RetCodeResponse{
 
 
     // POP3 response prefixes

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/POP3Session.java Tue Jan 19 11:34:58 2010
@@ -117,13 +117,5 @@
      * @param backupUserMailbox the mailbox backup
      */
     void setBackupUserMailbox(List<Mail> backupUserMailbox);
-
-    /**
-     * Write the response to the client
-     * 
-     * @param response
-     */
-    void writePOP3Response(POP3Response response);
-
 }
 

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/CapaCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,10 +24,11 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.james.api.protocol.CommandHandler;
 import org.apache.james.api.protocol.ExtensibleHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.api.protocol.WiringException;
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 
@@ -35,16 +36,17 @@
  * This handler is used to handle CAPA commands
  *
  */
-public class CapaCmdHandler implements CommandHandler, ExtensibleHandler, CapaCapability{
+public class CapaCmdHandler implements CommandHandler<POP3Session>, ExtensibleHandler, CapaCapability{
 	public final static String COMMAND_NAME = "CAPA";
 	private List<CapaCapability> caps;
 
 
+
 	/*
 	 * (non-Javadoc)
-	 * @see org.apache.james.pop3server.CommandHandler#onCommand(org.apache.james.pop3server.POP3Session, org.apache.james.pop3server.POP3Request)
+	 * @see org.apache.james.api.protocol.CommandHandler#onCommand(org.apache.james.api.protocol.LogEnabledSession, org.apache.james.api.protocol.Request)
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
 	    POP3Response response = new POP3Response(POP3Response.OK_RESPONSE,"Capability list follows");
 		
 		for (int i = 0; i < caps.size(); i++) {

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/DeleCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/DeleCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/DeleCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/DeleCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -26,8 +26,9 @@
 import java.util.List;
 
 import org.apache.avalon.framework.container.ContainerUtil;
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -35,7 +36,7 @@
 /**
   * Handles DELE command
   */
-public class DeleCmdHandler implements CommandHandler {
+public class DeleCmdHandler implements CommandHandler<POP3Session> {
 	private final static String COMMAND_NAME = "DELE";
 
 	/**
@@ -44,7 +45,7 @@
      * mailbox.	 
      * 
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         if (session.getHandlerState() == POP3Session.TRANSACTION) {
             int num = 0;

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/ListCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -27,9 +27,10 @@
 
 import javax.mail.MessagingException;
 
-import org.apache.james.pop3server.CommandHandler;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Handler;
-import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -37,7 +38,7 @@
 /**
   * Handles LIST command
   */
-public class ListCmdHandler implements CommandHandler {
+public class ListCmdHandler implements CommandHandler<POP3Session> {
 
 
     /**
@@ -49,7 +50,7 @@
      * @param argument the first argument parsed by the parseCommand method
      */
 
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         String parameters = request.getArgument();
         

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/NoopCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/NoopCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/NoopCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/NoopCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -25,24 +25,24 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 
 /**
   * Handles NOOP command
   */
-public class NoopCmdHandler implements CommandHandler {
+public class NoopCmdHandler implements CommandHandler<POP3Session> {
 	private final static String COMMAND_NAME = "NOOP";
 
     /**
      * Handler method called upon receipt of a NOOP command.
      * Like all good NOOPs, does nothing much.
      *
-	 * @see org.apache.james.pop3server.CommandHandler#onCommand(org.apache.james.pop3server.POP3Session, java.lang.String, java.lang.String)
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         if (session.getHandlerState() == POP3Session.TRANSACTION) {
             response = new POP3Response(POP3Response.OK_RESPONSE);

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java Tue Jan 19 11:34:58 2010
@@ -27,17 +27,18 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.james.api.protocol.AbstractCommandDispatcher;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.LineHandler;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.lifecycle.LogEnabled;
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.LineHandler;
 import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 
 public class POP3CommandDispatcherLineHandler extends
-        AbstractCommandDispatcher<CommandHandler> implements LineHandler, LogEnabled {
+        AbstractCommandDispatcher<POP3Session> implements LineHandler<POP3Session>, LogEnabled {
     private final static String[] mandatoryCommands = { "USER", "PASS", "LIST" };
-    private final UnknownCmdHandler unknownHandler = new UnknownCmdHandler();
+    private final CommandHandler<POP3Session> unknownHandler = new UnknownCmdHandler();
     /** This log is the fall back shared by all instances */
     private static final Log FALLBACK_LOG = LogFactory
             .getLog(POP3CommandDispatcherLineHandler.class);
@@ -65,7 +66,7 @@
     /**
      * @see org.apache.james.api.protocol.AbstractCommandDispatcher#getUnknownCommandHandler()
      */
-    protected CommandHandler getUnknownCommandHandler() {
+    protected CommandHandler<POP3Session> getUnknownCommandHandler() {
         return unknownHandler;
     }
 
@@ -117,21 +118,21 @@
         }
 
         // fetch the command handlers registered to the command
-        List<CommandHandler> commandHandlers = getCommandHandlers(
+        List<CommandHandler<POP3Session>> commandHandlers = getCommandHandlers(
                 curCommandName, session);
         if (commandHandlers == null) {
             // end the session
             POP3Response resp = new POP3Response(POP3Response.ERR_RESPONSE,
                     "Local configuration error: unable to find a command handler.");
             resp.setEndSession(true);
-            session.writePOP3Response(resp);
+            session.writeResponse(resp);
         } else {
             int count = commandHandlers.size();
             for (int i = 0; i < count; i++) {
-                POP3Response response = commandHandlers.get(i).onCommand(
+                Response response = commandHandlers.get(i).onCommand(
                         session, new POP3Request(curCommandName, curCommandArgument));
                 if (response != null) {
-                    session.writePOP3Response(response);
+                    session.writeResponse(response);
                     break;
                 }
             }

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/PassCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -27,9 +27,10 @@
 
 import javax.annotation.Resource;
 
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.api.user.UsersRepository;
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.james.services.MailRepository;
@@ -39,7 +40,7 @@
 /**
   * Handles PASS command
   */
-public class PassCmdHandler implements CommandHandler {
+public class PassCmdHandler implements CommandHandler<POP3Session> {
 
 	private final static String COMMAND_NAME ="PASS";
 	private UsersRepository users;
@@ -70,7 +71,7 @@
      * Reads in and validates the password.
      *
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
     	String parameters = request.getArgument();
         POP3Response response = null;
         if (session.getHandlerState() == POP3Session.AUTHENTICATION_USERSET && parameters != null) {

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/QuitCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -26,8 +26,9 @@
 import java.util.List;
 
 import org.apache.commons.collections.ListUtils;
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -35,7 +36,7 @@
 /**
   * Handles QUIT command
   */
-public class QuitCmdHandler implements CommandHandler {
+public class QuitCmdHandler implements CommandHandler<POP3Session> {
 	private final static String COMMAND_NAME = "QUIT";
 
 
@@ -45,7 +46,7 @@
      *
 	 */
     @SuppressWarnings("unchecked")
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         if (session.getHandlerState() == POP3Session.AUTHENTICATION_READY ||  session.getHandlerState() == POP3Session.AUTHENTICATION_USERSET) {
             response = new POP3Response(POP3Response.OK_RESPONSE,"Apache James POP3 Server signing off.");
@@ -78,4 +79,5 @@
         return commands;
     }
 
+
 }

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RetrCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -21,8 +21,9 @@
 
 package org.apache.james.pop3server.core;
 
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -40,7 +41,7 @@
 /**
   * Handles RETR command
   */
-public class RetrCmdHandler implements CommandHandler {
+public class RetrCmdHandler implements CommandHandler<POP3Session> {
 
 	private final static String COMMAND_NAME = "RETR";
 
@@ -50,9 +51,8 @@
      * This command retrieves a particular mail message from the
      * mailbox.
      *
-	 * @see org.apache.james.pop3server.CommandHandler#onCommand(org.apache.james.pop3server.POP3Session, java.lang.String, java.lang.String)
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         String parameters = request.getArgument();
         if (session.getHandlerState() == POP3Session.TRANSACTION) {

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RsetCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RsetCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RsetCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/RsetCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -28,8 +28,9 @@
 
 import javax.mail.MessagingException;
 
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -38,7 +39,7 @@
 /**
   * Handles RSET command
   */
-public class RsetCmdHandler implements CommandHandler {
+public class RsetCmdHandler implements CommandHandler<POP3Session> {
 	private final static String COMMAND_NAME = "RSET";
 
 	/**
@@ -46,7 +47,7 @@
      * Calls stat() to reset the mailbox.
      *
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         if (session.getHandlerState() == POP3Session.TRANSACTION) {
             stat(session);

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StatCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StatCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StatCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StatCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -27,8 +27,9 @@
 
 import javax.mail.MessagingException;
 
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -36,7 +37,7 @@
 /**
   * Handles STAT command
   */
-public class StatCmdHandler implements CommandHandler {
+public class StatCmdHandler implements CommandHandler<POP3Session> {
 	private final static String COMMAND_NAME = "STAT";
 
 	/**
@@ -45,7 +46,7 @@
      * aggregate size.
      *
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         if (session.getHandlerState() == POP3Session.TRANSACTION) {
             long size = 0;

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/StlsCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,8 +24,9 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 
@@ -35,22 +36,22 @@
  * 
  * 
  */
-public class StlsCmdHandler implements CommandHandler, CapaCapability {
+public class StlsCmdHandler implements CommandHandler<POP3Session>, CapaCapability {
     public final static String COMMAND_NAME = "STLS";
 
 
     /*
      * (non-Javadoc)
-     * @see org.apache.james.pop3server.CommandHandler#onCommand(org.apache.james.pop3server.POP3Session, org.apache.james.pop3server.POP3Request)
+     * @see org.apache.james.api.protocol.CommandHandler#onCommand(org.apache.james.api.protocol.LogEnabledSession, org.apache.james.api.protocol.Request)
      */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response;
         // check if starttls is supported, the state is the right one and it was
         // not started before
         if (session.isStartTLSSupported() && session.getHandlerState() == POP3Session.AUTHENTICATION_READY
                 && session.isTLSStarted() == false) {
             response = new POP3Response(POP3Response.OK_RESPONSE,"Begin TLS negotiation");
-            session.writePOP3Response(response);
+            session.writeResponse(response);
             try {
                 session.startTLS();
             } catch (IOException e) {

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/TopCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -29,8 +29,9 @@
 
 import javax.mail.MessagingException;
 
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Handler;
-import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -52,7 +53,8 @@
      *
 	 */
     @SuppressWarnings("unchecked")
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    @Override
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         String parameters = request.getArgument();
         if (parameters == null) {

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UidlCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UidlCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UidlCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UidlCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -25,9 +25,10 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.james.pop3server.CommandHandler;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Handler;
-import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.mailet.Mail;
@@ -35,7 +36,7 @@
 /**
   * Handles UIDL command
   */
-public class UidlCmdHandler implements CommandHandler, CapaCapability {
+public class UidlCmdHandler implements CommandHandler<POP3Session>, CapaCapability {
 	private final static String COMMAND_NAME = "UIDL";
 
 	/**
@@ -43,7 +44,7 @@
      * Returns a listing of message ids to the client.
      *
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         String parameters = request.getArgument();
         if (session.getHandlerState() == POP3Handler.TRANSACTION) {

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UnknownCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UnknownCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UnknownCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UnknownCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -25,8 +25,9 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 
@@ -34,7 +35,7 @@
 /**
   * Default command handler for handling unknown commands
   */
-public class UnknownCmdHandler implements CommandHandler {
+public class UnknownCmdHandler implements CommandHandler<POP3Session> {
     /**
      * The name of the command handled by the command handler
      */
@@ -46,7 +47,7 @@
      * Returns an error response and logs the command.    
      *
      */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         return new POP3Response(POP3Response.ERR_RESPONSE);
     }
 

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UserCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UserCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UserCmdHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/UserCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -25,15 +25,16 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.james.pop3server.CommandHandler;
-import org.apache.james.pop3server.POP3Request;
+import org.apache.james.api.protocol.CommandHandler;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 
 /**
   * Handles NOOP command
   */
-public class UserCmdHandler implements CommandHandler, CapaCapability {
+public class UserCmdHandler implements CommandHandler<POP3Session>, CapaCapability {
 
 	private final static String COMMAND_NAME = "USER";
 
@@ -43,7 +44,7 @@
      * Reads in the user id.
      *
 	 */
-    public POP3Response onCommand(POP3Session session, POP3Request request) {
+    public Response onCommand(POP3Session session, Request request) {
         POP3Response response = null;
         String parameters = request.getArgument();
         if (session.getHandlerState() == POP3Session.AUTHENTICATION_READY && parameters != null) {

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/WelcomeMessageHandler.java Tue Jan 19 11:34:58 2010
@@ -21,11 +21,11 @@
 package org.apache.james.pop3server.core;
 
 import org.apache.james.Constants;
-import org.apache.james.pop3server.ConnectHandler;
+import org.apache.james.api.protocol.ConnectHandler;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 
-public class WelcomeMessageHandler implements ConnectHandler{
+public class WelcomeMessageHandler implements ConnectHandler<POP3Session>{
     /** POP3 Server identification string used in POP3 headers */
     private static final String softwaretype        = "JAMES POP3 Server "
                                                         + Constants.SOFTWARE_VERSION;
@@ -43,7 +43,7 @@
                     .append(softwaretype)
                     .append(") ready ");
         POP3Response response = new POP3Response(POP3Response.OK_RESPONSE, responseBuffer.toString());
-        session.writePOP3Response(response);
+        session.writeResponse(response);
     }
 
 }

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/AsyncPOP3Server.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/AsyncPOP3Server.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/AsyncPOP3Server.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/AsyncPOP3Server.java Tue Jan 19 11:34:58 2010
@@ -26,11 +26,12 @@
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.SubnodeConfiguration;
 import org.apache.james.pop3server.POP3HandlerConfigurationData;
+import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3ServerMBean;
 import org.apache.james.pop3server.core.CoreCmdHandlerLoader;
 import org.apache.james.pop3server.mina.filter.POP3ResponseFilter;
-import org.apache.james.pop3server.mina.filter.POP3ValidationFilter;
 import org.apache.james.socket.mina.AbstractAsyncServer;
+import org.apache.james.socket.mina.filter.ResponseValidationFilter;
 import org.apache.james.socket.shared.ProtocolHandlerChainImpl;
 import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
 import org.apache.mina.core.service.IoHandler;
@@ -118,7 +119,7 @@
         
         // response and validation filter to the chain
         builder.addLast("pop3ResponseFilter", new POP3ResponseFilter());
-        builder.addLast("requestValidationFilter", new POP3ValidationFilter(getLogger()));
+        builder.addLast("responseValidationFilter", new ResponseValidationFilter<POP3Response>(getLogger(), POP3Response.class));
         return builder;
     }
 

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3IoHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3IoHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3IoHandler.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3IoHandler.java Tue Jan 19 11:34:58 2010
@@ -19,18 +19,12 @@
 
 package org.apache.james.pop3server.mina;
 
-import java.util.LinkedList;
-import java.util.List;
-
 import org.apache.commons.logging.Log;
+import org.apache.james.api.protocol.ProtocolSession;
 import org.apache.james.api.protocol.ProtocolHandlerChain;
-import org.apache.james.pop3server.ConnectHandler;
-import org.apache.james.pop3server.LineHandler;
 import org.apache.james.pop3server.POP3HandlerConfigurationData;
-import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Session;
-
-import org.apache.mina.core.service.IoHandlerAdapter;
+import org.apache.james.socket.mina.AbstractIoHandler;
 import org.apache.mina.core.session.IdleStatus;
 import org.apache.mina.core.session.IoSession;
 import org.apache.mina.filter.ssl.SslContextFactory;
@@ -40,11 +34,9 @@
  * 
  *
  */
-public class POP3IoHandler extends IoHandlerAdapter{
-    private final static String POP3_SESSION = "org.apache.james.pop3server.mina.POP3IoHandler.POP3_SESSION";
+public class POP3IoHandler extends AbstractIoHandler{
     
     private Log logger;
-    private ProtocolHandlerChain chain;
     private POP3HandlerConfigurationData conf;
     private SslContextFactory contextFactory;
 
@@ -55,76 +47,37 @@
     
     public POP3IoHandler(ProtocolHandlerChain chain,
     		POP3HandlerConfigurationData conf, Log logger, SslContextFactory contextFactory) {
-        this.chain = chain;
+        super(chain);
         this.conf = conf;
         this.logger = logger;
         this.contextFactory = contextFactory;
     }
 
     /**
-     * @see org.apache.mina.core.service.IoHandlerAdapter#messageReceived(org.apache.mina.core.session.IoSession, java.lang.Object)
-     */
-    public void messageReceived(IoSession session, Object message)
-            throws Exception {
-        POP3Session pop3Session = (POP3Session) session.getAttribute(POP3_SESSION);
-        LinkedList<LineHandler> lineHandlers = chain.getHandlers(LineHandler.class);
-        if (lineHandlers.size() > 0) {
-            // thats not really optimal but it allow us to keep things as generic as possible
-            // Will prolly get refactored later
-            String line = ((POP3Request) message).toString();
-            ((LineHandler) lineHandlers.getLast()).onLine(pop3Session, line);
-        }
-    }
-
-    /**
-     * @see org.apache.mina.core.service.IoHandler#exceptionCaught(org.apache.mina.core.session.IoSession,
-     *      java.lang.Throwable)
+     * @see org.apache.mina.core.service.IoHandler#sessionIdle(org.apache.mina.core.session.IoSession,
+     *      org.apache.mina.core.session.IdleStatus)
      */
-    public void exceptionCaught(IoSession session, Throwable exception)
+    public void sessionIdle(IoSession session, IdleStatus status)
             throws Exception {
-        logger.error("Caught exception: " + session.getCurrentWriteMessage(),
-                exception);
-        // just close session
-        session.close(true);
+        logger.debug("Connection timed out");
+        session.write("Connection timeout");
     }
 
-    /**
-     * @see org.apache.mina.core.service.IoHandler#sessionCreated(org.apache.mina.core.session.IoSession)
-     */
-    public void sessionCreated(IoSession session) throws Exception {
+    @Override
+    protected ProtocolSession createSession(IoSession session) throws Exception {
         POP3Session pop3Session;
         if (contextFactory == null) {
-        	pop3Session = new POP3SessionImpl(conf, logger, session);
+            pop3Session = new POP3SessionImpl(conf, logger, session);
         } else {
-        	pop3Session = new POP3SessionImpl(conf, logger, session, contextFactory.newInstance());
+            pop3Session = new POP3SessionImpl(conf, logger, session, contextFactory.newInstance());
         }
-        
-        // Add attribute
-        session.setAttribute(POP3_SESSION,pop3Session);
+        return pop3Session;
     }
 
-    /**
-     * @see org.apache.mina.core.service.IoHandler#sessionIdle(org.apache.mina.core.session.IoSession,
-     *      org.apache.mina.core.session.IdleStatus)
-     */
-    public void sessionIdle(IoSession session, IdleStatus status)
-            throws Exception {
-        logger.debug("Connection timed out");
-        session.write("Connection timeout");
+    @Override
+    protected String getSessionKey() {
+        return POP3SessionImpl.POP3SESSION;
     }
 
-    /**
-     * @see org.apache.mina.core.service.IoHandler#sessionOpened(org.apache.mina.core.session.IoSession)
-     */
-    public void sessionOpened(IoSession session) throws Exception {
-        List<ConnectHandler> connectHandlers = chain
-                .getHandlers(ConnectHandler.class);
-      
-        if (connectHandlers != null) {
-            for (int i = 0; i < connectHandlers.size(); i++) {
-                connectHandlers.get(i).onConnect(
-                        (POP3Session) session.getAttribute(POP3_SESSION));
-            }
-        }    
-    }
+   
 }

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3SessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3SessionImpl.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3SessionImpl.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/POP3SessionImpl.java Tue Jan 19 11:34:58 2010
@@ -26,8 +26,8 @@
 import javax.net.ssl.SSLContext;
 
 import org.apache.commons.logging.Log;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.pop3server.POP3HandlerConfigurationData;
-import org.apache.james.pop3server.POP3Response;
 import org.apache.james.pop3server.POP3Session;
 import org.apache.james.services.MailRepository;
 import org.apache.james.socket.mina.AbstractMINASession;
@@ -36,6 +36,7 @@
 
 public class POP3SessionImpl extends AbstractMINASession implements POP3Session{
 
+    public final static String POP3SESSION = "POP3SESSION";
 
 	private POP3HandlerConfigurationData configData;
 
@@ -139,23 +140,15 @@
 		this.userMailbox = userMailbox;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.apache.james.pop3server.POP3Session#writePOP3Response(org.apache.james.pop3server.POP3Response)
-	 */
-	public void writePOP3Response(POP3Response response) {
-		getIoSession().write(response);		
-	}
 
 	/*
 	 * (non-Javadoc)
-	 * @see org.apache.james.pop3server.POP3Session#writeResponse(java.lang.String)
+	 * @see org.apache.james.api.protocol.LogEnabledSession#writeResponse(org.apache.james.api.protocol.Response)
 	 */
-	public void writeResponse(String string) {
-		getIoSession().write(string);
+	public void writeResponse(Response response) {
+		getIoSession().write(response);		
 	}
 
-
 	/*
 	 * (non-Javadoc)
 	 * @see org.apache.james.api.protocol.TLSSupportedSession#resetState()

Modified: james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/filter/POP3ResponseFilter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/filter/POP3ResponseFilter.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/filter/POP3ResponseFilter.java (original)
+++ james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/mina/filter/POP3ResponseFilter.java Tue Jan 19 11:34:58 2010
@@ -19,9 +19,6 @@
 
 package org.apache.james.pop3server.mina.filter;
 
-import java.util.Locale;
-
-import org.apache.james.pop3server.POP3Request;
 import org.apache.james.pop3server.POP3Response;
 import org.apache.james.socket.mina.filter.AbstractResponseFilter;
 import org.apache.mina.core.session.IoSession;
@@ -38,36 +35,6 @@
     }
 
     /**
-     * (non-Javadoc)
-     * 
-     * @see org.apache.mina.core.filterchain.IoFilterAdapter#messageReceived(org.apache.mina.core.filterchain.IoFilter.NextFilter,
-     *      org.apache.mina.core.session.IoSession, java.lang.Object)
-     */
-    public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception {
-        if (message instanceof String) {
-            String cmdString = (String) message;
-            if (cmdString != null) {
-                cmdString = cmdString.trim();
-            }
-
-            String curCommandArgument = null;
-            String curCommandName = null;
-            int spaceIndex = cmdString.indexOf(" ");
-            if (spaceIndex > 0) {
-                curCommandName = cmdString.substring(0, spaceIndex);
-                curCommandArgument = cmdString.substring(spaceIndex + 1);
-            } else {
-                curCommandName = cmdString;
-            }
-            curCommandName = curCommandName.toUpperCase(Locale.US);
-
-            nextFilter.messageReceived(session, new POP3Request(curCommandName, curCommandArgument));
-        } else {
-            super.messageReceived(nextFilter, session, message);
-        }
-    }
-
-    /**
      * @see org.apache.mina.core.filterchain.IoFilterAdapter#filterWrite(org.apache.mina.core.filterchain.IoFilter.NextFilter,
      *      org.apache.mina.core.session.IoSession,
      *      org.apache.mina.core.write.WriteRequest)

Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/CommandHandler.java Tue Jan 19 11:34:58 2010
@@ -19,10 +19,7 @@
 
 package org.apache.james.remotemanager;
 
-import org.apache.james.api.protocol.CommonCommandHandler;
-
-public interface CommandHandler extends CommonCommandHandler{
+public interface CommandHandler extends org.apache.james.api.protocol.CommandHandler<RemoteManagerSession>{
 	
-	public RemoteManagerResponse onCommand(RemoteManagerSession session, RemoteManagerRequest request);
 	public CommandHelp getHelp();
 }

Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerHandler.java Tue Jan 19 11:34:58 2010
@@ -29,7 +29,10 @@
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
+import org.apache.james.api.protocol.ConnectHandler;
+import org.apache.james.api.protocol.LineHandler;
 import org.apache.james.api.protocol.ProtocolHandlerChain;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.socket.api.CRLFTerminatedReader;
 import org.apache.james.socket.api.ProtocolContext;
 import org.apache.james.socket.api.ProtocolHandler;
@@ -54,8 +57,10 @@
 
     private ProtocolHandlerChain handlerChain;
 
+    @SuppressWarnings("unchecked")
     private LinkedList<ConnectHandler> connectHandlers;
 
+    @SuppressWarnings("unchecked")
     private LinkedList<LineHandler> lineHandlers;
     
     public RemoteManagerHandler(final RemoteManagerHandlerConfigurationData theConfigData, final ProtocolHandlerChain handlerChain) {
@@ -68,6 +73,7 @@
     /**
      * @see org.apache.avalon.cornerstone.services.connection.ConnectionHandler#handleConnection(Socket)
      */
+    @SuppressWarnings("unchecked")
     public void handleProtocol(ProtocolContext context) throws IOException {
         this.context = context;
         sessionEnded = false;
@@ -157,10 +163,12 @@
         return stateMap;
     }
 
-    /**
-     * @see org.apache.james.remotemanager.RemoteManagerSession#writeRemoteManagerResponse(org.apache.james.remotemanager.RemoteManagerResponse)
+    
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.api.protocol.LogEnabledSession#writeResponse(org.apache.james.api.protocol.Response)
      */
-    public void writeRemoteManagerResponse(RemoteManagerResponse response) {
+    public void writeResponse(Response response) {
         // Write a single-line or multiline response
         if (response != null) {
             List<CharSequence> responseList = response.getLines();
@@ -199,7 +207,8 @@
      * (non-Javadoc)
      * @see org.apache.james.remotemanager.RemoteManagerSession#pushLineHandler(org.apache.james.remotemanager.LineHandler)
      */
-    public void pushLineHandler(LineHandler lineHandler) {
+    @SuppressWarnings("unchecked")
+    public void pushLineHandler(LineHandler<RemoteManagerSession> lineHandler) {
         if (lineHandlers == null) {
             lineHandlers = new LinkedList<LineHandler>();
         }
@@ -215,5 +224,21 @@
         return theConfigData.getAdministrativeAccountData();
     }
 
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.api.protocol.LogEnabledSession#getRemoteHost()
+     */
+    public String getRemoteHost() {
+        return  context.getRemoteHost();
+    }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.api.protocol.LogEnabledSession#getRemoteIPAddress()
+     */
+    public String getRemoteIPAddress() {
+        return context.getRemoteIP();
+    }
+
 
 }

Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerRequest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerRequest.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerRequest.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerRequest.java Tue Jan 19 11:34:58 2010
@@ -19,7 +19,9 @@
 
 package org.apache.james.remotemanager;
 
-public class RemoteManagerRequest {
+import org.apache.james.api.protocol.Request;
+
+public class RemoteManagerRequest implements Request{
 
 
     private final String command;

Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerResponse.java Tue Jan 19 11:34:58 2010
@@ -22,9 +22,11 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.james.api.protocol.Response;
+
 /**
  */
-public class RemoteManagerResponse {
+public class RemoteManagerResponse implements Response{
 
     
     private List<CharSequence> lines = null;

Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/RemoteManagerSession.java Tue Jan 19 11:34:58 2010
@@ -21,9 +21,10 @@
 
 import java.util.Map;
 
-import org.apache.james.api.protocol.LogEnabledSession;
+import org.apache.james.api.protocol.LineHandler;
+import org.apache.james.api.protocol.ProtocolSession;
 
-public interface RemoteManagerSession extends LogEnabledSession{
+public interface RemoteManagerSession extends ProtocolSession{
 
     public final static String CURRENT_USERREPOSITORY= "CURRENT_USERREPOSITORY";
     public final static String HEADER_IDENTIFIER = "header=";
@@ -31,18 +32,10 @@
     public final static String KEY_IDENTIFIER = "key=";
     
     /**
-     * Write response to client
-     * 
-     * @param response
-     */
-    public void writeRemoteManagerResponse(RemoteManagerResponse response);
-	
-    
-    /**
      * Put a new line handler in the chain
      * @param overrideCommandHandler
      */
-    public void pushLineHandler(LineHandler overrideCommandHandler);
+    public void pushLineHandler(LineHandler<RemoteManagerSession> overrideCommandHandler);
     
     /**
      * Pop the last command handler 

Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddDomainCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddDomainCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddDomainCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddDomainCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -25,11 +25,12 @@
 
 import javax.annotation.Resource;
 
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.management.DomainListManagementException;
 import org.apache.james.management.DomainListManagementService;
 import org.apache.james.remotemanager.CommandHandler;
 import org.apache.james.remotemanager.CommandHelp;
-import org.apache.james.remotemanager.RemoteManagerRequest;
 import org.apache.james.remotemanager.RemoteManagerResponse;
 import org.apache.james.remotemanager.RemoteManagerSession;
 
@@ -58,9 +59,9 @@
 
     /*
      * (non-Javadoc)
-     * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, org.apache.james.remotemanager.RemoteManagerRequest)
+     * @see org.apache.james.api.protocol.CommandHandler#onCommand(org.apache.james.api.protocol.LogEnabledSession, org.apache.james.api.protocol.Request)
      */
-    public RemoteManagerResponse onCommand(RemoteManagerSession session, RemoteManagerRequest request) {
+    public Response onCommand(RemoteManagerSession session, Request request) {
         RemoteManagerResponse response = null;
         String parameters = request.getArgument();
         // check if the command was called correct

Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/AddHamCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -25,11 +25,12 @@
 
 import javax.annotation.Resource;
 
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
 import org.apache.james.management.BayesianAnalyzerManagementException;
 import org.apache.james.management.BayesianAnalyzerManagementService;
 import org.apache.james.remotemanager.CommandHandler;
 import org.apache.james.remotemanager.CommandHelp;
-import org.apache.james.remotemanager.RemoteManagerRequest;
 import org.apache.james.remotemanager.RemoteManagerResponse;
 import org.apache.james.remotemanager.RemoteManagerSession;
 
@@ -62,9 +63,9 @@
 
     /*
      * (non-Javadoc)
-     * @see org.apache.james.remotemanager.CommandHandler#onCommand(org.apache.james.remotemanager.RemoteManagerSession, org.apache.james.remotemanager.RemoteManagerRequest)
+     * @see org.apache.james.api.protocol.CommandHandler#onCommand(org.apache.james.api.protocol.LogEnabledSession, org.apache.james.api.protocol.Request)
      */
-    public RemoteManagerResponse onCommand(RemoteManagerSession session, RemoteManagerRequest request) {
+    public Response onCommand(RemoteManagerSession session, Request request) {
         RemoteManagerResponse response;
         String parameters = request.getArgument();
         String [] args = null;



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