Class RemoteFileTemplate<F>
java.lang.Object
org.springframework.integration.file.remote.RemoteFileTemplate<F>
- Type Parameters:
F
- the file type.
- All Implemented Interfaces:
Aware
,BeanFactoryAware
,InitializingBean
,RemoteFileOperations<F>
- Direct Known Subclasses:
FtpRemoteFileTemplate
,SftpRemoteFileTemplate
,SmbRemoteFileTemplate
public class RemoteFileTemplate<F>
extends Object
implements RemoteFileOperations<F>, InitializingBean, BeanFactoryAware
A general abstraction for dealing with remote files.
- Since:
- 3.0
- Author:
- Iwein Fuld, Mark Fisher, Josh Long, Oleg Zhurakousky, David Turanski, Gary Russell, Artem Bilan, Alen Turkovic
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.springframework.integration.file.remote.RemoteFileOperations
RemoteFileOperations.OperationsCallback<F,
T> -
Field Summary
Modifier and TypeFieldDescriptionprotected final Log
protected final SessionFactory<F>
TheSessionFactory
for acquiring remote file Sessions. -
Constructor Summary
ConstructorDescriptionRemoteFileTemplate
(SessionFactory<F> sessionFactory) Construct aRemoteFileTemplate
with the supplied session factory. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Send a file to a remote server, based on information in a message, appending.Send a file to a remote server, based on information in a message, appending.<T> T
execute
(SessionCallback<F, T> callback) Execute the callback's doInSession method after obtaining a session.<T,
C> T executeWithClient
(ClientCallback<C, T> callback) Execute the callback's doWithClient method after obtaining a session's client, providing access to low level methods.boolean
Check if a file exists on the remote server.boolean
get
(String remotePath, InputStreamCallback callback) Retrieve a remote file as an InputStream.boolean
get
(Message<?> message, InputStreamCallback callback) Retrieve a remote file as an InputStream, based on information in a message.Return the processor for remote directory SpEL expression if any.final String
Obtain a raw Session object.<T> T
invoke
(RemoteFileOperations.OperationsCallback<F, T> action) Invoke the callback and run all operations on the template argument in a dedicated thread-bound session and reliably close the it afterwards.boolean
F[]
List the files at the remote path.boolean
Remove a remote file.void
Rename a remote file, creating directories if needed.send
(Message<?> message, String subDirectory, FileExistsMode... mode) Send a file to a remote server, based on information in a message.send
(Message<?> message, FileExistsMode... mode) Send a file to a remote server, based on information in a message.void
setAutoCreateDirectory
(boolean autoCreateDirectory) Determine whether the remote directory should automatically be created when sending files to the remote system.void
setBeanFactory
(BeanFactory beanFactory) void
setCharset
(String charset) Set the charset to use when converting String payloads to bytes as the content of the remote file.void
setFileNameExpression
(Expression fileNameExpression) Set the file name expression to determine the full path to the remote file when retrieving a file using theget(Message, InputStreamCallback)
method, with the message being the root object of the evaluation.void
setFileNameGenerator
(FileNameGenerator fileNameGenerator) Set the file name generator used to generate the remote filename to be used when transferring files to the remote system.void
setRemoteDirectoryExpression
(Expression remoteDirectoryExpression) Set the remote directory expression used to determine the remote directory to which files will be sent.void
setRemoteFileSeparator
(String remoteFileSeparator) Set the file separator when dealing with remote files; default '/'.void
setTemporaryFileSuffix
(String temporaryFileSuffix) Set the temporary suffix to use when transferring files to the remote system.void
setTemporaryRemoteDirectoryExpression
(Expression temporaryRemoteDirectoryExpression) Set a temporary remote directory expression; used when transferring files to the remote system.void
setUseTemporaryFileName
(boolean useTemporaryFileName) Set whether a temporary file name is used when sending files to the remote system.protected boolean
Determine whetherSession.dirty()
should be called in theexecute(SessionCallback)
when an exception is thrown from the callback.
-
Field Details
-
logger
-
sessionFactory
TheSessionFactory
for acquiring remote file Sessions.
-
-
Constructor Details
-
RemoteFileTemplate
Construct aRemoteFileTemplate
with the supplied session factory.- Parameters:
sessionFactory
- the session factory.
-
-
Method Details
-
getSessionFactory
- Returns:
- this template's
SessionFactory
. - Since:
- 4.2
-
setAutoCreateDirectory
public void setAutoCreateDirectory(boolean autoCreateDirectory) Determine whether the remote directory should automatically be created when sending files to the remote system.- Parameters:
autoCreateDirectory
- true to create the directory.
-
setRemoteFileSeparator
Set the file separator when dealing with remote files; default '/'.- Parameters:
remoteFileSeparator
- the separator.
-
getRemoteFileSeparator
- Returns:
- the remote file separator.
-
setRemoteDirectoryExpression
Set the remote directory expression used to determine the remote directory to which files will be sent.- Parameters:
remoteDirectoryExpression
- the remote directory expression.
-
getDirectoryExpressionProcessor
Return the processor for remote directory SpEL expression if any.- Returns:
- the processor for remote directory SpEL expression.
-
setTemporaryRemoteDirectoryExpression
Set a temporary remote directory expression; used when transferring files to the remote system. After a successful transfer the file is renamed using theremoteDirectoryExpression
.- Parameters:
temporaryRemoteDirectoryExpression
- the temporary remote directory expression.
-
setFileNameExpression
Set the file name expression to determine the full path to the remote file when retrieving a file using theget(Message, InputStreamCallback)
method, with the message being the root object of the evaluation.- Parameters:
fileNameExpression
- the file name expression.
-
getTemporaryFileSuffix
- Returns:
- the temporary file suffix.
-
isUseTemporaryFileName
public boolean isUseTemporaryFileName()- Returns:
- whether a temporary file name is used when sending files to the remote system.
-
setUseTemporaryFileName
public void setUseTemporaryFileName(boolean useTemporaryFileName) Set whether a temporary file name is used when sending files to the remote system.- Parameters:
useTemporaryFileName
- true to use a temporary file name.- See Also:
-
setFileNameGenerator
Set the file name generator used to generate the remote filename to be used when transferring files to the remote system. DefaultDefaultFileNameGenerator
.- Parameters:
fileNameGenerator
- the file name generator.
-
setCharset
Set the charset to use when converting String payloads to bytes as the content of the remote file. DefaultUTF-8
.- Parameters:
charset
- the charset.
-
setTemporaryFileSuffix
Set the temporary suffix to use when transferring files to the remote system. Default ".writing".- Parameters:
temporaryFileSuffix
- the suffix- See Also:
-
setBeanFactory
- Specified by:
setBeanFactory
in interfaceBeanFactoryAware
- Throws:
BeansException
-
afterPropertiesSet
public void afterPropertiesSet()- Specified by:
afterPropertiesSet
in interfaceInitializingBean
-
append
Description copied from interface:RemoteFileOperations
Send a file to a remote server, based on information in a message, appending.- Specified by:
append
in interfaceRemoteFileOperations<F>
- Parameters:
message
- The message.- Returns:
- The remote path, or null if no local file was found.
-
append
Description copied from interface:RemoteFileOperations
Send a file to a remote server, based on information in a message, appending. The subDirectory is appended to the remote directory evaluated from the message.- Specified by:
append
in interfaceRemoteFileOperations<F>
- Parameters:
message
- The message.subDirectory
- The sub directory.- Returns:
- The remote path, or null if no local file was found.
-
send
Description copied from interface:RemoteFileOperations
Send a file to a remote server, based on information in a message.- Specified by:
send
in interfaceRemoteFileOperations<F>
- Parameters:
message
- The message.mode
- SeeFileExistsMode
(optional; default REPLACE). A vararg is used to make the argument optional; only the first will be used if more than one is provided.- Returns:
- The remote path, or null if no local file was found.
-
send
Description copied from interface:RemoteFileOperations
Send a file to a remote server, based on information in a message. The subDirectory is appended to the remote directory evaluated from the message.- Specified by:
send
in interfaceRemoteFileOperations<F>
- Parameters:
message
- The message.subDirectory
- The sub directory.mode
- SeeFileExistsMode
(optional; default REPLACE). A vararg is used to make the argument optional; only the first will be used if more than one is provided.- Returns:
- The remote path, or null if no local file was found.
-
exists
Description copied from interface:RemoteFileOperations
Check if a file exists on the remote server.- Specified by:
exists
in interfaceRemoteFileOperations<F>
- Parameters:
path
- The full path to the file.- Returns:
- true when the file exists.
-
remove
Description copied from interface:RemoteFileOperations
Remove a remote file.- Specified by:
remove
in interfaceRemoteFileOperations<F>
- Parameters:
path
- The full path to the file.- Returns:
- true when successful.
-
rename
Description copied from interface:RemoteFileOperations
Rename a remote file, creating directories if needed.- Specified by:
rename
in interfaceRemoteFileOperations<F>
- Parameters:
fromPath
- The current path.toPath
- The new path.
-
get
Description copied from interface:RemoteFileOperations
Retrieve a remote file as an InputStream, based on information in a message.- Specified by:
get
in interfaceRemoteFileOperations<F>
- Parameters:
message
- The message which will be evaluated to generate the remote path.callback
- the callback.- Returns:
- true if the operation was successful.
- See Also:
-
get
Description copied from interface:RemoteFileOperations
Retrieve a remote file as an InputStream.- Specified by:
get
in interfaceRemoteFileOperations<F>
- Parameters:
remotePath
- The remote path to the file.callback
- the callback.- Returns:
- true if the operation was successful.
-
list
Description copied from interface:RemoteFileOperations
List the files at the remote path.- Specified by:
list
in interfaceRemoteFileOperations<F>
- Parameters:
path
- the path.- Returns:
- the list.
-
getSession
Description copied from interface:RemoteFileOperations
Obtain a raw Session object. User must close the session when it is no longer needed.- Specified by:
getSession
in interfaceRemoteFileOperations<F>
- Returns:
- a session.
-
execute
Description copied from interface:RemoteFileOperations
Execute the callback's doInSession method after obtaining a session. Reliably closes the session when the method exits.- Specified by:
execute
in interfaceRemoteFileOperations<F>
- Type Parameters:
T
- The type returned bySessionCallback.doInSession(org.springframework.integration.file.remote.session.Session)
.- Parameters:
callback
- the SessionCallback.- Returns:
- The result of the callback method.
-
shouldMarkSessionAsDirty
Determine whetherSession.dirty()
should be called in theexecute(SessionCallback)
when an exception is thrown from the callback. By default, this method returnstrue
. Remote file protocol extensions can override this method to provide a specific strategy against the thrown exception, e.g.file not found
error is not a signal that session is broken.- Parameters:
ex
- the exception to check ifSession
must be marked as dirty.- Returns:
- true if
Session.dirty()
should be called. - Since:
- 6.0.8
-
invoke
Description copied from interface:RemoteFileOperations
Invoke the callback and run all operations on the template argument in a dedicated thread-bound session and reliably close the it afterwards.- Specified by:
invoke
in interfaceRemoteFileOperations<F>
- Type Parameters:
T
- the return type.- Parameters:
action
- the call back.- Returns:
- the result from the
RemoteFileOperations.OperationsCallback.doInOperations(RemoteFileOperations)
-
executeWithClient
Description copied from interface:RemoteFileOperations
Execute the callback's doWithClient method after obtaining a session's client, providing access to low level methods. Reliably closes the session when the method exits.- Specified by:
executeWithClient
in interfaceRemoteFileOperations<F>
- Type Parameters:
T
- The type returned byClientCallback.doWithClient(Object)
.C
- The type of the underlying client object.- Parameters:
callback
- the ClientCallback.- Returns:
- The result of the callback method.
-