public FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply) throws FtpException, IOException { // the reply is ignored for these callbacks String command = request.getCommand().toUpperCase(); if ("PASS".equals(command)) { return onLogin(session, request); } else if ("DELE".equals(command)) { return onDeleteEnd(session, request); } else if ("STOR".equals(command)) { return onUploadEnd(session, request); } else if ("RETR".equals(command)) { return onDownloadEnd(session, request); } else if ("RMD".equals(command)) { return onRmdirEnd(session, request); } else if ("MKD".equals(command)) { return onMkdirEnd(session, request); } else if ("APPE".equals(command)) { return onAppendEnd(session, request); } else if ("STOU".equals(command)) { return onUploadUniqueEnd(session, request); } else if ("RNTO".equals(command)) { return onRenameEnd(session, request); } else { // TODO should we call a catch all? return null; } }