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 2011/12/23 19:30:25 UTC

svn commit: r1222780 - in /james/protocols/trunk: api/src/main/java/org/apache/james/protocols/api/handler/ lmtp/src/main/java/org/apache/james/protocols/lmtp/ pop3/bin/ pop3/src/main/java/org/apache/james/protocols/pop3/core/ smtp/src/main/java/org/ap...

Author: norman
Date: Fri Dec 23 18:30:24 2011
New Revision: 1222780

URL: http://svn.apache.org/viewvc?rev=1222780&view=rev
Log:
Rename AbstractCommandDispatcher and make it make it "non"- abstract. See PROTOCOLS-70

Added:
    james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java
      - copied, changed from r1222696, james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java
    james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java   (with props)
Removed:
    james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java
    james/protocols/trunk/pop3/bin/
Modified:
    james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPProtocolHandlerChain.java
    james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/POP3CommandDispatcherLineHandler.java
    james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/UnknownCmdHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/SMTPCommandDispatcherLineHandler.java
    james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java

Copied: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java (from r1222696, james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java)
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java?p2=james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java&p1=james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java&r1=1222696&r2=1222780&rev=1222780&view=diff
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/AbstractCommandDispatcher.java (original)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/CommandDispatcher.java Fri Dec 23 18:30:24 2011
@@ -37,18 +37,27 @@ import org.apache.james.protocols.api.Re
 
 
 /**
- * Abstract base class which CommandDispatcher implementations should extend. A CommandDispatcher is responsible
- * to call the right {@link CommandHandler} for a given Command
+ *  A CommandDispatcher is responsible to call the right {@link CommandHandler} for a given Command
  *
  */
-public abstract class AbstractCommandDispatcher<Session extends ProtocolSession> implements ExtensibleHandler, LineHandler<Session> {
+public class CommandDispatcher<Session extends ProtocolSession> implements ExtensibleHandler, LineHandler<Session> {
     /**
      * The list of available command handlers
      */
     private final HashMap<String, List<CommandHandler<Session>>> commandHandlerMap = new HashMap<String, List<CommandHandler<Session>>>();
 
     private final List<ProtocolHandlerResultHandler<Response, Session>> rHandlers = new ArrayList<ProtocolHandlerResultHandler<Response, Session>>();
-        
+
+    private final Collection<String> mandatoryCommands;
+    
+    public CommandDispatcher(Collection<String> mandatoryCommands) {
+        this.mandatoryCommands = mandatoryCommands;
+    }
+    
+    public CommandDispatcher() {
+        this(Collections.<String>emptyList());
+    }
+    
     /**
      * Add it to map (key as command name, value is an array list of CommandHandlers)
      *
@@ -106,16 +115,12 @@ public abstract class AbstractCommandDis
                     addToMap(commandName, (CommandHandler) handler);
                 }
             }
-
-            addToMap(getUnknownCommandHandlerIdentifier(), getUnknownCommandHandler());
-
+            
             if (commandHandlerMap.size() < 1) {
                 throw new WiringException("No commandhandlers configured");
             } else {
-                List<String> mandatoryCommands = getMandatoryCommands();
-                for (int i = 0; i < mandatoryCommands.size(); i++) {
-                    String cmd = mandatoryCommands.get(i);
-                    if (!commandHandlerMap.containsKey(mandatoryCommands.get(i))) {
+                for (String cmd: mandatoryCommands) {
+                    if (!commandHandlerMap.containsKey(cmd)) {
                         throw new WiringException("No commandhandlers configured for mandatory command " + cmd);
                     }
                 }
@@ -218,26 +223,11 @@ public abstract class AbstractCommandDis
     }
 
     /**
-     * Return a List which holds all mandatory commands
-     * 
-     * @return mCommands
-     */
-    @SuppressWarnings("unchecked")
-    protected List<String> getMandatoryCommands() {
-        return Collections.EMPTY_LIST;
-    }
-    
-    /**
      * Return the identifier to lookup the UnknownCmdHandler in the handler map
      * 
      * @return identifier
      */
-    protected abstract String getUnknownCommandHandlerIdentifier();
-    
-    /**
-     * Return the CommandHandler which should use to handle unknown commands
-     * 
-     * @return unknownCmdHandler
-     */
-    protected abstract CommandHandler<Session> getUnknownCommandHandler();
+    protected String getUnknownCommandHandlerIdentifier() {
+        return UnknownCommandHandler.COMMAND_IDENTIFIER;
+    }
 }

Added: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java?rev=1222780&view=auto
==============================================================================
--- james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java (added)
+++ james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java Fri Dec 23 18:30:24 2011
@@ -0,0 +1,45 @@
+/****************************************************************
+ * 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.protocols.api.handler;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+
+import org.apache.james.protocols.api.ProtocolSession;
+
+public abstract class UnknownCommandHandler<S extends ProtocolSession> implements CommandHandler<S>{
+
+    /**
+     * Identifier which is used in {@link #getImplCommands()} 
+     */
+    public final static String COMMAND_IDENTIFIER ="UNKNOWN_CMD";
+    
+    
+    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_IDENTIFIER));
+  
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.api.handler.CommandHandler#getImplCommands()
+     */
+    public Collection<String> getImplCommands() {
+        return COMMANDS;
+    }
+
+}

Propchange: james/protocols/trunk/api/src/main/java/org/apache/james/protocols/api/handler/UnknownCommandHandler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPProtocolHandlerChain.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPProtocolHandlerChain.java?rev=1222780&r1=1222779&r2=1222780&view=diff
==============================================================================
--- james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPProtocolHandlerChain.java (original)
+++ james/protocols/trunk/lmtp/src/main/java/org/apache/james/protocols/lmtp/LMTPProtocolHandlerChain.java Fri Dec 23 18:30:24 2011
@@ -37,6 +37,7 @@ import org.apache.james.protocols.smtp.c
 import org.apache.james.protocols.smtp.core.RcptCmdHandler;
 import org.apache.james.protocols.smtp.core.RsetCmdHandler;
 import org.apache.james.protocols.smtp.core.SMTPCommandDispatcherLineHandler;
+import org.apache.james.protocols.smtp.core.UnknownCmdHandler;
 import org.apache.james.protocols.smtp.core.VrfyCmdHandler;
 import org.apache.james.protocols.smtp.core.esmtp.MailSizeEsmtpExtension;
 import org.apache.james.protocols.smtp.core.esmtp.StartTlsCmdHandler;
@@ -80,6 +81,7 @@ public class LMTPProtocolHandlerChain ex
         defaultHandlers.add(new ReceivedDataLineFilter());
         defaultHandlers.add(new DataLineMessageHookHandler());
         defaultHandlers.add(new StartTlsCmdHandler());
+        defaultHandlers.add(new UnknownCmdHandler());
         return defaultHandlers;
     }
 

Modified: james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/POP3CommandDispatcherLineHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/POP3CommandDispatcherLineHandler.java?rev=1222780&r1=1222779&r2=1222780&view=diff
==============================================================================
--- james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/POP3CommandDispatcherLineHandler.java (original)
+++ james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/POP3CommandDispatcherLineHandler.java Fri Dec 23 18:30:24 2011
@@ -20,38 +20,18 @@
 package org.apache.james.protocols.pop3.core;
 
 import java.util.Arrays;
-import java.util.List;
 
-import org.apache.james.protocols.api.handler.AbstractCommandDispatcher;
+import org.apache.james.protocols.api.handler.CommandDispatcher;
 import org.apache.james.protocols.api.handler.CommandHandler;
 import org.apache.james.protocols.pop3.POP3Session;
 
 /**
  * Dispatch POP3 {@link CommandHandler}
  */
-public class POP3CommandDispatcherLineHandler extends AbstractCommandDispatcher<POP3Session> {
+public class POP3CommandDispatcherLineHandler extends CommandDispatcher<POP3Session> {
     private final static String[] mandatoryCommands = { "USER", "PASS", "LIST" };
-    private final CommandHandler<POP3Session> unknownHandler = new UnknownCmdHandler();
-  
-    /**
-     * @see org.apache.james.protocols.api.handler.AbstractCommandDispatcher#getMandatoryCommands()
-     */
-    protected List<String> getMandatoryCommands() {
-        return Arrays.asList(mandatoryCommands);
+   
+    public POP3CommandDispatcherLineHandler() {
+        super(Arrays.asList(mandatoryCommands));
     }
-
-    /**
-     * @see org.apache.james.protocols.api.handler.AbstractCommandDispatcher#getUnknownCommandHandler()
-     */
-    protected CommandHandler<POP3Session> getUnknownCommandHandler() {
-        return unknownHandler;
-    }
-
-    /**
-     * @see org.apache.james.protocols.api.handler.AbstractCommandDispatcher#getUnknownCommandHandlerIdentifier()
-     */
-    protected String getUnknownCommandHandlerIdentifier() {
-        return UnknownCmdHandler.COMMAND_NAME;
-    }
-
 }

Modified: james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/UnknownCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/UnknownCmdHandler.java?rev=1222780&r1=1222779&r2=1222780&view=diff
==============================================================================
--- james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/UnknownCmdHandler.java (original)
+++ james/protocols/trunk/pop3/src/main/java/org/apache/james/protocols/pop3/core/UnknownCmdHandler.java Fri Dec 23 18:30:24 2011
@@ -19,28 +19,16 @@
 
 package org.apache.james.protocols.pop3.core;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 import org.apache.james.protocols.api.Request;
 import org.apache.james.protocols.api.Response;
-import org.apache.james.protocols.api.handler.CommandHandler;
+import org.apache.james.protocols.api.handler.UnknownCommandHandler;
 import org.apache.james.protocols.pop3.POP3Response;
 import org.apache.james.protocols.pop3.POP3Session;
 
 /**
  * Default command handler for handling unknown commands
  */
-public class UnknownCmdHandler implements CommandHandler<POP3Session> {
-    /**
-     * The name of the command handled by the command handler
-     */
-    public static final String COMMAND_NAME = "UNKNOWN";
-
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(COMMAND_NAME));
-
-    
+public class UnknownCmdHandler extends UnknownCommandHandler<POP3Session> {
     /**
      * Handler method called upon receipt of an unrecognized command. Returns an
      * error response and logs the command.
@@ -48,12 +36,4 @@ public class UnknownCmdHandler implement
     public Response onCommand(POP3Session session, Request request) {
         return new POP3Response(POP3Response.ERR_RESPONSE);
     }
-
-    /**
-     * @see org.apache.james.protocols.api.handler.CommandHandler#getImplCommands()
-     */
-    public Collection<String> getImplCommands() {
-        return COMMANDS;
-    }
-
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java?rev=1222780&r1=1222779&r2=1222780&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/SMTPProtocolHandlerChain.java Fri Dec 23 18:30:24 2011
@@ -40,6 +40,7 @@ import org.apache.james.protocols.smtp.c
 import org.apache.james.protocols.smtp.core.ReceivedDataLineFilter;
 import org.apache.james.protocols.smtp.core.RsetCmdHandler;
 import org.apache.james.protocols.smtp.core.SMTPCommandDispatcherLineHandler;
+import org.apache.james.protocols.smtp.core.UnknownCmdHandler;
 import org.apache.james.protocols.smtp.core.VrfyCmdHandler;
 import org.apache.james.protocols.smtp.core.WelcomeMessageHandler;
 import org.apache.james.protocols.smtp.core.esmtp.AuthCmdHandler;
@@ -107,6 +108,7 @@ public class SMTPProtocolHandlerChain ex
         defaultHandlers.add(new ReceivedDataLineFilter());
         defaultHandlers.add(new DataLineMessageHookHandler());
         defaultHandlers.add(new StartTlsCmdHandler());
+        defaultHandlers.add(new UnknownCmdHandler());
         return defaultHandlers;
     }
 

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/SMTPCommandDispatcherLineHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/SMTPCommandDispatcherLineHandler.java?rev=1222780&r1=1222779&r2=1222780&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/SMTPCommandDispatcherLineHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/SMTPCommandDispatcherLineHandler.java Fri Dec 23 18:30:24 2011
@@ -20,10 +20,8 @@
 package org.apache.james.protocols.smtp.core;
 
 import java.util.Arrays;
-import java.util.List;
 
-import org.apache.james.protocols.api.handler.AbstractCommandDispatcher;
-import org.apache.james.protocols.api.handler.CommandHandler;
+import org.apache.james.protocols.api.handler.CommandDispatcher;
 import org.apache.james.protocols.smtp.SMTPSession;
 
 
@@ -32,34 +30,11 @@ import org.apache.james.protocols.smtp.S
  * 
  *
  */
-public class SMTPCommandDispatcherLineHandler extends AbstractCommandDispatcher<SMTPSession> {
-
-
-    private final CommandHandler<SMTPSession> unknownHandler = new UnknownCmdHandler();
+public class SMTPCommandDispatcherLineHandler extends CommandDispatcher<SMTPSession> {
 
     private final static String[] mandatoryCommands = { "MAIL" , "RCPT", "DATA"};
     
-
-
-    /**
-     * @see org.apache.james.protocols.api.handler.AbstractCommandDispatcher#getUnknownCommandHandlerIdentifier()
-     */
-    protected String getUnknownCommandHandlerIdentifier() {
-        return UnknownCmdHandler.UNKNOWN_COMMAND;
+    public SMTPCommandDispatcherLineHandler() {
+        super(Arrays.asList(mandatoryCommands));
     }
-
-    /**
-     * @see org.apache.james.protocols.api.handler.AbstractCommandDispatcher#getMandatoryCommands()
-     */
-    protected List<String> getMandatoryCommands() {
-        return Arrays.asList(mandatoryCommands);
-    }
-
-    /**
-     * @see org.apache.james.protocols.api.handler.AbstractCommandDispatcher#getUnknownCommandHandler()
-     */
-    protected CommandHandler<SMTPSession> getUnknownCommandHandler() {
-        return unknownHandler;
-    }
-
 }

Modified: james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java
URL: http://svn.apache.org/viewvc/james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java?rev=1222780&r1=1222779&r2=1222780&view=diff
==============================================================================
--- james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java (original)
+++ james/protocols/trunk/smtp/src/main/java/org/apache/james/protocols/smtp/core/UnknownCmdHandler.java Fri Dec 23 18:30:24 2011
@@ -26,6 +26,7 @@ import java.util.Collection;
 import java.util.Collections;
 
 import org.apache.james.protocols.api.ProtocolSession.State;
+import org.apache.james.protocols.api.handler.UnknownCommandHandler;
 import org.apache.james.protocols.api.Response;
 import org.apache.james.protocols.smtp.SMTPResponse;
 import org.apache.james.protocols.smtp.SMTPRetCode;
@@ -42,8 +43,7 @@ public class UnknownCmdHandler extends A
     /**
      * The name of the command handled by the command handler
      */
-    public static final String UNKNOWN_COMMAND = "UNKNOWN";
-    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(UNKNOWN_COMMAND));
+    private static final Collection<String> COMMANDS = Collections.unmodifiableCollection(Arrays.asList(UnknownCommandHandler.COMMAND_IDENTIFIER));
 
     /**
      * @see org.apache.james.protocols.api.handler.CommandHandler#getImplCommands()



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