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.
    • shouldMarkSessionAsDirty

      protected boolean shouldMarkSessionAsDirty(Exception ex)
      Determine whether Session.dirty() should be called in the execute(SessionCallback) when an exception is thrown from the callback. By default, this method returns true. 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 if Session must be marked as dirty.
      Returns:
      true if Session.dirty() should be called.
      Since:
      6.0.8
    • 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.