193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair/*
293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Copyright 2007 the original author or authors.
393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *
493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Licensed under the Apache License, Version 2.0 (the "License");
593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * you may not use this file except in compliance with the License.
693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * You may obtain a copy of the License at
793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *
893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *      http://www.apache.org/licenses/LICENSE-2.0
993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair *
1093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Unless required by applicable law or agreed to in writing, software
1193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * distributed under the License is distributed on an "AS IS" BASIS,
1293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * See the License for the specific language governing permissions and
1493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * limitations under the License.
1593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */
1693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairpackage org.mockftpserver.stub.command;
1793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
1893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairimport org.mockftpserver.core.command.Command;
1993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairimport org.mockftpserver.core.command.CommandHandler;
2093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairimport org.mockftpserver.core.command.InvocationRecord;
2193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairimport org.mockftpserver.core.command.ReplyCodes;
2293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismairimport org.mockftpserver.core.session.Session;
2393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
2493102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair/**
253b7668ee59bf567db6bce593a9090f65db171fdbchrismair * CommandHandler for the PWD (Print Working Directory) and XPWD commands. By default, return
263b7668ee59bf567db6bce593a9090f65db171fdbchrismair * an empty directory name, along with a reply code of 257. You can customize the returned
2793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * directory name by setting the <code>directory</code> property.
2893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * <p>
2993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * Each invocation record stored by this CommandHandler contains no data elements.
303b7668ee59bf567db6bce593a9090f65db171fdbchrismair *
3193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair * @author Chris Mair
323b7668ee59bf567db6bce593a9090f65db171fdbchrismair * @version $Revision$ - $Date$
3393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair */
343b7668ee59bf567db6bce593a9090f65db171fdbchrismairpublic class PwdCommandHandler extends AbstractStubCommandHandler implements CommandHandler {
3593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
3693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    private String directory = "";
373b7668ee59bf567db6bce593a9090f65db171fdbchrismair
3893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    /**
393b7668ee59bf567db6bce593a9090f65db171fdbchrismair     * Constructor. Initialize the replyCode.
4093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     */
4193102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    public PwdCommandHandler() {
4293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        setReplyCode(ReplyCodes.PWD_OK);
4393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    }
443b7668ee59bf567db6bce593a9090f65db171fdbchrismair
4593102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    public void handleCommand(Command command, Session session, InvocationRecord invocationRecord) {
4693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair        sendReply(session, quotes(directory));
4793102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    }
4893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair
4993102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    /**
5093102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     * Set the directory String to be returned by this command
513b7668ee59bf567db6bce593a9090f65db171fdbchrismair     *
5293102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     * @param directory - the directory
5393102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair     */
543b7668ee59bf567db6bce593a9090f65db171fdbchrismair    public void setDirectory(String directory) {
553b7668ee59bf567db6bce593a9090f65db171fdbchrismair        this.directory = directory;
5693102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair    }
573b7668ee59bf567db6bce593a9090f65db171fdbchrismair
5893102446a7b7c3d17888064b4e2e4e5cb534e6d0chrismair}
59