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