14bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair/*
24bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Copyright 2007 the original author or authors.
34bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
44bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Licensed under the Apache License, Version 2.0 (the "License");
54bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * you may not use this file except in compliance with the License.
64bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * You may obtain a copy of the License at
74bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
84bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *      http://www.apache.org/licenses/LICENSE-2.0
94bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
104bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Unless required by applicable law or agreed to in writing, software
114bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * distributed under the License is distributed on an "AS IS" BASIS,
124bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * See the License for the specific language governing permissions and
144bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * limitations under the License.
154bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair */
164bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairpackage org.mockftpserver.stub.command;
174bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
184bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.command.Command;
194bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.command.CommandHandler;
204bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.command.InvocationRecord;
214bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.command.ReplyCodes;
224bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairimport org.mockftpserver.core.session.Session;
234bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
244bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair/**
254bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * CommandHandler for the MODE command. Send back a reply code of 200.
264bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * <p>
274bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * Each invocation record stored by this CommandHandler includes the following data element key/values:
284bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * <ul>
294bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *    <li>{@link #MODE_KEY} ("mode") - the code for the transmission mode submitted on the invocation (the first command parameter)
304bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * </ul>
314bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
324bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @version $Revision$ - $Date$
334bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair *
344bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair * @author Chris Mair
354bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair */
364bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismairpublic final class ModeCommandHandler extends AbstractStubCommandHandler implements CommandHandler {
374bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
384bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public static final String MODE_KEY = "mode";
394bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
404bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
414bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * Constructor. Initialize the replyCode.
424bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
434bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public ModeCommandHandler() {
444bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        setReplyCode(ReplyCodes.MODE_OK);
454bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
464bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
474bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    /**
484bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     * @see org.mockftpserver.core.command.CommandHandler#handleCommand(Command, Session, InvocationRecord)
494bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair     */
504bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    public void handleCommand(Command command, Session session, InvocationRecord invocationRecord) {
514bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        invocationRecord.set(MODE_KEY, command.getRequiredString(0));
524bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair        sendReply(session);
534bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair    }
544bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair
554bc314fb002f3e5369cd724b91e83e0c71aeeccbchrismair}
56