10da0f84ad9831bea470896e79b5ec207c83f258echrismair/* 20da0f84ad9831bea470896e79b5ec207c83f258echrismair * Copyright 2007 the original author or authors. 30da0f84ad9831bea470896e79b5ec207c83f258echrismair * 40da0f84ad9831bea470896e79b5ec207c83f258echrismair * Licensed under the Apache License, Version 2.0 (the "License"); 50da0f84ad9831bea470896e79b5ec207c83f258echrismair * you may not use this file except in compliance with the License. 60da0f84ad9831bea470896e79b5ec207c83f258echrismair * You may obtain a copy of the License at 70da0f84ad9831bea470896e79b5ec207c83f258echrismair * 80da0f84ad9831bea470896e79b5ec207c83f258echrismair * http://www.apache.org/licenses/LICENSE-2.0 90da0f84ad9831bea470896e79b5ec207c83f258echrismair * 100da0f84ad9831bea470896e79b5ec207c83f258echrismair * Unless required by applicable law or agreed to in writing, software 110da0f84ad9831bea470896e79b5ec207c83f258echrismair * distributed under the License is distributed on an "AS IS" BASIS, 120da0f84ad9831bea470896e79b5ec207c83f258echrismair * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130da0f84ad9831bea470896e79b5ec207c83f258echrismair * See the License for the specific language governing permissions and 140da0f84ad9831bea470896e79b5ec207c83f258echrismair * limitations under the License. 150da0f84ad9831bea470896e79b5ec207c83f258echrismair */ 160da0f84ad9831bea470896e79b5ec207c83f258echrismairpackage org.mockftpserver.core.command; 170da0f84ad9831bea470896e79b5ec207c83f258echrismair 18dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismairimport org.slf4j.Logger; 19dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismairimport org.slf4j.LoggerFactory; 200da0f84ad9831bea470896e79b5ec207c83f258echrismairimport org.mockftpserver.core.util.Assert; 210da0f84ad9831bea470896e79b5ec207c83f258echrismair 220da0f84ad9831bea470896e79b5ec207c83f258echrismairimport java.util.ResourceBundle; 230da0f84ad9831bea470896e79b5ec207c83f258echrismair 240da0f84ad9831bea470896e79b5ec207c83f258echrismair/** 250da0f84ad9831bea470896e79b5ec207c83f258echrismair * The abstract superclass for CommandHandler classes. 260da0f84ad9831bea470896e79b5ec207c83f258echrismair * 270da0f84ad9831bea470896e79b5ec207c83f258echrismair * @author Chris Mair 280da0f84ad9831bea470896e79b5ec207c83f258echrismair * @version $Revision$ - $Date$ 290da0f84ad9831bea470896e79b5ec207c83f258echrismair */ 300da0f84ad9831bea470896e79b5ec207c83f258echrismairpublic abstract class AbstractCommandHandler implements CommandHandler, ReplyTextBundleAware { 310da0f84ad9831bea470896e79b5ec207c83f258echrismair 32dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismair protected final Logger LOG = LoggerFactory.getLogger(getClass()); 330da0f84ad9831bea470896e79b5ec207c83f258echrismair 340da0f84ad9831bea470896e79b5ec207c83f258echrismair private ResourceBundle replyTextBundle; 350da0f84ad9831bea470896e79b5ec207c83f258echrismair 360da0f84ad9831bea470896e79b5ec207c83f258echrismair //------------------------------------------------------------------------- 370da0f84ad9831bea470896e79b5ec207c83f258echrismair // Support for reply text ResourceBundle 380da0f84ad9831bea470896e79b5ec207c83f258echrismair //------------------------------------------------------------------------- 390da0f84ad9831bea470896e79b5ec207c83f258echrismair 400da0f84ad9831bea470896e79b5ec207c83f258echrismair /** 410da0f84ad9831bea470896e79b5ec207c83f258echrismair * Return the ResourceBundle containing the reply text messages 420da0f84ad9831bea470896e79b5ec207c83f258echrismair * 430da0f84ad9831bea470896e79b5ec207c83f258echrismair * @return the replyTextBundle 440da0f84ad9831bea470896e79b5ec207c83f258echrismair * @see ReplyTextBundleAware#getReplyTextBundle() 450da0f84ad9831bea470896e79b5ec207c83f258echrismair */ 460da0f84ad9831bea470896e79b5ec207c83f258echrismair public ResourceBundle getReplyTextBundle() { 470da0f84ad9831bea470896e79b5ec207c83f258echrismair return replyTextBundle; 480da0f84ad9831bea470896e79b5ec207c83f258echrismair } 490da0f84ad9831bea470896e79b5ec207c83f258echrismair 500da0f84ad9831bea470896e79b5ec207c83f258echrismair /** 510da0f84ad9831bea470896e79b5ec207c83f258echrismair * Set the ResourceBundle containing the reply text messages 520da0f84ad9831bea470896e79b5ec207c83f258echrismair * 530da0f84ad9831bea470896e79b5ec207c83f258echrismair * @param replyTextBundle - the replyTextBundle to set 540da0f84ad9831bea470896e79b5ec207c83f258echrismair * @see ReplyTextBundleAware#setReplyTextBundle(java.util.ResourceBundle) 550da0f84ad9831bea470896e79b5ec207c83f258echrismair */ 560da0f84ad9831bea470896e79b5ec207c83f258echrismair public void setReplyTextBundle(ResourceBundle replyTextBundle) { 570da0f84ad9831bea470896e79b5ec207c83f258echrismair this.replyTextBundle = replyTextBundle; 580da0f84ad9831bea470896e79b5ec207c83f258echrismair } 590da0f84ad9831bea470896e79b5ec207c83f258echrismair 600da0f84ad9831bea470896e79b5ec207c83f258echrismair // ------------------------------------------------------------------------- 610da0f84ad9831bea470896e79b5ec207c83f258echrismair // Utility methods for subclasses 620da0f84ad9831bea470896e79b5ec207c83f258echrismair // ------------------------------------------------------------------------- 630da0f84ad9831bea470896e79b5ec207c83f258echrismair 640da0f84ad9831bea470896e79b5ec207c83f258echrismair /** 650da0f84ad9831bea470896e79b5ec207c83f258echrismair * Return the specified text surrounded with double quotes 660da0f84ad9831bea470896e79b5ec207c83f258echrismair * 670da0f84ad9831bea470896e79b5ec207c83f258echrismair * @param text - the text to surround with quotes 680da0f84ad9831bea470896e79b5ec207c83f258echrismair * @return the text with leading and trailing double quotes 690da0f84ad9831bea470896e79b5ec207c83f258echrismair * @throws org.mockftpserver.core.util.AssertFailedException 700da0f84ad9831bea470896e79b5ec207c83f258echrismair * - if text is null 710da0f84ad9831bea470896e79b5ec207c83f258echrismair */ 720da0f84ad9831bea470896e79b5ec207c83f258echrismair protected static String quotes(String text) { 730da0f84ad9831bea470896e79b5ec207c83f258echrismair Assert.notNull(text, "text"); 740da0f84ad9831bea470896e79b5ec207c83f258echrismair final String QUOTES = "\""; 750da0f84ad9831bea470896e79b5ec207c83f258echrismair return QUOTES + text + QUOTES; 760da0f84ad9831bea470896e79b5ec207c83f258echrismair } 770da0f84ad9831bea470896e79b5ec207c83f258echrismair 780da0f84ad9831bea470896e79b5ec207c83f258echrismair /** 790da0f84ad9831bea470896e79b5ec207c83f258echrismair * Assert that the specified number is a valid reply code 800da0f84ad9831bea470896e79b5ec207c83f258echrismair * 810da0f84ad9831bea470896e79b5ec207c83f258echrismair * @param replyCode - the reply code to check 820da0f84ad9831bea470896e79b5ec207c83f258echrismair * @throws org.mockftpserver.core.util.AssertFailedException 830da0f84ad9831bea470896e79b5ec207c83f258echrismair * - if the replyCode is invalid 840da0f84ad9831bea470896e79b5ec207c83f258echrismair */ 850da0f84ad9831bea470896e79b5ec207c83f258echrismair protected void assertValidReplyCode(int replyCode) { 860da0f84ad9831bea470896e79b5ec207c83f258echrismair Assert.isTrue(replyCode > 0, "The number [" + replyCode + "] is not a valid reply code"); 870da0f84ad9831bea470896e79b5ec207c83f258echrismair } 880da0f84ad9831bea470896e79b5ec207c83f258echrismair 89dfa40a06dff44f29d8d5e1d3186055ad325fc7b9chrismair} 90