Package org.ikasan.connector.ftp.net
Class FileTransferProtocolClient
- java.lang.Object
-
- org.ikasan.connector.ftp.net.FileTransferProtocolClient
-
- All Implemented Interfaces:
org.ikasan.connector.base.command.TransactionalResource,org.ikasan.connector.basefiletransfer.net.FileTransferClient,FileTransferProtocol
public class FileTransferProtocolClient extends java.lang.Object implements FileTransferProtocol
This class provides the basic functionality of an FTP client based on Apache's commons-net library. Some of the basic functionality is wrapped to provide
TODO This has a good deal of similar code to SFTP client, might be able to get some common code out of thatFileTransferProtocolClientspecific exceptions, or to provide the functionality required by a framework component.- Author:
- Ikasan Development Team
-
-
Constructor Summary
Constructors Constructor Description FileTransferProtocolClient(boolean active, java.lang.String remoteHostname, java.lang.String localHost, java.lang.Integer maxRetryAttempts, java.lang.String password, java.lang.Integer remotePort, java.lang.String username, java.lang.String systemKey, java.lang.Integer connectionTimeout, java.lang.Integer soTimeout, java.lang.Integer dataTimeout)Constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcd(java.lang.String targetPath)voidconnect()Connect to the FTP servervoiddeleteRemoteDirectory(java.lang.String directoryPath, boolean recurse)voiddeleteRemoteFile(java.lang.String filename)voiddisconnect()DisconnectvoidechoConfig()Method used to log the configuration information used to initialise the client.voidensureConnection()org.ikasan.connector.basefiletransfer.net.BaseFileTransferMappedRecordget(java.lang.String filePath)voidget(java.lang.String filePath, java.io.OutputStream outputStream)OutputStream is closed by the callervoidget(java.lang.String filePath, java.io.OutputStream outputStream, int resume, long offset)org.ikasan.connector.basefiletransfer.net.BaseFileTransferMappedRecordget(org.ikasan.connector.basefiletransfer.net.ClientListEntry clientListEntry)java.io.InputStreamgetAsInputStream(java.lang.String filePath)java.io.InputStreamgetContentAsStream(org.ikasan.connector.basefiletransfer.net.ClientListEntry entry)booleanisConnected()Method that tests if the underlying library is valid and connected.voidlogin()login to the FTP serverjava.util.List<org.ikasan.connector.basefiletransfer.net.ClientListEntry>ls(java.lang.String path)Method used to get a list of all files and directories in the target path including the "." and ".." directories.voidmkdir(java.lang.String newPath)Utility method formkdir(String newDirPath, boolean force)that defaults theforceparameter totrue.voidput(java.lang.String name, byte[] content)voidputWithOutputStream(java.lang.String fileName, java.io.InputStream inputStream)FTP Put using an output stream form an input stream.java.lang.Stringpwd()voidrename(java.lang.String currentPath, java.lang.String newPath)voidvalidateConstructorArgs()All constructor arguments are essential, so use this method to validate them before attempting connection
-
-
-
Constructor Detail
-
FileTransferProtocolClient
public FileTransferProtocolClient(boolean active, java.lang.String remoteHostname, java.lang.String localHost, java.lang.Integer maxRetryAttempts, java.lang.String password, java.lang.Integer remotePort, java.lang.String username, java.lang.String systemKey, java.lang.Integer connectionTimeout, java.lang.Integer soTimeout, java.lang.Integer dataTimeout)Constructor- Parameters:
active- Whether we are active or passive moderemoteHostname- The remote hostnamelocalHost- the local hostmaxRetryAttempts- The maximum amount of retriespassword- The password to connect withremotePort- The remote port to connect tousername- The usernamesystemKey- The system keyconnectionTimeout- connection timeoutsoTimeout- Socket timeout in ms after getting a connectiondataTimeout- Data connection timeout in ms after opening a socket
-
-
Method Detail
-
validateConstructorArgs
public void validateConstructorArgs() throws org.ikasan.connector.basefiletransfer.net.ClientInitialisationExceptionAll constructor arguments are essential, so use this method to validate them before attempting connection- Specified by:
validateConstructorArgsin interfaceFileTransferProtocol- Throws:
org.ikasan.connector.basefiletransfer.net.ClientInitialisationException- if any of the required parameters are invalid
-
connect
public void connect() throws org.ikasan.connector.basefiletransfer.net.ClientConnectionExceptionConnect to the FTP server- Specified by:
connectin interfaceFileTransferProtocol- Throws:
org.ikasan.connector.basefiletransfer.net.ClientConnectionException- Exception thrown when we can't connect
-
login
public void login() throws org.ikasan.connector.basefiletransfer.net.ClientConnectionExceptionlogin to the FTP server- Specified by:
loginin interfaceFileTransferProtocol- Throws:
org.ikasan.connector.basefiletransfer.net.ClientConnectionException- Exception thrown when we can't connect
-
isConnected
public boolean isConnected()
Method that tests if the underlying library is valid and connected.- Specified by:
isConnectedin interfaceFileTransferProtocol- Returns:
trueif fully connected,falseotherwise
-
disconnect
public void disconnect()
Disconnect- Specified by:
disconnectin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient
-
echoConfig
public void echoConfig()
Method used to log the configuration information used to initialise the client.- Specified by:
echoConfigin interfaceFileTransferProtocol
-
ensureConnection
public void ensureConnection() throws javax.resource.ResourceException- Specified by:
ensureConnectionin interfaceorg.ikasan.connector.base.command.TransactionalResource- Throws:
javax.resource.ResourceException
-
cd
public void cd(java.lang.String targetPath) throws org.ikasan.connector.basefiletransfer.net.ClientCommandCdException- Specified by:
cdin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandCdException
-
deleteRemoteDirectory
public void deleteRemoteDirectory(java.lang.String directoryPath, boolean recurse) throws org.ikasan.connector.basefiletransfer.net.ClientException, org.ikasan.connector.basefiletransfer.net.ClientCommandLsException- Specified by:
deleteRemoteDirectoryin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientExceptionorg.ikasan.connector.basefiletransfer.net.ClientCommandLsException
-
deleteRemoteFile
public void deleteRemoteFile(java.lang.String filename) throws org.ikasan.connector.basefiletransfer.net.ClientException- Specified by:
deleteRemoteFilein interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientException
-
get
public org.ikasan.connector.basefiletransfer.net.BaseFileTransferMappedRecord get(org.ikasan.connector.basefiletransfer.net.ClientListEntry clientListEntry) throws org.ikasan.connector.basefiletransfer.net.ClientCommandGetException- Specified by:
getin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandGetException
-
get
public org.ikasan.connector.basefiletransfer.net.BaseFileTransferMappedRecord get(java.lang.String filePath) throws org.ikasan.connector.basefiletransfer.net.ClientCommandGetException- Specified by:
getin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandGetException
-
get
public void get(java.lang.String filePath, java.io.OutputStream outputStream) throws org.ikasan.connector.basefiletransfer.net.ClientCommandGetExceptionOutputStream is closed by the caller- Specified by:
getin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Parameters:
filePath- The path to the file that we're gettingoutputStream- The stream we're getting the file with- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandGetException- Exception if we could not get the file
-
get
public void get(java.lang.String filePath, java.io.OutputStream outputStream, int resume, long offset) throws org.ikasan.connector.basefiletransfer.net.ClientCommandGetException- Specified by:
getin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandGetException
-
getAsInputStream
public java.io.InputStream getAsInputStream(java.lang.String filePath) throws org.ikasan.connector.basefiletransfer.net.ClientCommandGetException- Specified by:
getAsInputStreamin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandGetException
-
getContentAsStream
public java.io.InputStream getContentAsStream(org.ikasan.connector.basefiletransfer.net.ClientListEntry entry) throws org.ikasan.connector.basefiletransfer.net.ClientCommandGetException- Specified by:
getContentAsStreamin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandGetException
-
ls
public java.util.List<org.ikasan.connector.basefiletransfer.net.ClientListEntry> ls(java.lang.String path) throws org.ikasan.connector.basefiletransfer.net.ClientCommandLsException, java.net.URISyntaxExceptionMethod used to get a list of all files and directories in the target path including the "." and ".." directories.- Specified by:
lsin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Parameters:
path- The (directory) path to list.- Returns:
- A
ClientListEntrytypedList - Throws:
java.net.URISyntaxException- If a malformedURIis createdorg.ikasan.connector.basefiletransfer.net.ClientCommandLsException- If the directory listing fails (i.e. path not a directory or path not found)
-
put
public void put(java.lang.String name, byte[] content) throws org.ikasan.connector.basefiletransfer.net.ClientCommandPutException- Specified by:
putin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandPutException
-
putWithOutputStream
public void putWithOutputStream(java.lang.String fileName, java.io.InputStream inputStream) throws org.ikasan.connector.basefiletransfer.net.ClientCommandPutException, org.ikasan.connector.basefiletransfer.net.ClientCommandLsException, org.ikasan.connector.basefiletransfer.net.ClientCommandMkdirExceptionFTP Put using an output stream form an input stream.- Specified by:
putWithOutputStreamin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Parameters:
fileName- Name of the file we're puttinginputStream- Stream we're putting the file with- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandPutException- Exception if we can't putorg.ikasan.connector.basefiletransfer.net.ClientCommandLsException- Exception if we can't lista directoryorg.ikasan.connector.basefiletransfer.net.ClientCommandMkdirException- Exception if we can't make a directory
-
pwd
public java.lang.String pwd() throws org.ikasan.connector.basefiletransfer.net.ClientCommandPwdException- Specified by:
pwdin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandPwdException
-
rename
public void rename(java.lang.String currentPath, java.lang.String newPath) throws org.ikasan.connector.basefiletransfer.net.ClientCommandRenameException- Specified by:
renamein interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandRenameException
-
mkdir
public void mkdir(java.lang.String newPath) throws org.ikasan.connector.basefiletransfer.net.ClientCommandMkdirExceptionUtility method formkdir(String newDirPath, boolean force)that defaults theforceparameter totrue.- Specified by:
mkdirin interfaceorg.ikasan.connector.basefiletransfer.net.FileTransferClient- Parameters:
newPath- The new path to create- Throws:
org.ikasan.connector.basefiletransfer.net.ClientCommandMkdirException- Exception if we can't make a directory
-
-