AbstractStubCommandHandler.java revision 17f899cea435aaf91624af2a93bc24bcfcd5fc2d
117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair/* 217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Copyright 2007 the original author or authors. 317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Licensed under the Apache License, Version 2.0 (the "License"); 517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * you may not use this file except in compliance with the License. 617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * You may obtain a copy of the License at 717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * http://www.apache.org/licenses/LICENSE-2.0 917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 1017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Unless required by applicable law or agreed to in writing, software 1117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * distributed under the License is distributed on an "AS IS" BASIS, 1217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * See the License for the specific language governing permissions and 1417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * limitations under the License. 1517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 1617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairpackage org.mockftpserver.stub.command; 1717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 1817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.command.AbstractCommandHandler; 1917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.session.Session; 2017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.core.util.AssertFailedException; 2117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairimport org.mockftpserver.stub.StubFtpServer; 2217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 2317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair/** 2417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * The abstract superclass for CommandHandler classes for the {@link StubFtpServer}. 2517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * <p> 2617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Subclasses can optionally override the reply code and/or text for the reply by calling 2717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * {@link #setReplyCode(int)}, {@link #setReplyMessageKey(String)} and {@link #setReplyText(String)}. 2817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 2917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @version $Revision$ - $Date$ 3017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 3117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @author Chris Mair 3217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 3317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismairpublic abstract class AbstractStubCommandHandler extends AbstractCommandHandler { 3417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 3517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // Defaults to zero; must be set to non-zero 3617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair protected int replyCode = 0; 3717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 3817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // Defaults to null; if set to non-null, this value will override the default reply text associated with 3917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // the replyCode. 4017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair protected String replyText = null; 4117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 4217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // The message key for the reply text. Defaults to null. If null, use the default message associated 4317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // with the reply code 4417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair protected String replyMessageKey = null; 4517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 4617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 4717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Set the reply code. 4817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 4917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @param replyCode - the replyCode 5017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 5117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @throws AssertFailedException - if the replyCode is not valid 5217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 5317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair public void setReplyCode(int replyCode) { 5417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair assertValidReplyCode(replyCode); 5517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair this.replyCode = replyCode; 5617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 5717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 5817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 5917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Set the reply text. If null, then use the (default) message key for the replyCode. 6017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 6117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @param replyText - the replyText 6217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 6317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair public void setReplyText(String replyText) { 6417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair this.replyText = replyText; 6517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 6617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 6717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 6817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Set the message key for the reply text. If null, then use the default message key. 6917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 7017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @param replyMessageKey - the replyMessageKey to set 7117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 7217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair public void setReplyMessageKey(String replyMessageKey) { 7317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair this.replyMessageKey = replyMessageKey; 7417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 7517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 7617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // ------------------------------------------------------------------------- 7717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // Utility methods for subclasses 7817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair // ------------------------------------------------------------------------- 7917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 8017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 8117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Send the reply using the replyCode and message key/text configured for this command handler. 8217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @param session - the Session 8317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 8417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @throws AssertFailedException if the replyCode is not valid 8517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 8617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair protected void sendReply(Session session) { 8717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair sendReply(session, null); 8817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 8917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 9017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair /** 9117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * Send the reply using the replyCode and message key/text configured for this command handler. 9217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @param session - the Session 9317f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @param messageParameter - message parameter; may be null 9417f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * 9517f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair * @throws AssertFailedException if the replyCode is not valid 9617f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair */ 9717f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair protected void sendReply(Session session, Object messageParameter) { 9817f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair Object[] parameters = (messageParameter == null) ? null : new Object[] { messageParameter }; 9917f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair sendReply(session, replyCode, replyMessageKey, replyText, parameters); 10017f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair } 10117f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair 10217f899cea435aaf91624af2a93bc24bcfcd5fc2dchrismair} 103