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