Package org.ikasan.connector.ftp.net
Class FileTransferProtocolSSLClient
- java.lang.Object
-
- org.ikasan.connector.ftp.net.FileTransferProtocolSSLClient
-
- All Implemented Interfaces:
org.ikasan.connector.base.command.TransactionalResource,org.ikasan.connector.basefiletransfer.net.FileTransferClient,FileTransferProtocol
public class FileTransferProtocolSSLClient extends java.lang.Object implements FileTransferProtocol
This class provides the basic functionality of an FTP SSL 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 FileTransferProtocolSSLClient(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, boolean FTPS, java.lang.Integer ftpsPort, java.lang.String ftpsProtocol, boolean ftpsIsImplicit, java.lang.String ftpsKeyStoreFilePath, java.lang.String ftpsKeyStoreFilePassword)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
-
FileTransferProtocolSSLClient
public FileTransferProtocolSSLClient(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, boolean FTPS, java.lang.Integer ftpsPort, java.lang.String ftpsProtocol, boolean ftpsIsImplicit, java.lang.String ftpsKeyStoreFilePath, java.lang.String ftpsKeyStoreFilePassword)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 socketFTPS- Whether use FTPS or not, default falseftpsPort- FTPS portftpsProtocol- FTPS protocol - SSL TSLftpsIsImplicit- FTPS implicit or explicitftpsKeyStoreFilePassword- keyStore passwordftpsKeyStoreFilePath- keyStore of FTPSClient for client authentication
-
-
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
-
-