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 [3/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...
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/RemoteManagerSessionImpl.java Tue Jan 19 11:34:58 2010
@@ -19,13 +19,14 @@
package org.apache.james.remotemanager.mina;
+import java.net.InetSocketAddress;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
-import org.apache.james.remotemanager.LineHandler;
+import org.apache.james.api.protocol.LineHandler;
+import org.apache.james.api.protocol.Response;
import org.apache.james.remotemanager.RemoteManagerHandlerConfigurationData;
-import org.apache.james.remotemanager.RemoteManagerResponse;
import org.apache.james.remotemanager.RemoteManagerSession;
import org.apache.james.remotemanager.mina.filter.FilterLineHandlerAdapter;
import org.apache.james.remotemanager.mina.filter.RemoteManagerResponseFilter;
@@ -37,6 +38,7 @@
private Map<String, Object> state = new HashMap<String, Object>();
private RemoteManagerHandlerConfigurationData config;
private int lineHandlerCount = 0;
+ private InetSocketAddress socketAddress;
public final static String REMOTEMANAGER_SESSION = "REMOTEMANAGER_SESSION";
@@ -45,6 +47,7 @@
this.logger = logger;
this.session = session;
this.config = config;
+ this.socketAddress = (InetSocketAddress) session.getRemoteAddress();
}
/*
@@ -59,17 +62,6 @@
/*
* (non-Javadoc)
*
- * @seeorg.apache.james.remotemanager.RemoteManagerSession#
- * writeRemoteManagerResponse
- * (org.apache.james.remotemanager.RemoteManagerResponse)
- */
- public void writeRemoteManagerResponse(RemoteManagerResponse response) {
- session.write(response);
- }
-
- /*
- * (non-Javadoc)
- *
* @see org.apache.james.api.protocol.LogEnabledSession#getLogger()
*/
public Log getLogger() {
@@ -108,8 +100,32 @@
* (non-Javadoc)
* @see org.apache.james.remotemanager.RemoteManagerSession#pushLineHandler(org.apache.james.remotemanager.LineHandler)
*/
- public void pushLineHandler(LineHandler overrideCommandHandler) {
+ public void pushLineHandler(LineHandler<RemoteManagerSession> overrideCommandHandler) {
lineHandlerCount++;
session.getFilterChain().addAfter(RemoteManagerResponseFilter.NAME, "lineHandler" + lineHandlerCount, new FilterLineHandlerAdapter(overrideCommandHandler));
}
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.api.protocol.LogEnabledSession#getRemoteHost()
+ */
+ public String getRemoteHost() {
+ return socketAddress.getHostName();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.api.protocol.LogEnabledSession#getRemoteIPAddress()
+ */
+ public String getRemoteIPAddress() {
+ return socketAddress.getAddress().getHostAddress();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.api.protocol.LogEnabledSession#writeResponse(org.apache.james.api.protocol.Response)
+ */
+ public void writeResponse(Response response) {
+ session.write(response);
+ }
}
Modified: james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java (original)
+++ james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/mina/filter/FilterLineHandlerAdapter.java Tue Jan 19 11:34:58 2010
@@ -18,7 +18,7 @@
****************************************************************/
package org.apache.james.remotemanager.mina.filter;
-import org.apache.james.remotemanager.LineHandler;
+import org.apache.james.api.protocol.LineHandler;
import org.apache.james.remotemanager.RemoteManagerSession;
import org.apache.james.remotemanager.mina.RemoteManagerSessionImpl;
import org.apache.mina.core.filterchain.IoFilterAdapter;
@@ -31,9 +31,9 @@
*/
public final class FilterLineHandlerAdapter extends IoFilterAdapter {
- private LineHandler lineHandler;
+ private LineHandler<RemoteManagerSession> lineHandler;
- public FilterLineHandlerAdapter(LineHandler lineHandler) {
+ public FilterLineHandlerAdapter(LineHandler<RemoteManagerSession> lineHandler) {
this.lineHandler = lineHandler;
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPRequest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPRequest.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPRequest.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPRequest.java Tue Jan 19 11:34:58 2010
@@ -19,7 +19,9 @@
package org.apache.james.smtpserver.protocol;
-public final class SMTPRequest {
+import org.apache.james.api.protocol.Request;
+
+public final class SMTPRequest implements Request{
private final String command;
private final String argument;
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPResponse.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPResponse.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPResponse.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPResponse.java Tue Jan 19 11:34:58 2010
@@ -22,21 +22,18 @@
import java.util.LinkedList;
import java.util.List;
+import org.apache.james.api.protocol.RetCodeResponse;
+
/**
* Contains an SMTP result
*/
-public final class SMTPResponse {
+public final class SMTPResponse implements RetCodeResponse {
private String retCode = null;
private List<CharSequence> lines = null;
private String rawLine = null;
private boolean endSession = false;
-
- public SMTPResponse() {
- //TODO: Should we remove this constructor to force the developers to specify all needed informations ?
- }
-
/**
* Construct a new SMTPResponse. The given code and description can not be null, if null an IllegalArgumentException
* get thrown
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPSession.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPSession.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/SMTPSession.java Tue Jan 19 11:34:58 2010
@@ -21,6 +21,7 @@
import java.util.Map;
+import org.apache.james.api.protocol.LineHandler;
import org.apache.james.api.protocol.TLSSupportedSession;
/**
@@ -41,20 +42,6 @@
/** the Session state */
public final static String SESSION_STATE_MAP = "SESSION_STATE_MAP";
-
- /**
- * Returns Map that consists of the state of the SMTPSession per mail
- *
- * @return map of the current SMTPSession state per mail
- */
- Map<String, Object> getState();
-
- /**
- * Resets message-specific, but not authenticated user, state.
- *
- */
- void resetState();
-
/**
* Returns the service wide hello name
*
@@ -138,17 +125,12 @@
* Put a new line handler in the chain
* @param overrideCommandHandler
*/
- void pushLineHandler(LineHandler overrideCommandHandler);
+ void pushLineHandler(LineHandler<SMTPSession> overrideCommandHandler);
/**
* Pop the last command handler
*/
void popLineHandler();
-
- /**
- * Write an SMTPResponse to the client
- */
- void writeSMTPResponse(SMTPResponse response);
/**
* Sleep for the given ms
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/AbstractHookableCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/AbstractHookableCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/AbstractHookableCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/AbstractHookableCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -22,9 +22,10 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.james.api.protocol.CommandHandler;
import org.apache.james.api.protocol.ExtensibleHandler;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -36,7 +37,7 @@
* Abstract class which Handle hooks.
*
*/
-public abstract class AbstractHookableCmdHandler<Hook> implements CommandHandler, ExtensibleHandler {
+public abstract class AbstractHookableCmdHandler<Hook> implements CommandHandler<SMTPSession>, ExtensibleHandler {
private List<Hook> hooks;
@@ -48,7 +49,7 @@
* @see org.apache.james.smtpserver.protocol.CommandHandler#onCommand(org.apache.james.smtpserver.protocol.SMTPSession,
* java.lang.String, java.lang.String)
*/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
String command = request.getCommand();
String parameters = request.getArgument();
SMTPResponse response = doFilterChecks(session, command, parameters);
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -23,13 +23,14 @@
import java.util.LinkedList;
import java.util.List;
+import org.apache.james.api.protocol.CommandHandler;
import org.apache.james.api.protocol.ExtensibleHandler;
+import org.apache.james.api.protocol.LineHandler;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.MailEnvelopeImpl;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -39,9 +40,9 @@
/**
* handles DATA command
*/
-public class DataCmdHandler implements CommandHandler, ExtensibleHandler {
+public class DataCmdHandler implements CommandHandler<SMTPSession>, ExtensibleHandler {
- public final class DataConsumerLineHandler implements LineHandler {
+ public final class DataConsumerLineHandler implements LineHandler<SMTPSession> {
/**
* @see org.apache.james.smtpserver.protocol.LineHandler#onLine(org.apache.james.smtpserver.protocol.SMTPSession, byte[])
*/
@@ -54,12 +55,12 @@
}
}
- public final class DataLineFilterWrapper implements LineHandler {
+ public final class DataLineFilterWrapper implements LineHandler<SMTPSession> {
- private DataLineFilter filter;
- private LineHandler next;
+ private DataLineFilter<SMTPSession> filter;
+ private LineHandler<SMTPSession> next;
- public DataLineFilterWrapper(DataLineFilter filter, LineHandler next) {
+ public DataLineFilterWrapper(DataLineFilter<SMTPSession> filter, LineHandler<SMTPSession> next) {
this.filter = filter;
this.next = next;
}
@@ -71,14 +72,13 @@
public final static String MAILENV = "MAILENV";
- private LineHandler lineHandler;
+ private LineHandler<SMTPSession> lineHandler;
/**
* process DATA command
*
- * @see org.apache.james.smtpserver.protocol.CommandHandler#onCommand(SMTPSession)
*/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
String parameters = request.getArgument();
SMTPResponse response = doDATAFilter(session,parameters);
@@ -136,7 +136,7 @@
public void wireExtensions(Class interfaceName, List extension) throws WiringException {
if (DataLineFilter.class.equals(interfaceName)) {
- LineHandler lineHandler = new DataConsumerLineHandler();
+ LineHandler<SMTPSession> lineHandler = new DataConsumerLineHandler();
for (int i = extension.size() - 1; i >= 0; i--) {
lineHandler = new DataLineFilterWrapper((DataLineFilter) extension.get(i), lineHandler);
}
@@ -157,7 +157,7 @@
return null;
}
- protected LineHandler getLineHandler() {
+ protected LineHandler<SMTPSession> getLineHandler() {
return lineHandler;
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineFilter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineFilter.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineFilter.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineFilter.java Tue Jan 19 11:34:58 2010
@@ -21,13 +21,13 @@
package org.apache.james.smtpserver.protocol.core;
-import org.apache.james.smtpserver.protocol.LineHandler;
-import org.apache.james.smtpserver.protocol.SMTPSession;
+import org.apache.james.api.protocol.LineHandler;
+import org.apache.james.api.protocol.ProtocolSession;
/**
* DataLineFilter are used to check the Data stream while the message is
* being received.
*/
-public interface DataLineFilter {
- void onLine(SMTPSession session, String line, LineHandler next);
+public interface DataLineFilter<Session extends ProtocolSession> {
+ void onLine(Session session, String line, LineHandler<Session> next);
}
\ No newline at end of file
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineMessageHookHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineMessageHookHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineMessageHookHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/DataLineMessageHookHandler.java Tue Jan 19 11:34:58 2010
@@ -29,10 +29,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.james.api.protocol.ExtensibleHandler;
+import org.apache.james.api.protocol.LineHandler;
import org.apache.james.api.protocol.WiringException;
import org.apache.james.dsn.DSNStatus;
import org.apache.james.lifecycle.LogEnabled;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.MailEnvelopeImpl;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
@@ -42,7 +42,7 @@
import org.apache.james.smtpserver.protocol.hook.MessageHook;
import org.apache.mailet.Mail;
-public final class DataLineMessageHookHandler implements DataLineFilter, ExtensibleHandler, LogEnabled {
+public final class DataLineMessageHookHandler implements DataLineFilter<SMTPSession>, ExtensibleHandler, LogEnabled {
/** This log is the fall back shared by all instances */
private static final Log FALLBACK_LOG = LogFactory.getLog(DataLineMessageHookHandler.class);
@@ -54,11 +54,12 @@
private List rHooks;
+
/*
* (non-Javadoc)
- * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession, java.lang.String, org.apache.james.smtpserver.protocol.LineHandler)
+ * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.api.protocol.LogEnabledSession, java.lang.String, org.apache.james.api.protocol.LineHandler)
*/
- public void onLine(SMTPSession session, String rawLine, LineHandler next) {
+ public void onLine(SMTPSession session, String rawLine, LineHandler<SMTPSession> next) {
MailEnvelopeImpl env = (MailEnvelopeImpl) session.getState().get(DataCmdHandler.MAILENV);
OutputStream out = env.getMessageOutputStream();
byte[] line = rawLine.getBytes();
@@ -90,7 +91,7 @@
session.getLogger().error(
"Unknown error occurred while processing DATA.", e);
- session.writeSMTPResponse(response);
+ session.writeResponse(response);
return;
}
}
@@ -120,7 +121,7 @@
//if the response is received, stop processing of command handlers
if(response != null) {
- session.writeSMTPResponse(response);
+ session.writeResponse(response);
break;
}
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ExpnCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ExpnCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ExpnCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ExpnCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,9 +24,10 @@
import java.util.ArrayList;
import java.util.Collection;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -34,7 +35,7 @@
/**
* Handles EXPN command
*/
-public class ExpnCmdHandler implements CommandHandler {
+public class ExpnCmdHandler implements CommandHandler<SMTPSession> {
/**
* The name of the command handled by the command handler
@@ -47,7 +48,7 @@
* not implemented.
*
*/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
return new SMTPResponse(SMTPRetCode.UNIMPLEMENTED_COMMAND, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SYSTEM_NOT_CAPABLE)+" EXPN is not supported");
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/HelpCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/HelpCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/HelpCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/HelpCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,9 +24,10 @@
import java.util.ArrayList;
import java.util.Collection;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -34,7 +35,7 @@
/**
* Handles HELP command
*/
-public class HelpCmdHandler implements CommandHandler {
+public class HelpCmdHandler implements CommandHandler<SMTPSession> {
/**
* The name of the command handled by the command handler
*/
@@ -45,7 +46,7 @@
* handles HELP command
*
**/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request){
+ public Response onCommand(SMTPSession session, Request request){
return new SMTPResponse(SMTPRetCode.UNIMPLEMENTED_COMMAND, DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SYSTEM_NOT_CAPABLE)+" " + COMMAND_NAME + " is not supported");
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/MailCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/MailCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/MailCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/MailCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -28,8 +28,10 @@
import java.util.Map;
import java.util.StringTokenizer;
+import org.apache.james.api.protocol.Request;
+import org.apache.james.api.protocol.Response;
+import org.apache.james.api.protocol.RetCodeResponse;
import org.apache.james.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -48,13 +50,15 @@
*/
private Map<String, MailParametersHook> paramHooks;
- /**
- * @see org.apache.james.smtpserver.protocol.core.AbstractHookableCmdHandler#onCommand(org.apache.james.smtpserver.protocol.SMTPSession, org.apache.james.smtpserver.protocol.SMTPRequest)
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.smtpserver.protocol.core.AbstractHookableCmdHandler#onCommand(org.apache.james.smtpserver.protocol.SMTPSession, org.apache.james.api.protocol.Request)
*/
- public SMTPResponse onCommand(SMTPSession session,SMTPRequest request) {
- SMTPResponse response = super.onCommand(session, request);
+ public Response onCommand(SMTPSession session, Request request) {
+ Response response = super.onCommand(session, request);
// Check if the response was not ok
- if (response.getRetCode().equals(SMTPRetCode.MAIL_OK) == false) {
+ if (((RetCodeResponse)response).getRetCode().equals(SMTPRetCode.MAIL_OK) == false) {
// cleanup the session
session.getState().remove(SMTPSession.SENDER);
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/NoopCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/NoopCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/NoopCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/NoopCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,9 +24,10 @@
import java.util.ArrayList;
import java.util.Collection;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -34,7 +35,7 @@
/**
* Handles NOOP command
*/
-public class NoopCmdHandler implements CommandHandler {
+public class NoopCmdHandler implements CommandHandler<SMTPSession> {
/**
* The name of the command handled by the command handler
@@ -46,7 +47,7 @@
* Just sends back an OK and logs the command.
*
*/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
return new SMTPResponse(SMTPRetCode.MAIL_OK, DSNStatus.getStatus(DSNStatus.SUCCESS,DSNStatus.UNDEFINED_STATUS)+" OK");
}
@@ -59,4 +60,5 @@
return implCommands;
}
+
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RcptCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RcptCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RcptCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RcptCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,8 +24,8 @@
import java.util.Locale;
import java.util.StringTokenizer;
+import org.apache.james.api.protocol.CommandHandler;
import org.apache.james.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -37,7 +37,7 @@
* Handles RCPT command
*/
public class RcptCmdHandler extends AbstractHookableCmdHandler<RcptHook> implements
- CommandHandler {
+ CommandHandler<SMTPSession> {
public static final String CURRENT_RECIPIENT = "CURRENT_RECIPIENT"; // Current recipient
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ReceivedDataLineFilter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ReceivedDataLineFilter.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ReceivedDataLineFilter.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/ReceivedDataLineFilter.java Tue Jan 19 11:34:58 2010
@@ -22,12 +22,12 @@
import java.util.Date;
import java.util.List;
-import org.apache.james.smtpserver.protocol.LineHandler;
+import org.apache.james.api.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.SMTPSession;
import org.apache.mailet.base.RFC2822Headers;
import org.apache.mailet.base.RFC822DateFormat;
-public class ReceivedDataLineFilter implements DataLineFilter {
+public class ReceivedDataLineFilter implements DataLineFilter<SMTPSession> {
private final static String SOFTWARE_TYPE = "JAMES SMTP Server ";
@@ -42,9 +42,9 @@
/*
* (non-Javadoc)
- * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession, java.lang.String, org.apache.james.smtpserver.protocol.LineHandler)
+ * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.api.protocol.LogEnabledSession, java.lang.String, org.apache.james.api.protocol.LineHandler)
*/
- public void onLine(SMTPSession session, String line, LineHandler next) {
+ public void onLine(SMTPSession session, String line, LineHandler<SMTPSession> next) {
if (session.getState().containsKey(HEADERS_WRITTEN) == false) {
addNewReceivedMailHeaders(session, next);
session.getState().put(HEADERS_WRITTEN, true);
@@ -52,7 +52,7 @@
next.onLine(session, line);
}
- private void addNewReceivedMailHeaders(SMTPSession session, LineHandler next) {
+ private void addNewReceivedMailHeaders(SMTPSession session, LineHandler<SMTPSession> next) {
StringBuilder headerLineBuffer = new StringBuilder();
String heloMode = (String) session.getConnectionState().get(
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RsetCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RsetCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RsetCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/RsetCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,9 +24,10 @@
import java.util.ArrayList;
import java.util.Collection;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -34,7 +35,7 @@
/**
* Handles RSET command
*/
-public class RsetCmdHandler implements CommandHandler {
+public class RsetCmdHandler implements CommandHandler<SMTPSession> {
/**
* The name of the command handled by the command handler
*/
@@ -44,7 +45,7 @@
* handles RSET command
*
**/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
return doRSET(session, request.getArgument());
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/SMTPCommandDispatcherLineHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/SMTPCommandDispatcherLineHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/SMTPCommandDispatcherLineHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/SMTPCommandDispatcherLineHandler.java Tue Jan 19 11:34:58 2010
@@ -27,16 +27,17 @@
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.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
-public class SMTPCommandDispatcherLineHandler extends AbstractCommandDispatcher<CommandHandler> implements LogEnabled, LineHandler {
+public class SMTPCommandDispatcherLineHandler extends AbstractCommandDispatcher<SMTPSession> implements LogEnabled, LineHandler<SMTPSession> {
/** This log is the fall back shared by all instances */
private static final Log FALLBACK_LOG = LogFactory.getLog(SMTPCommandDispatcherLineHandler.class);
@@ -45,7 +46,7 @@
private Log serviceLog = FALLBACK_LOG;
- private final CommandHandler unknownHandler = new UnknownCmdHandler();
+ private final CommandHandler<SMTPSession> unknownHandler = new UnknownCmdHandler();
private final static String[] mandatoryCommands = { "MAIL" , "RCPT", "DATA"};
@@ -70,19 +71,19 @@
}
curCommandName = curCommandName.toUpperCase(Locale.US);
- List<CommandHandler> commandHandlers = getCommandHandlers(curCommandName, session);
+ List<CommandHandler<SMTPSession>> commandHandlers = getCommandHandlers(curCommandName, session);
// fetch the command handlers registered to the command
if (commandHandlers == null) {
// end the session
SMTPResponse resp = new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Local configuration error: unable to find a command handler.");
resp.setEndSession(true);
- session.writeSMTPResponse(resp);
+ session.writeResponse(resp);
} else {
int count = commandHandlers.size();
for (int i = 0; i < count; i++) {
- SMTPResponse response = commandHandlers.get(i).onCommand(session, new SMTPRequest(curCommandName, curCommandArgument));
+ Response response = commandHandlers.get(i).onCommand(session, new SMTPRequest(curCommandName, curCommandArgument));
- session.writeSMTPResponse(response);
+ session.writeResponse(response);
// if the response is received, stop processing of command
// handlers
@@ -134,7 +135,7 @@
/**
* @see org.apache.james.api.protocol.AbstractCommandDispatcher#getUnknownCommandHandler()
*/
- protected CommandHandler getUnknownCommandHandler() {
+ protected CommandHandler<SMTPSession> getUnknownCommandHandler() {
return unknownHandler;
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/UnknownCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/UnknownCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/UnknownCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/UnknownCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,9 +24,10 @@
import java.util.ArrayList;
import java.util.Collection;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -34,7 +35,7 @@
/**
* Default command handler for handling unknown commands
*/
-public class UnknownCmdHandler implements CommandHandler {
+public class UnknownCmdHandler implements CommandHandler<SMTPSession>{
/**
* The name of the command handled by the command handler
@@ -46,7 +47,7 @@
* Returns an error response and logs the command.
*
**/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
StringBuilder result = new StringBuilder();
result.append(DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_CMD))
.append(" Command ")
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/VrfyCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/VrfyCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/VrfyCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/VrfyCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,9 +24,10 @@
import java.util.ArrayList;
import java.util.Collection;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -34,7 +35,7 @@
/**
* Command handler for handling VRFY command
*/
-public class VrfyCmdHandler implements CommandHandler {
+public class VrfyCmdHandler implements CommandHandler<SMTPSession> {
private final String COMMAND_NAME = "VRFY";
@@ -43,9 +44,8 @@
* This method informs the client that the command is
* not implemented.
*
- * @see org.apache.james.smtpserver.protocol.CommandHandler#onCommand(org.apache.james.smtpserver.protocol.SMTPSession, java.lang.String, java.lang.String)
- **/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ */
+ public Response onCommand(SMTPSession session, Request request) {
return new SMTPResponse(SMTPRetCode.UNIMPLEMENTED_COMMAND,
DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.SYSTEM_NOT_CAPABLE)+" VRFY is not supported");
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/WelcomeMessageHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/WelcomeMessageHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/WelcomeMessageHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/WelcomeMessageHandler.java Tue Jan 19 11:34:58 2010
@@ -22,7 +22,7 @@
import java.util.Date;
-import org.apache.james.smtpserver.protocol.ConnectHandler;
+import org.apache.james.api.protocol.ConnectHandler;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -31,7 +31,7 @@
/**
* This ConnectHandler print the greeting on connecting
*/
-public class WelcomeMessageHandler implements ConnectHandler {
+public class WelcomeMessageHandler implements ConnectHandler<SMTPSession> {
/**
* Static RFC822DateFormat used to generate date headers
@@ -59,7 +59,7 @@
} else {
welcomeResponse = new SMTPResponse(SMTPRetCode.SERVICE_READY,smtpGreeting);
}
- session.writeSMTPResponse(welcomeResponse);
+ session.writeResponse(welcomeResponse);
}
protected String getProductName() {
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/AuthCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/AuthCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/AuthCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/AuthCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -29,12 +29,13 @@
import java.util.StringTokenizer;
import org.apache.commons.codec.binary.Base64;
+import org.apache.james.api.protocol.CommandHandler;
import org.apache.james.api.protocol.ExtensibleHandler;
+import org.apache.james.api.protocol.LineHandler;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.LineHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -54,14 +55,14 @@
* system (simple pluggabilty against external authentication services).
*/
public class AuthCmdHandler
- implements CommandHandler, EhloExtension, ExtensibleHandler, MailParametersHook {
+ implements CommandHandler<SMTPSession>, EhloExtension, ExtensibleHandler, MailParametersHook {
- private abstract class AbstractSMTPLineHandler implements LineHandler {
+ private abstract class AbstractSMTPLineHandler implements LineHandler<SMTPSession> {
public void onLine(SMTPSession session, String l) {
SMTPResponse res = handleCommand(session, l);
session.popLineHandler();
- session.writeSMTPResponse(res);
+ session.writeResponse(res);
}
@@ -104,7 +105,7 @@
* handles AUTH command
*
*/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
return doAUTH(session, request.getArgument());
}
@@ -254,7 +255,7 @@
private String user;
- public LineHandler setUser(String user) {
+ public LineHandler<SMTPSession> setUser(String user) {
this.user = user;
return this;
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/EhloCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/EhloCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/EhloCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/EhloCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,7 +24,6 @@
import java.util.List;
import org.apache.james.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -35,8 +34,7 @@
/**
* Handles EHLO command
*/
-public class EhloCmdHandler extends AbstractHookableCmdHandler<HeloHook> implements
- CommandHandler {
+public class EhloCmdHandler extends AbstractHookableCmdHandler<HeloHook> {
/**
* The name of the command handled by the command handler
@@ -56,15 +54,12 @@
* the argument passed in with the command by the SMTP client
*/
private SMTPResponse doEHLO(SMTPSession session, String argument) {
- SMTPResponse resp = new SMTPResponse();
- resp.setRetCode(SMTPRetCode.MAIL_OK);
-
- session.getConnectionState().put(SMTPSession.CURRENT_HELO_MODE,
- COMMAND_NAME);
-
- resp.appendLine(new StringBuilder(session.getHelloName()).append(" Hello ").append(argument)
+ SMTPResponse resp = new SMTPResponse(SMTPRetCode.MAIL_OK, new StringBuilder(session.getHelloName()).append(" Hello ").append(argument)
.append(" (").append(session.getRemoteHost()).append(" [")
.append(session.getRemoteIPAddress()).append("])"));
+
+ session.getConnectionState().put(SMTPSession.CURRENT_HELO_MODE,
+ COMMAND_NAME);
processExtensions(session, resp);
@@ -72,6 +67,7 @@
resp.appendLine("ENHANCEDSTATUSCODES");
// see http://issues.apache.org/jira/browse/JAMES-419
resp.appendLine("8BITMIME");
+
return resp;
}
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/MailSizeEsmtpExtension.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/MailSizeEsmtpExtension.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/MailSizeEsmtpExtension.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/MailSizeEsmtpExtension.java Tue Jan 19 11:34:58 2010
@@ -6,8 +6,8 @@
import java.util.LinkedList;
import java.util.List;
+import org.apache.james.api.protocol.LineHandler;
import org.apache.james.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.MailEnvelope;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -20,7 +20,7 @@
/**
* Handle the ESMTP SIZE extension.
*/
-public class MailSizeEsmtpExtension implements MailParametersHook, EhloExtension, DataLineFilter, MessageHook {
+public class MailSizeEsmtpExtension implements MailParametersHook, EhloExtension, DataLineFilter<SMTPSession>, MessageHook {
private final static String MESG_SIZE = "MESG_SIZE"; // The size of the
private final static String MESG_FAILED = "MESG_FAILED"; // Message failed flag
@@ -115,11 +115,12 @@
return null;
}
+
/*
* (non-Javadoc)
- * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession, java.lang.String, org.apache.james.smtpserver.protocol.LineHandler)
+ * @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.api.protocol.LogEnabledSession, java.lang.String, org.apache.james.api.protocol.LineHandler)
*/
- public void onLine(SMTPSession session, String rawline, LineHandler next) {
+ public void onLine(SMTPSession session, String rawline, LineHandler<SMTPSession> next) {
Boolean failed = (Boolean) session.getState().get(MESG_FAILED);
// If we already defined we failed and sent a reply we should simply
// wait for a CRLF.CRLF to be sent by the client.
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/StartTlsCmdHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/StartTlsCmdHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/StartTlsCmdHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/esmtp/StartTlsCmdHandler.java Tue Jan 19 11:34:58 2010
@@ -24,9 +24,10 @@
import java.util.Collection;
import java.util.List;
+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.dsn.DSNStatus;
-import org.apache.james.smtpserver.protocol.CommandHandler;
-import org.apache.james.smtpserver.protocol.SMTPRequest;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
@@ -34,7 +35,7 @@
/**
* Handles STARTTLS command
*/
-public class StartTlsCmdHandler implements CommandHandler, EhloExtension {
+public class StartTlsCmdHandler implements CommandHandler<SMTPSession>, EhloExtension {
/**
* The name of the command handled by the command handler
*/
@@ -53,10 +54,8 @@
* Handler method called upon receipt of a STARTTLS command. Resets
* message-specific, but not authenticated user, state.
*
- * @see org.apache.james.smtpserver.protocol.CommandHandler#onCommand(org.apache.james.smtpserver.protocol.SMTPSession,
- * java.lang.String, java.lang.String)
*/
- public SMTPResponse onCommand(SMTPSession session, SMTPRequest request) {
+ public Response onCommand(SMTPSession session, Request request) {
SMTPResponse response = null;
String command = request.getCommand();
String parameters = request.getArgument();
@@ -69,7 +68,7 @@
} else {
response = new SMTPResponse("501 "+ DSNStatus.getStatus(DSNStatus.PERMANENT, DSNStatus.DELIVERY_INVALID_ARG) + " Syntax error (no parameters allowed) with STARTTLS command");
}
- session.writeSMTPResponse(response);
+ session.writeResponse(response);
try {
if (!session.isTLSStarted()) {
session.startTLS();
Modified: james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/fastfail/DNSRBLHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/fastfail/DNSRBLHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/fastfail/DNSRBLHandler.java (original)
+++ james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/fastfail/DNSRBLHandler.java Tue Jan 19 11:34:58 2010
@@ -32,9 +32,9 @@
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.james.api.protocol.ConnectHandler;
import org.apache.james.dsn.DSNStatus;
import org.apache.james.lifecycle.Configurable;
-import org.apache.james.smtpserver.protocol.ConnectHandler;
import org.apache.james.smtpserver.protocol.DNSService;
import org.apache.james.smtpserver.protocol.SMTPSession;
import org.apache.james.smtpserver.protocol.hook.HookResult;
@@ -45,7 +45,7 @@
/**
* Connect handler for DNSRBL processing
*/
-public class DNSRBLHandler implements ConnectHandler, RcptHook, Configurable{
+public class DNSRBLHandler implements ConnectHandler<SMTPSession>, RcptHook, Configurable{
/** This log is the fall back shared by all instances */
private static final Log FALLBACK_LOG = LogFactory.getLog(DNSRBLHandler.class);
@@ -140,7 +140,6 @@
/**
* check if the remote Ip address is block listed
*
- * @see org.apache.james.smtpserver.protocol.ConnectHandler#onConnect(SMTPSession)
**/
public void onConnect(SMTPSession session) {
checkDNSRBL(session, session.getRemoteIPAddress());
Modified: james/server/trunk/smtp-protocol-library/src/test/java/org/apache/james/smtpserver/protocol/BaseFakeSMTPSession.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtp-protocol-library/src/test/java/org/apache/james/smtpserver/protocol/BaseFakeSMTPSession.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtp-protocol-library/src/test/java/org/apache/james/smtpserver/protocol/BaseFakeSMTPSession.java (original)
+++ james/server/trunk/smtp-protocol-library/src/test/java/org/apache/james/smtpserver/protocol/BaseFakeSMTPSession.java Tue Jan 19 11:34:58 2010
@@ -25,9 +25,9 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.james.smtpserver.protocol.LineHandler;
+import org.apache.james.api.protocol.LineHandler;
+import org.apache.james.api.protocol.Response;
import org.apache.james.smtpserver.protocol.SMTPConfiguration;
-import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPSession;
/**
@@ -136,17 +136,19 @@
throw new UnsupportedOperationException("Unimplemented Stub Method");
}
- /**
- * @see org.apache.james.smtpserver.protocol.SMTPSession#pushLineHandler(org.apache.james.smtpserver.protocol.LineHandler)
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.smtpserver.protocol.SMTPSession#pushLineHandler(org.apache.james.api.protocol.LineHandler)
*/
- public void pushLineHandler(LineHandler overrideCommandHandler) {
+ public void pushLineHandler(LineHandler<SMTPSession> overrideCommandHandler) {
throw new UnsupportedOperationException("Unimplemented Stub Method");
}
- /**
- * @see org.apache.james.smtpserver.protocol.SMTPSession#writeSMTPResponse(org.apache.james.smtpserver.protocol.SMTPResponse)
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.api.protocol.LogEnabledSession#writeResponse(org.apache.james.api.protocol.Response)
*/
- public void writeSMTPResponse(SMTPResponse response) {
+ public void writeResponse(Response response) {
throw new UnsupportedOperationException("Unimplemented Stub Method");
}
Modified: james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandler.java (original)
+++ james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/SMTPHandler.java Tue Jan 19 11:34:58 2010
@@ -28,9 +28,11 @@
import java.util.Map;
import java.util.Random;
+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.smtpserver.protocol.ConnectHandler;
-import org.apache.james.smtpserver.protocol.LineHandler;
+import org.apache.james.api.protocol.Response;
+import org.apache.james.api.protocol.RetCodeResponse;
import org.apache.james.smtpserver.protocol.SMTPConfiguration;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
@@ -73,11 +75,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 final SMTPConfiguration theConfigData;
@@ -100,6 +104,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;
smtpID = Integer.toString(random.nextInt(1024));
@@ -155,9 +160,9 @@
try {
line = bytebufferHandler.read();
} catch (CRLFDelimitedByteBuffer.TerminationException e) {
- writeSMTPResponse(new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, "Syntax error at character position " + e.position() + ". CR and LF must be CRLF paired. See RFC 2821 #2.7.1."));
+ writeResponse(new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_ARGUMENTS, "Syntax error at character position " + e.position() + ". CR and LF must be CRLF paired. See RFC 2821 #2.7.1."));
} catch (CRLFDelimitedByteBuffer.LineLengthExceededException e) {
- writeSMTPResponse(new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, "Line length exceeded. See RFC 2821 #4.5.3.1."));
+ writeResponse(new SMTPResponse(SMTPRetCode.SYNTAX_ERROR_COMMAND_UNRECOGNIZED, "Line length exceeded. See RFC 2821 #4.5.3.1."));
}
if (line == null) {
break;
@@ -175,32 +180,30 @@
context.getLogger().debug("Closing socket.");
}
- /**
- * @see org.apache.james.smtpserver.protocol.SMTPSession#writeSMTPResponse(org.apache.james.smtpserver.protocol.SMTPResponse)
+
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.api.protocol.LogEnabledSession#writeResponse(org.apache.james.api.protocol.Response)
*/
- public void writeSMTPResponse(SMTPResponse response) {
+ public void writeResponse(Response response) {
// Write a single-line or multiline response
if (response != null) {
- if (response.getRawLine() != null) {
- context.writeLoggedFlushedResponse(response.getRawLine());
- } else {
- // Iterator i = esmtpextensions.iterator();
- for (int k = 0; k < response.getLines().size(); k++) {
- StringBuilder respBuff = new StringBuilder(256);
- respBuff.append(response.getRetCode());
- final CharSequence line = response.getLines().get(k);
- if (k == response.getLines().size() - 1) {
- respBuff.append(" ");
- respBuff.append(line);
- context.writeLoggedFlushedResponse(respBuff.toString());
- } else {
- respBuff.append("-");
- respBuff.append(line);
- context.writeLoggedResponse(respBuff.toString());
- }
+ // Iterator i = esmtpextensions.iterator();
+ for (int k = 0; k < response.getLines().size(); k++) {
+ StringBuilder respBuff = new StringBuilder(256);
+ respBuff.append(((RetCodeResponse)response).getRetCode());
+ final CharSequence line = response.getLines().get(k);
+ if (k == response.getLines().size() - 1) {
+ respBuff.append(" ");
+ respBuff.append(line);
+ context.writeLoggedFlushedResponse(respBuff.toString());
+ } else {
+ respBuff.append("-");
+ respBuff.append(line);
+ context.writeLoggedResponse(respBuff.toString());
}
}
-
+
if (response.isEndSession()) {
sessionEnded = true;
}
@@ -306,7 +309,7 @@
return count;
}
- public void resetConnectionState() {
+ private void resetConnectionState() {
connectionState.clear();
}
@@ -329,6 +332,7 @@
/**
* @see org.apache.james.smtpserver.protocol.SMTPSession#pushLineHandler(org.apache.james.smtpserver.protocol.LineHandler)
*/
+ @SuppressWarnings("unchecked")
public void pushLineHandler(LineHandler lineHandler) {
if (lineHandlers == null) {
lineHandlers = new LinkedList<LineHandler>();
Modified: james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/DataLineJamesMessageHookHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/DataLineJamesMessageHookHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/DataLineJamesMessageHookHandler.java (original)
+++ james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/DataLineJamesMessageHookHandler.java Tue Jan 19 11:34:58 2010
@@ -35,6 +35,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.james.api.protocol.ExtensibleHandler;
+import org.apache.james.api.protocol.LineHandler;
import org.apache.james.api.protocol.WiringException;
import org.apache.james.core.MailImpl;
import org.apache.james.core.MimeMessageCopyOnWriteProxy;
@@ -42,7 +43,6 @@
import org.apache.james.dsn.DSNStatus;
import org.apache.james.lifecycle.LogEnabled;
import org.apache.james.services.MailServer;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.MailEnvelope;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
@@ -60,7 +60,7 @@
* Handles the calling of JamesMessageHooks
*
*/
-public final class DataLineJamesMessageHookHandler implements DataLineFilter, ExtensibleHandler, LogEnabled {
+public final class DataLineJamesMessageHookHandler implements DataLineFilter<SMTPSession>, ExtensibleHandler, LogEnabled {
/** This log is the fall back shared by all instances */
private static final Log FALLBACK_LOG = LogFactory.getLog(DataLineJamesMessageHookHandler.class);
@@ -96,7 +96,7 @@
/**
* @see org.apache.james.smtpserver.protocol.core.DataLineFilter#onLine(org.apache.james.smtpserver.protocol.SMTPSession, byte[], org.apache.james.smtpserver.protocol.LineHandler)
*/
- public void onLine(SMTPSession session, String rawline, LineHandler next) {
+ public void onLine(SMTPSession session, String rawline, LineHandler<SMTPSession> next) {
MimeMessageInputStreamSource mmiss = (MimeMessageInputStreamSource) session.getState().get(JamesDataCmdHandler.DATA_MIMEMESSAGE_STREAMSOURCE);
OutputStream out = (OutputStream) session.getState().get(JamesDataCmdHandler.DATA_MIMEMESSAGE_OUTPUTSTREAM);
try {
@@ -125,7 +125,7 @@
} catch (MessagingException e) {
// TODO probably return a temporary problem
session.getLogger().info("Unexpected error handling DATA stream",e);
- session.writeSMTPResponse(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unexpected error handling DATA stream."));
+ session.writeResponse(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unexpected error handling DATA stream."));
} finally {
ContainerUtil.dispose(mimeMessageCopyOnWriteProxy);
ContainerUtil.dispose(mmiss);
@@ -151,7 +151,7 @@
session.getLogger().error(
"Unknown error occurred while processing DATA.", e);
- session.writeSMTPResponse(response);
+ session.writeResponse(response);
return;
}
}
@@ -185,7 +185,7 @@
// if the response is received, stop processing of command
// handlers
if (response != null) {
- session.writeSMTPResponse(response);
+ session.writeResponse(response);
return;
}
}
@@ -214,7 +214,7 @@
// if the response is received, stop processing of command
// handlers
if (response != null) {
- session.writeSMTPResponse(response);
+ session.writeResponse(response);
break;
}
}
Modified: james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/POP3BeforeSMTPHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/POP3BeforeSMTPHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/POP3BeforeSMTPHandler.java (original)
+++ james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/integration/POP3BeforeSMTPHandler.java Tue Jan 19 11:34:58 2010
@@ -20,9 +20,10 @@
package org.apache.james.smtpserver.integration;
-import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
-import org.apache.james.smtpserver.protocol.ConnectHandler;
+import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.james.api.protocol.ConnectHandler;
+import org.apache.james.lifecycle.Configurable;
import org.apache.james.smtpserver.protocol.SMTPSession;
import org.apache.james.util.POP3BeforeSMTPHelper;
import org.apache.james.util.TimeConverter;
@@ -30,7 +31,7 @@
/**
* This ConnectHandler can be used to activate pop-before-smtp
*/
-public class POP3BeforeSMTPHandler implements ConnectHandler {
+public class POP3BeforeSMTPHandler implements ConnectHandler<SMTPSession>,Configurable{
/**
* The time after which ipAddresses should be handled as expired
@@ -38,10 +39,10 @@
private long expireTime = POP3BeforeSMTPHelper.EXPIRE_TIME;
- /**
- * @see org.apache.james.lifecycle.Configurable#configure(org.apache.commons.configuration.Configuration)
+ /*
+ *
*/
- public void configure(Configuration config) throws ConfigurationException {
+ public void configure(HierarchicalConfiguration config) throws ConfigurationException {
try {
setExpireTime(config.getString("expireTime",null));
} catch (NumberFormatException e) {
Modified: james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/AsyncSMTPServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/AsyncSMTPServer.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/AsyncSMTPServer.java (original)
+++ james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/AsyncSMTPServer.java Tue Jan 19 11:34:58 2010
@@ -29,10 +29,11 @@
import org.apache.james.api.dnsservice.util.NetMatcher;
import org.apache.james.smtpserver.integration.CoreCmdHandlerLoader;
import org.apache.james.smtpserver.mina.filter.SMTPResponseFilter;
-import org.apache.james.smtpserver.mina.filter.SMTPValidationFilter;
import org.apache.james.smtpserver.protocol.SMTPConfiguration;
+import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPServerMBean;
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;
@@ -329,7 +330,7 @@
// response and validation filter to the chain
builder.addLast(SMTPResponseFilter.NAME, new SMTPResponseFilter());
- builder.addLast("requestValidationFilter", new SMTPValidationFilter(getLogger()));
+ builder.addLast("responseValidationFilter", new ResponseValidationFilter<SMTPResponse>(getLogger(),SMTPResponse.class));
return builder;
}
Modified: james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPIoHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPIoHandler.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPIoHandler.java (original)
+++ james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPIoHandler.java Tue Jan 19 11:34:58 2010
@@ -19,19 +19,14 @@
package org.apache.james.smtpserver.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.smtpserver.protocol.ConnectHandler;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.SMTPConfiguration;
import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPRetCode;
import org.apache.james.smtpserver.protocol.SMTPSession;
-import org.apache.mina.core.service.IoHandlerAdapter;
-import org.apache.mina.core.session.IdleStatus;
+import org.apache.james.socket.mina.AbstractIoHandler;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.ssl.SslContextFactory;
@@ -40,9 +35,8 @@
*
*
*/
-public class SMTPIoHandler extends IoHandlerAdapter{
+public class SMTPIoHandler extends AbstractIoHandler{
private Log logger;
- private ProtocolHandlerChain chain;
private SMTPConfiguration conf;
private SslContextFactory contextFactory;
@@ -53,25 +47,13 @@
public SMTPIoHandler(ProtocolHandlerChain chain,
SMTPConfiguration 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 {
- SMTPSession smtpSession = (SMTPSession) session.getAttribute(SMTPSessionImpl.SMTP_SESSION);
- LinkedList<LineHandler> lineHandlers = chain.getHandlers(LineHandler.class);
- if (lineHandlers.size() > 0) {
- ((LineHandler) lineHandlers.getLast()).onLine(smtpSession, (String) message);
- }
- }
-
- /**
* @see org.apache.mina.core.service.IoHandler#exceptionCaught(org.apache.mina.core.session.IoSession,
* java.lang.Throwable)
*/
@@ -80,47 +62,22 @@
logger.error("Caught exception: " + session.getCurrentWriteMessage(),
exception);
- // write an error to the client if the session is stil connected
- if (session.isConnected()) session.write(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unable to process smtp request"));
+ session.write(new SMTPResponse(SMTPRetCode.LOCAL_ERROR, "Unable to process smtp request"));
}
- /**
- * @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{
SMTPSession smtpSession;
if (contextFactory == null) {
smtpSession= new SMTPSessionImpl(conf, logger, session);
} else {
smtpSession= new SMTPSessionImpl(conf, logger, session, contextFactory.newInstance());
- }
-
- // Add attribute
- session.setAttribute(SMTPSessionImpl.SMTP_SESSION,smtpSession);
- }
-
- /**
- * @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");
+ }
+ return smtpSession;
}
- /**
- * @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(
- (SMTPSession) session.getAttribute(SMTPSessionImpl.SMTP_SESSION));
- }
- }
+ @Override
+ protected String getSessionKey() {
+ return SMTPSessionImpl.SMTP_SESSION;
}
}
Modified: james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java (original)
+++ james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/SMTPSessionImpl.java Tue Jan 19 11:34:58 2010
@@ -27,12 +27,12 @@
import javax.net.ssl.SSLContext;
import org.apache.commons.logging.Log;
+import org.apache.james.api.protocol.LineHandler;
+import org.apache.james.api.protocol.Response;
import org.apache.james.smtpserver.mina.filter.FilterLineHandlerAdapter;
import org.apache.james.smtpserver.mina.filter.SMTPResponseFilter;
import org.apache.james.smtpserver.mina.filter.TarpitFilter;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.SMTPConfiguration;
-import org.apache.james.smtpserver.protocol.SMTPResponse;
import org.apache.james.smtpserver.protocol.SMTPSession;
import org.apache.james.socket.mina.AbstractMINASession;
import org.apache.mina.core.session.IoSession;
@@ -128,17 +128,18 @@
/**
* @see org.apache.james.smtpserver.protocol.SMTPSession#pushLineHandler(org.apache.james.smtpserver.protocol.LineHandler)
*/
- public void pushLineHandler(LineHandler overrideCommandHandler) {
+ public void pushLineHandler(LineHandler<SMTPSession> overrideCommandHandler) {
lineHandlerCount++;
getIoSession().getFilterChain().addAfter(SMTPResponseFilter.NAME,
"lineHandler" + lineHandlerCount,
new FilterLineHandlerAdapter(overrideCommandHandler));
}
- /**
- * @see org.apache.james.smtpserver.protocol.SMTPSession#writeSMTPResponse(org.apache.james.smtpserver.protocol.SMTPResponse)
+ /*
+ * (non-Javadoc)
+ * @see org.apache.james.api.protocol.LogEnabledSession#writeResponse(org.apache.james.api.protocol.Response)
*/
- public void writeSMTPResponse(SMTPResponse response) {
+ public void writeResponse(Response response) {
getIoSession().write(response);
}
Modified: james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/filter/FilterLineHandlerAdapter.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/filter/FilterLineHandlerAdapter.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/filter/FilterLineHandlerAdapter.java (original)
+++ james/server/trunk/smtpserver-function/src/main/java/org/apache/james/smtpserver/mina/filter/FilterLineHandlerAdapter.java Tue Jan 19 11:34:58 2010
@@ -18,8 +18,8 @@
****************************************************************/
package org.apache.james.smtpserver.mina.filter;
+import org.apache.james.api.protocol.LineHandler;
import org.apache.james.smtpserver.mina.SMTPSessionImpl;
-import org.apache.james.smtpserver.protocol.LineHandler;
import org.apache.james.smtpserver.protocol.SMTPSession;
import org.apache.mina.core.filterchain.IoFilterAdapter;
import org.apache.mina.core.session.IoSession;
@@ -31,9 +31,9 @@
*/
public final class FilterLineHandlerAdapter extends IoFilterAdapter {
- private LineHandler lineHandler;
+ private LineHandler<SMTPSession> lineHandler;
- public FilterLineHandlerAdapter(LineHandler lineHandler) {
+ public FilterLineHandlerAdapter(LineHandler<SMTPSession> lineHandler) {
this.lineHandler = lineHandler;
}
Modified: james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java
URL: http://svn.apache.org/viewvc/james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java (original)
+++ james/server/trunk/smtpserver-function/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java Tue Jan 19 11:34:58 2010
@@ -204,7 +204,7 @@
protoServer = new AvalonProtocolServer();
- protoServer.setLog(new SimpleLog("MockLog"));
+ protoServer.setLog(smtpLog);
protoServer.setProtocolHandlerFactory(m_smtpServer);
protoServer.setSocketManager(socketManager);
protoServer.setThreadManager(threadManager);
Modified: james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/AbstractCommandDispatcher.java
URL: http://svn.apache.org/viewvc/james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/AbstractCommandDispatcher.java?rev=900731&r1=900730&r2=900731&view=diff
==============================================================================
--- james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/AbstractCommandDispatcher.java (original)
+++ james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/AbstractCommandDispatcher.java Tue Jan 19 11:34:58 2010
@@ -31,13 +31,12 @@
/**
* Abstract base class which CommandDispatcher implementations should extend
*
- * @param <CommandHandler>
*/
-public abstract class AbstractCommandDispatcher<CommandHandler extends CommonCommandHandler> implements ExtensibleHandler {
+public abstract class AbstractCommandDispatcher<Session extends ProtocolSession> implements ExtensibleHandler {
/**
* The list of available command handlers
*/
- private HashMap<String, List<CommandHandler>> commandHandlerMap = new HashMap<String, List<CommandHandler>>();
+ private HashMap<String, List<CommandHandler<Session>>> commandHandlerMap = new HashMap<String, List<CommandHandler<Session>>>();
/**
* Add it to map (key as command name, value is an array list of CommandHandlers)
@@ -45,10 +44,10 @@
* @param commandName the command name which will be key
* @param cmdHandler The CommandHandler object
*/
- protected void addToMap(String commandName, CommandHandler cmdHandler) {
- List<CommandHandler> handlers = commandHandlerMap.get(commandName);
+ protected void addToMap(String commandName, CommandHandler<Session> cmdHandler) {
+ List<CommandHandler<Session>> handlers = commandHandlerMap.get(commandName);
if(handlers == null) {
- handlers = new ArrayList<CommandHandler>();
+ handlers = new ArrayList<CommandHandler<Session>>();
commandHandlerMap.put(commandName, handlers);
}
handlers.add(cmdHandler);
@@ -62,14 +61,14 @@
* @param session not null
* @return List of CommandHandlers
*/
- protected List<CommandHandler> getCommandHandlers(String command, LogEnabledSession session) {
+ protected List<CommandHandler<Session>> getCommandHandlers(String command, ProtocolSession session) {
if (command == null) {
return null;
}
if (session.getLogger().isDebugEnabled()) {
session.getLogger().debug("Lookup command handler for command: " + command);
}
- List<CommandHandler> handlers = commandHandlerMap.get(command);
+ List<CommandHandler<Session>> handlers = commandHandlerMap.get(command);
if(handlers == null) {
handlers = commandHandlerMap.get(getUnknownCommandHandlerIdentifier());
}
@@ -83,7 +82,7 @@
*/
@SuppressWarnings("unchecked")
public void wireExtensions(Class interfaceName, List extension) throws WiringException {
- this.commandHandlerMap = new HashMap<String, List<CommandHandler>>();
+ this.commandHandlerMap = new HashMap<String, List<CommandHandler<Session>>>();
for (Iterator it = extension.iterator(); it.hasNext(); ) {
CommandHandler handler = (CommandHandler) it.next();
@@ -159,5 +158,5 @@
*
* @return unknownCmdHandler
*/
- protected abstract CommandHandler getUnknownCommandHandler();
+ protected abstract CommandHandler<Session> getUnknownCommandHandler();
}
Added: james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/CommandHandler.java
URL: http://svn.apache.org/viewvc/james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/CommandHandler.java?rev=900731&view=auto
==============================================================================
--- james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/CommandHandler.java (added)
+++ james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/CommandHandler.java Tue Jan 19 11:34:58 2010
@@ -0,0 +1,47 @@
+/****************************************************************
+ * 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.api.protocol;
+
+
+import java.util.Collection;
+
+
+/**
+ * Custom command handlers must implement this interface
+ * The command handlers will be Server wide common to all the handlers,
+ * therefore the command handlers must store all the state information
+ * in the Session object
+ */
+ public interface CommandHandler<Session extends ProtocolSession> {
+ /**
+ * Handle the command
+ **/
+ Response onCommand(Session session, Request request);
+
+ /**
+ * Return a Collection of implemented commands
+ *
+ * @return Collection which contains implemented commands
+ */
+ Collection<String> getImplCommands();
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org