1 MockFtpServer Change Log 2 ------------------------------------------------------------------------------- 3 4 Changes in version 2.5 (May 2014) 5 ------------------------------------------ 6 - Fix #23 PWD response should have commentary: "{0}" is current directory. 7 Also adjusted reply text for MKD to adhere to RFC959: "{0}" created. 8 - Removed deprecation of assertSessionReply(int,Object) 9 - Fix broken internal links on the web site pages. 10 - Update Log4J Configuration Required to See Log Output section on FakeFtpServer Getting Started with info for SLF4J. 11 - Added MockFtpServer logo image. Thanks to cooltext.com. 12 13 14 Changes in version 2.4 (15 Jul 2012) 15 ------------------------------------------ 16 - FEATURE #2466395: Remove log4j dependency. Switch to using SLF4J (http://www.slf4j.org/). 17 - FEATURE #3544349: Return MockFtpServer information as part of connect 220 response. 18 - Upgrade to Groovy 1.7.10; fix Maven site plugin incompatibility. 19 - Change pom.xml to use SFTP to deploy to Maven repo. 20 21 22 Changes in version 2.3 (05 Jun 2011) 23 ------------------------------------------ 24 - FEATURE #2996739: Use a dynamically chosen free port number ("ephemeral")for the server control port 25 if you specify 0 for the serverControlPort property of FakeFtpServer or StubFtpServer. Then call 26 getServerControlPort() AFTER start() has been called to determine the actual port number being used. 27 This is useful if you are running on a system where the default port (21) is already in use or cannot 28 be bound from a user process (such as Unix). 29 - FEATURE #3304849: Add a new readData(int numBytes) to Session 30 - BUG #3103132: shutting down takes too long. 31 32 33 Changes in version 2.2 (23 Mar 2010) 34 ------------------------------------------ 35 - FakeFtpServer: Support renaming of directories. 36 * BUG FIX: #2823519 "The RnfrCommandHandler is currently set to only support renaming of files": https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2823519&group_id=208647. 37 * Change fake RNTO and RNFR CommandHandlers to allow renaming directories. 38 - BUG FIX: #2828362: "Unit tests using FakeFtpServer are slow" https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2828362&group_id=208647. DefaultSession.readCommand(). 39 * Reduce default socket read interval time to 20ms. 40 - BUG FIX: #2953392: "AbstractFtpServer waits endless if binding to port fails" https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2953392&group_id=208647. 41 - FakeFtpServer (AbstractFakeFileSystem): Change rename() to fail if the TO file already exists. 42 - Add sample directory listing(s) to online docs for StubFtpServer ListCommandHandler. Update online docs/javadoc describing that multiple directory entries in a file listing can be simulated. 43 - PatternUtil: Support plus sign ('+') within wildcard strings. See convertStringWithWildcardsToRegex(). 44 - TESTS: Rename AbstractTest to AbstractTestCase and AbstractGroovyTest to AbstractGroovyTestCase. 45 46 47 Changes in version 2.1 (16 Jun 2009) 48 ------------------------------------------ 49 - Added support for IPv6 (EPRT and EPSV commands) to FakeFtpServer and StubFtpServer. Thanks to Fernando Martinez for testing. 50 - BUG FIX: #2696898: WindowsFakeFilesystem DirectoryEntry case sensitivity (https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2696898&group_id=208647). 51 - BUG FIX: #2797980: UnixFakeFileSystem IsValidName Regex incorrect (https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2797980&group_id=208647). 52 - Add getServerControlPort() to AbstractFtpServer. 53 - Create HostAndPort class. Refactor both PortCommandHandler(s) and the PortParser classes to use HostAndPort. 54 - TESTS: Convert PortParserTest to Groovy. 55 56 57 Changes in version 2.0.2 (09 Mar 2009) 58 ------------------------------------------ 59 - BUG FIX: #2654577: 'month' in UnixDirectoryListingFormatter is Locale specific. http://sourceforge.net/tracker/index.php?func=detail&aid=2654577&group_id=208647&atid=1006533. 60 - BUG FIX: #2653626: Cannot start() server after calling stop(). https://sourceforge.net/tracker2/index.php?func=detail&aid=2653626&group_id=208647&atid=1006533. 61 62 63 Changes in version 2.0.1 (09 Feb 2009) 64 ------------------------------------------ 65 - BUG FIX: #2543193 "cd .." and "pwd" don't work properly together (https://sourceforge.net/tracker2/?func=detail&aid=2543193&group_id=208647&atid=1006533). 66 - BUG FIX: #2540548 Missing new line on directory listing (https://sourceforge.net/tracker2/?func=detail&aid=2540548&group_id=208647&atid=1006533). 67 - BUG FIX: #2540366 FileEntry.setContents( byte [] contents ) change the content (https://sourceforge.net/tracker2/?func=detail&aid=2540366&group_id=208647&atid=1006533). 68 - AbstractFtpServer: Use entrySet() to iterate through sessions (From Rijk van Haaften). 69 70 71 Changes in version 2.0 (03 Jan 2009) 72 ------------------------------------------ 73 - BUG FIX: #2462794 filesystem.pathDoesNotExist key is missing from the ReplyText resource bundle. See https://sourceforge.net/tracker2/?func=detail&aid=2462794&group_id=208647&atid=1006533 74 - BUG FIX: #2462973 FileEntry.cloneWithNewPath doesn't clone out field. See https://sourceforge.net/tracker/index.php?func=detail&aid=2462973&group_id=208647&atid=1006533 75 - Add note to online doc about requiring Log4J configuration file if you want to see log output. 76 77 78 Changes in version 2.0-rc3 (14 Dec 2008) 79 ------------------------------------------ 80 - BUG FIX: ClassCastException in AbstractFtpServer during server cleanup. 81 - Reorganize sample code and include in online doc. 82 83 84 Changes in version 2.0-rc2 (12 Dec 2008) 85 ------------------------------------------ 86 - BUG FIX: AbstractFtpServer: Fix bug when iterating through sessions. 87 - [BREAKING CHANGE] Move ConnectCommandHandler into core package. 88 - [BREAKING CHANGE] Unify Fake and Stub CommandHandlers. Change ServerConfiguration to remove getReplyTextBundle(); make AbstractFakeCommandHandler implement ReplyTextBundleAware instead. Change FakeFtpServer to check for ReplyTextBundleAware and set replyTextBundle. Pull common from stub/fake into AbstractCommandHandler. 89 - [BREAKING CHANGE] Rename AbstractCommandHandler to AbstractTrackingCommandHandler. 90 - Create AbstractStaticReplyCommandHandler, and make both AbstractStubCommandHandler and StaticReplyCommandHandler subclasses. 91 - Create new UnrecognizedCommandHandler, and use to return 502 reply from FakeFtpServer and StubFtpServer when a requested command is not supported. 92 - Add support for STAT command; Add systemStatus property to FakeFtpServer. 93 - Add support for SMNT command to FakeFtpServer; 94 - AbstractFtpServer: Add createSession() method. Make some attributes protected. 95 - StubFtpServer: Introduce AbstractStorCommandHandler. Remove final from stub CommandHandler classes. 96 - Cleanup code and javadoc 97 - DOCS: Add Requirements section to main (index) page. Also Maven section. 98 - DOCS: Add "Configuring CommandHandler for New (Unsupported) Command" and Creating Your Own Custom CommandHandler Class sections to StubFtpServer Getting Started Guide. 99 - DOCS: Add "Configuring Custom CommandHandlers" section to Getting Started Guide (FakeFtpServer). 100 - TESTS: Move AbstractCommandHandlerTest into core package. 101 - TESTS: Create sample test of FakeFtpServer with StaticReplyCommandHandler command handler(s). 102 - Create source jar during package and include within assemblies. 103 - Change "assembly.xml" to include "fakeftpserver*.xml" files. 104 105 106 Changes in version 2.0-rc1 (23 Nov 2008) 107 ------------------------------------------ 108 NEW FakeFtpServer. 109 This is an alternative "mock" FTP server implementation. FakeFtpServer provides a higher-level abstraction 110 than StubFtpServer. You define a virtual file system, including directories and files, as well as a set of 111 valid user accounts and credentials. The FakeFtpServer then responds with appropriate replies and reply 112 codes based on that configuration. See online documentation for more information. 113 StubFtpServer 114 - StubFtpServer: Refactored to inherit from common AbstractFtpServer superclass. 115 - Change default org.mockftpserver.stub.command.CdupCommandHandler CDUP reply code from 250 to 200. 116 - Rename ReplyCodes.SEND_DATA_INITIAL_OK and SEND_DATA_FINAL_OK to TRANSFER_DATA_.. indicate bi-directionality. 117 - Rename Command.getRequiredString(int) to getRequiredParameter(int). 118 - Change StubFtpServer CommandHandlers to reply with 501 if required command parameters are missing. Changed AbstractCommandHandler and AbstractCommandHandlerTest. 119 - Refactor (Stub)PortCommandHandler - pull out common logic into PortParser util class. 120 121 122 Changes in version 1.2.4 (01 Sep 2008) 123 ------------------------------------------ 124 - BUG FIX: StubFtpServer: Only execute serverSocket.close() if serverSocket != null. 125 - BUG FIX: Terminate replies with <CRLF> (\r\n). 126 - DOCS: Fix Getting Started Guide code example: setOverrideFinalReplyCode() to setFinalReplyCode(). 127 - DOCS: Add note to Getting Started Guide about calling setServerControlPort() if on Unix system. 128 129 130 Changes in version 1.2.3 (13 Aug 2008) 131 ------------------------------------------ 132 - BUG FIX: Tracker item #2047355. Parse host IP numbers as unsigned bytes. 133 See https://sourceforge.net/tracker/index.php?func=detail&aid=2047355&group_id=208647&atid=1006533 134 135 136 Changes in version 1.2.2 (27 May 2008) 137 ------------------------------------------ 138 - BUG FIX: Move serverThread.start() into synchronized block to avoid server hang if 139 server thread runs faster than main thread. 140 See https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=1925590&group_id=208647 141 142 143 Changes in version 1.2.1 (10 Mar 2008) 144 ------------------------------------------ 145 - Change Maven POM (pom.xml) to enable sync-ing with central Maven repository (ibiblio). 146 147 Changes in version 1.2 (29 Feb 2008) 148 ------------------------------------------ 149 - BUG FIX: StubFtpServer: Add wait/notify to ensure that the server starts up and opens the server 150 control port before the start() method returns. This fixes a potential race condition, which 151 shows up on some Linux systems. (Thanks to Aasman Bajaj for identifying the problem and providing the fix) 152 - Modify tests to make server port configurable (through "ftp.server.port" system property), allowing 153 tests to run on non-Windows systems. 154 155 156 Changes in version 1.1 (20 Feb 2008) 157 ------------------------------------------ 158 - StubFtpServer: Allow configuring server control connection port other than the default (21). 159 - AbstractTest: Add some test convenience methods. 160 161 162 Changes in version 1.0 final (11 Dec 2007) 163 ------------------------------------------ 164 - Implement default CommandHandlers for NLST, REIN, SMNT, SITE, ABOR and ALLO commands. 165 - Handle command names in any case. 166 - CwdCommandHandler: Fix PATHNAME_KEY constant value; change to "pathname". 167 168 169 Changes in version 1.0-RC1 (1 Nov 2007) 170 --------------------------------------- 171 Initial release.