MockFtpServer Change Log ------------------------------------------------------------------------------- Changes in version 2.5 (May 2014) ------------------------------------------ - Fix #23 PWD response should have commentary: "{0}" is current directory. Also adjusted reply text for MKD to adhere to RFC959: "{0}" created. - Removed deprecation of assertSessionReply(int,Object) - Fix broken internal links on the web site pages. - Update “Log4J Configuration Required to See Log Output” section on “FakeFtpServer – Getting Started” with info for SLF4J. - Added MockFtpServer logo image. Thanks to cooltext.com. Changes in version 2.4 (15 Jul 2012) ------------------------------------------ - FEATURE #2466395: Remove log4j dependency. Switch to using SLF4J (http://www.slf4j.org/). - FEATURE #3544349: Return MockFtpServer information as part of connect 220 response. - Upgrade to Groovy 1.7.10; fix Maven site plugin incompatibility. - Change “pom.xml” to use SFTP to deploy to Maven repo. Changes in version 2.3 (05 Jun 2011) ------------------------------------------ - FEATURE #2996739: Use a dynamically chosen free port number ("ephemeral")for the server control port if you specify 0 for the serverControlPort property of FakeFtpServer or StubFtpServer. Then call getServerControlPort() AFTER start() has been called to determine the actual port number being used. This is useful if you are running on a system where the default port (21) is already in use or cannot be bound from a user process (such as Unix). - FEATURE #3304849: Add a new readData(int numBytes) to Session - BUG #3103132: shutting down takes too long. Changes in version 2.2 (23 Mar 2010) ------------------------------------------ - FakeFtpServer: Support renaming of directories. * 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. * Change fake RNTO and RNFR CommandHandlers to allow renaming directories. - BUG FIX: #2828362: "Unit tests using FakeFtpServer are slow" https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2828362&group_id=208647. DefaultSession.readCommand(). * Reduce default socket read interval time to 20ms. - BUG FIX: #2953392: "AbstractFtpServer waits endless if binding to port fails" https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2953392&group_id=208647. - FakeFtpServer (AbstractFakeFileSystem): Change rename() to fail if the TO file already exists. - 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. - PatternUtil: Support plus sign ('+') within wildcard strings. See convertStringWithWildcardsToRegex(). - TESTS: Rename AbstractTest to AbstractTestCase and AbstractGroovyTest to AbstractGroovyTestCase. Changes in version 2.1 (16 Jun 2009) ------------------------------------------ - Added support for IPv6 (EPRT and EPSV commands) to FakeFtpServer and StubFtpServer. Thanks to Fernando Martinez for testing. - BUG FIX: #2696898: �WindowsFakeFilesystem DirectoryEntry case sensitivity� (https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2696898&group_id=208647). - BUG FIX: #2797980: �UnixFakeFileSystem IsValidName Regex incorrect� (https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=2797980&group_id=208647). - Add getServerControlPort() to AbstractFtpServer. - Create HostAndPort class. Refactor both PortCommandHandler(s) and the PortParser classes to use HostAndPort. - TESTS: Convert PortParserTest to Groovy. Changes in version 2.0.2 (09 Mar 2009) ------------------------------------------ - BUG FIX: #2654577: 'month' in UnixDirectoryListingFormatter is Locale specific. http://sourceforge.net/tracker/index.php?func=detail&aid=2654577&group_id=208647&atid=1006533. - BUG FIX: #2653626: Cannot start() server after calling stop(). https://sourceforge.net/tracker2/index.php?func=detail&aid=2653626&group_id=208647&atid=1006533. Changes in version 2.0.1 (09 Feb 2009) ------------------------------------------ - BUG FIX: #2543193 �"cd .." and "pwd" don't work properly together� (https://sourceforge.net/tracker2/?func=detail&aid=2543193&group_id=208647&atid=1006533). - BUG FIX: #2540548 �Missing new line on directory listing� (https://sourceforge.net/tracker2/?func=detail&aid=2540548&group_id=208647&atid=1006533). - BUG FIX: #2540366 �FileEntry.setContents( byte [] contents ) change the content� (https://sourceforge.net/tracker2/?func=detail&aid=2540366&group_id=208647&atid=1006533). - AbstractFtpServer: Use entrySet() to iterate through sessions (From Rijk van Haaften). Changes in version 2.0 (03 Jan 2009) ------------------------------------------ - 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 - 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 - Add note to online doc about requiring Log4J configuration file if you want to see log output. Changes in version 2.0-rc3 (14 Dec 2008) ------------------------------------------ - BUG FIX: ClassCastException in AbstractFtpServer during server cleanup. - Reorganize sample code and include in online doc. Changes in version 2.0-rc2 (12 Dec 2008) ------------------------------------------ - BUG FIX: AbstractFtpServer: Fix bug when iterating through sessions. - [BREAKING CHANGE] Move ConnectCommandHandler into core package. - [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. - [BREAKING CHANGE] Rename AbstractCommandHandler to AbstractTrackingCommandHandler. - Create AbstractStaticReplyCommandHandler, and make both AbstractStubCommandHandler and StaticReplyCommandHandler subclasses. - Create new UnrecognizedCommandHandler, and use to return 502 reply from FakeFtpServer and StubFtpServer when a requested command is not supported. - Add support for STAT command; Add systemStatus property to FakeFtpServer. - Add support for SMNT command to FakeFtpServer; - AbstractFtpServer: Add createSession() method. Make some attributes protected. - StubFtpServer: Introduce AbstractStorCommandHandler. Remove final from stub CommandHandler classes. - Cleanup code and javadoc - DOCS: Add �Requirements� section to main (index) page. Also �Maven� section. - DOCS: Add "Configuring CommandHandler for New (Unsupported) Command" and �Creating Your Own Custom CommandHandler Class� sections to StubFtpServer Getting Started Guide. - DOCS: Add "Configuring Custom CommandHandlers" section to Getting Started Guide (FakeFtpServer). - TESTS: Move AbstractCommandHandlerTest into core package. - TESTS: Create sample test of FakeFtpServer with StaticReplyCommandHandler command handler(s). - Create source jar during package and include within assemblies. - Change "assembly.xml" to include "fakeftpserver*.xml" files. Changes in version 2.0-rc1 (23 Nov 2008) ------------------------------------------ NEW FakeFtpServer. This is an alternative "mock" FTP server implementation. FakeFtpServer provides a higher-level abstraction than StubFtpServer. You define a virtual file system, including directories and files, as well as a set of valid user accounts and credentials. The FakeFtpServer then responds with appropriate replies and reply codes based on that configuration. See online documentation for more information. StubFtpServer - StubFtpServer: Refactored to inherit from common AbstractFtpServer superclass. - Change default org.mockftpserver.stub.command.CdupCommandHandler CDUP reply code from 250 to 200. - Rename ReplyCodes.SEND_DATA_INITIAL_OK and SEND_DATA_FINAL_OK to TRANSFER_DATA_.. indicate bi-directionality. - Rename Command.getRequiredString(int) to getRequiredParameter(int). - Change StubFtpServer CommandHandlers to reply with 501 if required command parameters are missing. Changed AbstractCommandHandler and AbstractCommandHandlerTest. - Refactor (Stub)PortCommandHandler - pull out common logic into PortParser util class. Changes in version 1.2.4 (01 Sep 2008) ------------------------------------------ - BUG FIX: StubFtpServer: Only execute serverSocket.close() if serverSocket != null. - BUG FIX: Terminate replies with <CRLF> (\r\n). - DOCS: Fix Getting Started Guide code example: setOverrideFinalReplyCode() to setFinalReplyCode(). - DOCS: Add note to Getting Started Guide about calling setServerControlPort() if on Unix system. Changes in version 1.2.3 (13 Aug 2008) ------------------------------------------ - BUG FIX: Tracker item #2047355. Parse host IP numbers as unsigned bytes. See https://sourceforge.net/tracker/index.php?func=detail&aid=2047355&group_id=208647&atid=1006533 Changes in version 1.2.2 (27 May 2008) ------------------------------------------ - BUG FIX: Move serverThread.start() into synchronized block to avoid server hang if server thread runs faster than main thread. See https://sourceforge.net/tracker/?func=detail&atid=1006533&aid=1925590&group_id=208647 Changes in version 1.2.1 (10 Mar 2008) ------------------------------------------ - Change Maven POM (pom.xml) to enable sync-ing with central Maven repository (ibiblio). Changes in version 1.2 (29 Feb 2008) ------------------------------------------ - BUG FIX: StubFtpServer: Add wait/notify to ensure that the server starts up and opens the server control port before the start() method returns. This fixes a potential race condition, which shows up on some Linux systems. (Thanks to Aasman Bajaj for identifying the problem and providing the fix) - Modify tests to make server port configurable (through "ftp.server.port" system property), allowing tests to run on non-Windows systems. Changes in version 1.1 (20 Feb 2008) ------------------------------------------ - StubFtpServer: Allow configuring server control connection port other than the default (21). - AbstractTest: Add some test convenience methods. Changes in version 1.0 final (11 Dec 2007) ------------------------------------------ - Implement default CommandHandlers for NLST, REIN, SMNT, SITE, ABOR and ALLO commands. - Handle command names in any case. - CwdCommandHandler: Fix PATHNAME_KEY constant value; change to "pathname". Changes in version 1.0-RC1 (1 Nov 2007) --------------------------------------- Initial release.