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
  • Field Details

  • Constructor Details

    • RemoteFileTemplate

      public RemoteFileTemplate(SessionFactory<F> sessionFactory)
      Construct a RemoteFileTemplate with the supplied session factory.
      Parameters:
      sessionFactory - the session factory.
  • Method Details

    • getSessionFactory

      public SessionFactory<F> 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

      public void setRemoteFileSeparator(String remoteFileSeparator)
      Set the file separator when dealing with remote files; default '/'.
      Parameters:
      remoteFileSeparator - the separator.
    • getRemoteFileSeparator

      public final String getRemoteFileSeparator()
      Returns:
      the remote file separator.
    • setRemoteDirectoryExpression

      public void setRemoteDirectoryExpression(Expression remoteDirectoryExpression)
      Set the remote directory expression used to determine the remote directory to which files will be sent.
      Parameters:
      remoteDirectoryExpression - the remote directory expression.
    • getDirectoryExpressionProcessor

      @Nullable public MessageProcessor<String> getDirectoryExpressionProcessor()
      Return the processor for remote directory SpEL expression if any.
      Returns:
      the processor for remote directory SpEL expression.
    • setTemporaryRemoteDirectoryExpression

      public void setTemporaryRemoteDirectoryExpression(Expression temporaryRemoteDirectoryExpression)
      Set a temporary remote directory expression; used when transferring files to the remote system. After a successful transfer the file is renamed using the remoteDirectoryExpression.
      Parameters:
      temporaryRemoteDirectoryExpression - the temporary remote directory expression.
    • setFileNameExpression

      public void setFileNameExpression(Expression fileNameExpression)
      Set the file name expression to determine the full path to the remote file when retrieving a file using the get(Message, InputStreamCallback) method, with the message being the root object of the evaluation.
      Parameters:
      fileNameExpression - the file name expression.
    • getTemporaryFileSuffix

      public String 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

      public 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. Default DefaultFileNameGenerator.
      Parameters:
      fileNameGenerator - the file name generator.
    • setCharset

      public void setCharset(String charset)
      Set the charset to use when converting String payloads to bytes as the content of the remote file. Default UTF-8.
      Parameters:
      charset - the charset.
    • setTemporaryFileSuffix

      public void setTemporaryFileSuffix(String temporaryFileSuffix)
      Set the temporary suffix to use when transferring files to the remote system. Default ".writing".
      Parameters:
      temporaryFileSuffix - the suffix
      See Also:
    • setBeanFactory

      public void setBeanFactory(BeanFactory beanFactory) throws BeansException
      Specified by:
      setBeanFactory in interface BeanFactoryAware
      Throws:
      BeansException
    • afterPropertiesSet

      public void afterPropertiesSet()
      Specified by:
      afterPropertiesSet in interface InitializingBean
    • append

      public String append(Message<?> message)
      Description copied from interface: RemoteFileOperations
      Send a file to a remote server, based on information in a message, appending.
      Specified by:
      append in interface RemoteFileOperations<F>
      Parameters:
      message - The message.
      Returns:
      The remote path, or null if no local file was found.
    • append

      public String append(Message<?> message, String subDirectory)
      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 interface RemoteFileOperations<F>
      Parameters:
      message - The message.
      subDirectory - The sub directory.
      Returns:
      The remote path, or null if no local file was found.
    • send

      public String send(Message<?> message, FileExistsMode... mode)
      Description copied from interface: RemoteFileOperations
      Send a file to a remote server, based on information in a message.
      Specified by:
      send in interface RemoteFileOperations<F>
      Parameters:
      message - The message.
      mode - See FileExistsMode (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

      public String send(Message<?> message, String subDirectory, FileExistsMode... mode)
      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 interface RemoteFileOperations<F>
      Parameters:
      message - The message.
      subDirectory - The sub directory.
      mode - See FileExistsMode (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

      public boolean exists(String path)
      Description copied from interface: RemoteFileOperations
      Check if a file exists on the remote server.
      Specified by:
      exists in interface RemoteFileOperations<F>
      Parameters:
      path - The full path to the file.
      Returns:
      true when the file exists.
    • remove

      public boolean remove(String path)
      Description copied from interface: RemoteFileOperations
      Remove a remote file.
      Specified by:
      remove in interface RemoteFileOperations<F>
      Parameters:
      path - The full path to the file.
      Returns:
      true when successful.
    • rename

      public void rename(String fromPath, String toPath)
      Description copied from interface: RemoteFileOperations
      Rename a remote file, creating directories if needed.
      Specified by:
      rename in interface RemoteFileOperations<F>
      Parameters:
      fromPath - The current path.
      toPath - The new path.
    • get

      public boolean get(Message<?> message, InputStreamCallback callback)
      Description copied from interface: RemoteFileOperations
      Retrieve a remote file as an InputStream, based on information in a message.
      Specified by:
      get in interface RemoteFileOperations<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

      public boolean get(String remotePath, InputStreamCallback callback)
      Description copied from interface: RemoteFileOperations
      Retrieve a remote file as an InputStream.
      Specified by:
      get in interface RemoteFileOperations<F>
      Parameters:
      remotePath - The remote path to the file.
      callback - the callback.
      Returns:
      true if the operation was successful.
    • list

      public F[] list(String path)
      Description copied from interface: RemoteFileOperations
      List the files at the remote path.
      Specified by:
      list in interface RemoteFileOperations<F>
      Parameters:
      path - the path.
      Returns:
      the list.
    • getSession

      public Session<F> 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 interface RemoteFileOperations<F>
      Returns:
      a session.
    • execute

      public <T> T execute(SessionCallback<F,T> callback)
      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 interface RemoteFileOperations<F>
      Type Parameters:
      T - The type returned by SessionCallback.doInSession(org.springframework.integration.file.remote.session.Session).
      Parameters:
      callback - the SessionCallback.
      Returns:
      The result of the callback method.
    • invoke

      public <T> T invoke(RemoteFileOperations.OperationsCallback<F,T> action)
      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 interface RemoteFileOperations<F>
      Type Parameters:
      T - the return type.
      Parameters:
      action - the call back.
      Returns:
      the result from the RemoteFileOperations.OperationsCallback.doInOperations(RemoteFileOperations)
    • executeWithClient

      public <T, C> T executeWithClient(ClientCallback<C,T> callback)
      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 interface RemoteFileOperations<F>
      Type Parameters:
      T - The type returned by ClientCallback.doWithClient(Object).
      C - The type of the underlying client object.
      Parameters:
      callback - the ClientCallback.
      Returns:
      The result of the callback method.