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]

Reply via email to