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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org