public FtpletResult beforeCommand(FtpSession session, FtpRequest request) throws FtpException, IOException { String command = request.getCommand().toUpperCase(); if ("DELE".equals(command)) { return onDeleteStart(session, request); } else if ("STOR".equals(command)) { return onUploadStart(session, request); } else if ("RETR".equals(command)) { return onDownloadStart(session, request); } else if ("RMD".equals(command)) { return onRmdirStart(session, request); } else if ("MKD".equals(command)) { return onMkdirStart(session, request); } else if ("APPE".equals(command)) { return onAppendStart(session, request); } else if ("STOU".equals(command)) { return onUploadUniqueStart(session, request); } else if ("RNTO".equals(command)) { return onRenameStart(session, request); } else if ("SITE".equals(command)) { return onSite(session, request); } else { // TODO should we call a catch all? return null; } }