Author: norman
Date: Thu Jan 28 14:44:22 2010
New Revision: 904104
URL: http://svn.apache.org/viewvc?rev=904104&view=rev
Log:
Share some more code
Removed:
james/server/trunk/socket-api/src/main/java/org/apache/james/socket/
Modified:
james/server/trunk/pop3server-function/src/main/java/org/apache/james/pop3server/core/POP3CommandDispatcherLineHandler.java
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoteManagerCommandDispatcherLineHandler.java
james/server/trunk/smtp-protocol-library/src/main/java/org/apache/james/smtpserver/protocol/core/SMTPCommandDispatcherLineHandler.java
james/server/trunk/socket-api/src/main/java/org/apache/james/api/protocol/AbstractCommandDispatcher.java
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=904104&r1=904103&r2=904104&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
Thu Jan 28 14:44:22 2010
@@ -19,45 +19,27 @@
package org.apache.james.pop3server.core;
-import java.nio.charset.Charset;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Locale;
-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.POP3Request;
import org.apache.james.pop3server.POP3Response;
import org.apache.james.pop3server.POP3Session;
+/**
+ * Dispatch
+ * @author norman
+ *
+ */
public class POP3CommandDispatcherLineHandler extends
- AbstractCommandDispatcher<POP3Session> implements
LineHandler<POP3Session>, LogEnabled {
+ AbstractCommandDispatcher<POP3Session> {
private final static String[] mandatoryCommands = { "USER", "PASS", "LIST"
};
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);
+
- private final Charset charSet = Charset.forName("US-ASCII");
-
- /**
- * Non context specific log should only be used when no context specific
log
- * is available
- */
- private Log serviceLog = FALLBACK_LOG;
-
- /**
- * @see org.apache.james.api.protocol.AbstractCommandDispatcher#getLog()
- */
- protected Log getLog() {
- return serviceLog;
- }
/**
* @see
org.apache.james.api.protocol.AbstractCommandDispatcher#getMandatoryCommands()
@@ -80,49 +62,10 @@
return UnknownCmdHandler.COMMAND_NAME;
}
- /*
- * (non-Javadoc)
- *
- * @see org.apache.james.socket.ExtensibleHandler#getMarkerInterfaces()
- */
- @SuppressWarnings("unchecked")
- public List<Class<?>> getMarkerInterfaces() {
- List list = new ArrayList();
- list.add(CommandHandler.class);
- return list;
- }
-
- /*
- * (non-Javadoc)
- * @see
org.apache.james.api.protocol.LineHandler#onLine(org.apache.james.api.protocol.ProtocolSession,
byte[])
- */
- public void onLine(POP3Session session, byte[] line) {
- String curCommandName = null;
- String curCommandArgument = null;
- String cmdString;
-
- cmdString = new String(line, charSet).trim();
-
- 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);
-
- if (session.getLogger().isDebugEnabled()) {
- // Don't display password in logger
- if (!curCommandName.equals("PASS")) {
- session.getLogger().debug("Command received: " + cmdString);
- } else {
- session.getLogger().debug("Command received: PASS <password
omitted>");
- }
- }
-
+ @Override
+ protected void dispatchCommand(POP3Session session, String command, String
argument) {
// fetch the command handlers registered to the command
- List<CommandHandler<POP3Session>> commandHandlers =
getCommandHandlers(curCommandName, session);
+ List<CommandHandler<POP3Session>> commandHandlers =
getCommandHandlers(command, session);
if (commandHandlers == null) {
// end the session
POP3Response resp = new POP3Response(POP3Response.ERR_RESPONSE,
"Local configuration error: unable to find a command handler.");
@@ -131,7 +74,7 @@
} else {
int count = commandHandlers.size();
for (int i = 0; i < count; i++) {
- Response response = commandHandlers.get(i).onCommand(session,
new POP3Request(curCommandName, curCommandArgument));
+ Response response = commandHandlers.get(i).onCommand(session,
new POP3Request(command, argument));
if (response != null) {
session.writeResponse(response);
break;
@@ -142,11 +85,5 @@
}
- /**
- * @see
org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
- */
- public void setLog(Log log) {
- this.serviceLog = log;
- }
}
Modified:
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoteManagerCommandDispatcherLineHandler.java
URL:
http://svn.apache.org/viewvc/james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoteManagerCommandDispatcherLineHandler.java?rev=904104&r1=904103&r2=904104&view=diff
==============================================================================
---
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoteManagerCommandDispatcherLineHandler.java
(original)
+++
james/server/trunk/remotemanager-function/src/main/java/org/apache/james/remotemanager/core/RemoteManagerCommandDispatcherLineHandler.java
Thu Jan 28 14:44:22 2010
@@ -22,40 +22,25 @@
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
-import java.util.Locale;
-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.LineHandler;
import org.apache.james.api.protocol.Response;
-import org.apache.james.lifecycle.LogEnabled;
import org.apache.james.remotemanager.CommandHandler;
import org.apache.james.remotemanager.RemoteManagerRequest;
import org.apache.james.remotemanager.RemoteManagerResponse;
import org.apache.james.remotemanager.RemoteManagerSession;
-public class RemoteManagerCommandDispatcherLineHandler extends
AbstractCommandDispatcher<RemoteManagerSession> implements
LineHandler<RemoteManagerSession>, LogEnabled{
- /** This log is the fall back shared by all instances */
- private static final Log FALLBACK_LOG = LogFactory
- .getLog(RemoteManagerCommandDispatcherLineHandler.class);
- private UnknownCmdHandler unknownCmdHandler = new UnknownCmdHandler();
- /**
- * Non context specific log should only be used when no context specific
log
- * is available
- */
- private Log serviceLog = FALLBACK_LOG;
+/**
+ * Dispatch Commands for RemoteManager
+ *
+ *
+ */
+public class RemoteManagerCommandDispatcherLineHandler extends
AbstractCommandDispatcher<RemoteManagerSession> {
- private final Charset charSet = Charset.forName("ISO-8859-1");
-
- /**
- * @see org.apache.james.api.protocol.AbstractCommandDispatcher#getLog()
- */
- protected Log getLog() {
- return serviceLog;
- }
+ private UnknownCmdHandler unknownCmdHandler = new UnknownCmdHandler();
+
- /**
+ /*
* @see
org.apache.james.api.protocol.AbstractCommandDispatcher#getMandatoryCommands()
*/
protected List<String> getMandatoryCommands() {
@@ -78,46 +63,10 @@
return UnknownCmdHandler.COMMAND_NAME;
}
- /**
- * (non-Javadoc)
- * @see
org.apache.james.api.protocol.ExtensibleHandler#getMarkerInterfaces()
- */
- @SuppressWarnings("unchecked")
- public List<Class<?>> getMarkerInterfaces() {
- List mList = new ArrayList();
- mList.add(CommandHandler.class);
- return mList;
- }
- /**
- * @see
org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
- */
- public void setLog(Log log) {
- this.serviceLog = log;
- }
-
- /**
- * @see
org.apache.james.remotemanager.LineHandler#onLine(org.apache.james.remotemanager.RemoteManagerSession,
java.lang.String)
- */
- public void onLine(RemoteManagerSession session, byte[] line) {
- String curCommandName = null;
- String curCommandArgument = null;
- String cmdString = new String(line, charSet).trim();
-
- int spaceIndex = cmdString.indexOf(" ");
- if (spaceIndex > 0) {
- curCommandName = cmdString.substring(0, spaceIndex);
- curCommandArgument = cmdString.substring(spaceIndex + 1).trim();
- } else {
- curCommandName = cmdString;
- }
- curCommandName = curCommandName.toUpperCase(Locale.US);
-
- if (session.getLogger().isDebugEnabled()) {
- session.getLogger().debug("Command received: " + cmdString);
- }
-
+ @Override
+ protected void dispatchCommand(RemoteManagerSession session, String
command, String argument) {
// fetch the command handlers registered to the command
-
List<org.apache.james.api.protocol.CommandHandler<RemoteManagerSession>>
commandHandlers = getCommandHandlers(curCommandName, session);
+
List<org.apache.james.api.protocol.CommandHandler<RemoteManagerSession>>
commandHandlers = getCommandHandlers(command, session);
if (commandHandlers == null) {
// end the session
RemoteManagerResponse resp = new RemoteManagerResponse("Local
configuration error: unable to find a command handler.");
@@ -126,14 +75,18 @@
} else {
int count = commandHandlers.size();
for (int i = 0; i < count; i++) {
- Response response = commandHandlers.get(i).onCommand(session,
new RemoteManagerRequest(curCommandName, curCommandArgument));
+ Response response = commandHandlers.get(i).onCommand(session,
new RemoteManagerRequest(command, argument));
if (response != null) {
session.writeResponse(response);
break;
}
}
- }
+ }
}
+ @Override
+ protected Charset getLineDecodingCharset() {
+ return Charset.forName("ISO-8859-1");
+ }
}
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=904104&r1=904103&r2=904104&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
Thu Jan 28 14:44:22 2010
@@ -19,60 +19,38 @@
package org.apache.james.smtpserver.protocol.core;
-import java.nio.charset.Charset;
import java.util.Arrays;
-import java.util.LinkedList;
import java.util.List;
-import java.util.Locale;
-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.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<SMTPSession> implements LogEnabled,
LineHandler<SMTPSession> {
+/**
+ * Dispatch CommandHandler for SMTP Requests
+ *
+ *
+ */
+public class SMTPCommandDispatcherLineHandler extends
AbstractCommandDispatcher<SMTPSession> {
- /** This log is the fall back shared by all instances */
- private static final Log FALLBACK_LOG =
LogFactory.getLog(SMTPCommandDispatcherLineHandler.class);
-
- /** Non context specific log should only be used when no context specific
log is available */
- private Log serviceLog = FALLBACK_LOG;
-
private final CommandHandler<SMTPSession> unknownHandler = new
UnknownCmdHandler();
private final static String[] mandatoryCommands = { "MAIL" , "RCPT",
"DATA"};
- private final Charset charSet = Charset.forName("US-ASCII");
-
/*
* (non-Javadoc)
- * @see
org.apache.james.smtpserver.protocol.LineHandler#onLine(org.apache.james.smtpserver.protocol.SMTPSession,
java.lang.String)
+ * @see
org.apache.james.api.protocol.AbstractCommandDispatcher#dispatchCommand(org.apache.james.api.protocol.ProtocolSession,
java.lang.String, java.lang.String)
*/
- public void onLine(SMTPSession session, byte[] line) {
- String cmdString = new String(line, charSet).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);
-
- List<CommandHandler<SMTPSession>> commandHandlers =
getCommandHandlers(curCommandName, session);
+ protected void dispatchCommand(SMTPSession session, String command, String
argument) {
+
+ List<CommandHandler<SMTPSession>> commandHandlers =
getCommandHandlers(command, session);
// fetch the command handlers registered to the command
if (commandHandlers == null) {
// end the session
@@ -82,7 +60,7 @@
} else {
int count = commandHandlers.size();
for (int i = 0; i < count; i++) {
- Response response = commandHandlers.get(i).onCommand(session,
new SMTPRequest(curCommandName, curCommandArgument));
+ Response response = commandHandlers.get(i).onCommand(session,
new SMTPRequest(command, argument));
session.writeResponse(response);
@@ -102,23 +80,6 @@
}
- /**
- * @see
org.apache.james.api.protocol.ExtensibleHandler#getMarkerInterfaces()
- */
- @SuppressWarnings("unchecked")
- public List getMarkerInterfaces() {
- List res = new LinkedList();
- res.add(CommandHandler.class);
- return res;
- }
-
- /**
- * @see org.apache.james.api.protocol.AbstractCommandDispatcher#getLog()
- */
- protected Log getLog() {
- return serviceLog;
- }
-
/**
* @see
org.apache.james.api.protocol.AbstractCommandDispatcher#getUnknownCommandHandlerIdentifier()
@@ -141,10 +102,4 @@
return unknownHandler;
}
- /**
- * @see
org.apache.james.lifecycle.LogEnabled#setLog(org.apache.commons.logging.Log)
- */
- public void setLog(Log log) {
- this.serviceLog = log;
- }
}
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=904104&r1=904103&r2=904104&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
Thu Jan 28 14:44:22 2010
@@ -19,20 +19,21 @@
package org.apache.james.api.protocol;
+import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
-import org.apache.commons.logging.Log;
/**
* Abstract base class which CommandDispatcher implementations should extend
*
*/
-public abstract class AbstractCommandDispatcher<Session extends
ProtocolSession> implements ExtensibleHandler {
+public abstract class AbstractCommandDispatcher<Session extends
ProtocolSession> implements ExtensibleHandler, LineHandler<Session> {
/**
* The list of available command handlers
*/
@@ -90,12 +91,6 @@
for (Iterator i = implCmds.iterator(); i.hasNext(); ) {
String commandName = ((String)
i.next()).trim().toUpperCase(Locale.US);
- /*
- if (getLog().isInfoEnabled()) {
- getLog().info(
- "Added Commandhandler: " + handler.getClass() + "
for command "+commandName);
- }
- */
addToMap(commandName, (CommandHandler) handler);
}
}
@@ -103,42 +98,66 @@
addToMap(getUnknownCommandHandlerIdentifier(),
getUnknownCommandHandler());
if (commandHandlerMap.size() < 2) {
- if (getLog().isErrorEnabled()) {
- getLog().error("No commandhandlers configured");
- }
throw new WiringException("No commandhandlers configured");
} else {
- boolean found = true;
List<String> mandatoryCommands = getMandatoryCommands();
for (int i = 0; i < mandatoryCommands.size(); i++) {
if (!commandHandlerMap.containsKey(mandatoryCommands.get(i))) {
- if (getLog().isErrorEnabled()) {
- getLog().error(
- "No commandhandlers configured for the
command:"
- + mandatoryCommands.get(i));
- }
- found = false;
- break;
+ throw new WiringException(
+ "No commandhandlers configured for mandatory commands");
}
}
+ }
- if (!found) {
- throw new WiringException(
- "No commandhandlers configured for mandatory
commands");
- }
-
-
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see
org.apache.james.api.protocol.LineHandler#onLine(org.apache.james.api.protocol.ProtocolSession,
byte[])
+ */
+ public void onLine(Session session, byte[] line) {
+ String curCommandName = null;
+ String curCommandArgument = null;
+ String cmdString;
+
+ cmdString = new String(line, getLineDecodingCharset()).trim();
+
+ 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);
+ dispatchCommand(session, curCommandName, curCommandArgument);
+ }
+
+ protected Charset getLineDecodingCharset() {
+ return Charset.forName("US-ASCII");
}
/**
- * Return the Log object to use
+ * Dispatch the given command and its parameters
*
- * @return log
+ * @param session
+ * @param command
+ * @param argument
*/
- protected abstract Log getLog();
-
+ protected abstract void dispatchCommand(Session session, String command,
String argument);
+
+
+ /**
+ * @see
org.apache.james.api.protocol.ExtensibleHandler#getMarkerInterfaces()
+ */
+ @SuppressWarnings("unchecked")
+ public List<Class<?>> getMarkerInterfaces() {
+ List res = new LinkedList();
+ res.add(CommandHandler.class);
+ return res;
+ }
+
/**
* Return a List which holds all mandatory commands
*
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]