Class AbstractRemoteFileOutboundGateway<F>

java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractMessageHandler
org.springframework.integration.handler.AbstractMessageProducingHandler
org.springframework.integration.handler.AbstractReplyProducingMessageHandler
org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway<F>
Type Parameters:
F - the file type.
All Implemented Interfaces:
org.reactivestreams.Subscriber<org.springframework.messaging.Message<?>>, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware, org.springframework.core.Ordered, org.springframework.integration.context.ExpressionCapable, org.springframework.integration.context.Orderable, org.springframework.integration.core.MessageProducer, org.springframework.integration.handler.HeaderPropagationAware, org.springframework.integration.IntegrationPattern, org.springframework.integration.support.context.NamedComponent, org.springframework.integration.support.management.IntegrationManagement, org.springframework.integration.support.management.TrackableComponent, org.springframework.messaging.MessageHandler, reactor.core.CoreSubscriber<org.springframework.messaging.Message<?>>

public abstract class AbstractRemoteFileOutboundGateway<F>
extends org.springframework.integration.handler.AbstractReplyProducingMessageHandler
Base class for Outbound Gateways that perform remote file operations.
Since:
2.1
  • Nested Class Summary

    Nested Classes 
    Modifier and Type Class Description
    static class  AbstractRemoteFileOutboundGateway.Command
    Enumeration of commands supported by the gateways.
    static class  AbstractRemoteFileOutboundGateway.Option
    Enumeration of options supported by various commands.

    Nested classes/interfaces inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

    org.springframework.integration.handler.AbstractReplyProducingMessageHandler.RequestHandler

    Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement

    org.springframework.integration.support.management.IntegrationManagement.ManagementOverrides
  • Field Summary

    Fields inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler

    messagingTemplate

    Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport

    EXPRESSION_PARSER, logger

    Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement

    METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME

    Fields inherited from interface org.springframework.core.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Constructor Summary

    Constructors 
    Constructor Description
    AbstractRemoteFileOutboundGateway​(RemoteFileTemplate<F> remoteFileTemplate, java.lang.String command, java.lang.String expression)
    Construct an instance with the supplied remote file template, a command ('ls', 'get' etc), and an expression to determine the filename.
    AbstractRemoteFileOutboundGateway​(RemoteFileTemplate<F> remoteFileTemplate, AbstractRemoteFileOutboundGateway.Command command, java.lang.String expressionArg)
    Construct an instance with the supplied remote file template, a command ('ls', 'get' etc), and an expression to determine the filename.
    AbstractRemoteFileOutboundGateway​(RemoteFileTemplate<F> remoteFileTemplate, MessageSessionCallback<F,​?> messageSessionCallback)
    Construct an instance with the supplied remote file template and callback for performing operations on the session.
    AbstractRemoteFileOutboundGateway​(SessionFactory<F> sessionFactory, java.lang.String command, java.lang.String expression)
    Construct an instance with the supplied session factory, a command ('ls', 'get' etc), and an expression to determine the filename.
    AbstractRemoteFileOutboundGateway​(SessionFactory<F> sessionFactory, AbstractRemoteFileOutboundGateway.Command command, java.lang.String expression)
    Construct an instance with the supplied session factory, a command ('ls', 'get' etc), and an expression to determine the filename.
    AbstractRemoteFileOutboundGateway​(SessionFactory<F> sessionFactory, MessageSessionCallback<F,​?> messageSessionCallback)
    Construct an instance using the provided session factory and callback for performing operations on the session.
  • Method Summary

    Modifier and Type Method Description
    protected abstract java.util.List<AbstractFileInfo<F>> asFileInfoList​(java.util.Collection<F> files)  
    protected void assertRemoteFileTemplateMutability​(java.lang.String propertyName)  
    protected void doChmod​(RemoteFileOperations<F> remoteFileOperations, java.lang.String path, int chmodToSet)
    Set the mode on the remote file after transfer; the default implementation does nothing.
    protected void doInit()  
    protected abstract F enhanceNameWithSubDirectory​(F file, java.lang.String directory)  
    protected F filterFile​(F file)  
    protected java.util.List<F> filterFiles​(F[] files)  
    protected java.util.List<java.io.File> filterMputFiles​(java.io.File[] files)  
    protected java.io.File get​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteDir, java.lang.String remoteFilePath, java.lang.String remoteFilename, F fileInfoParam)
    Copy a remote file to the configured local directory.
    protected abstract java.lang.String getFilename​(F file)  
    protected abstract java.lang.String getFilename​(AbstractFileInfo<F> file)  
    protected abstract long getModified​(F file)  
    protected java.lang.String getRemoteFilename​(java.lang.String remoteFilePath)  
    protected RemoteFileTemplate<F> getRemoteFileTemplate()  
    protected java.lang.Object handleRequestMessage​(org.springframework.messaging.Message<?> requestMessage)  
    boolean isChmodCapable()  
    protected abstract boolean isDirectory​(F file)  
    protected abstract boolean isLink​(F file)  
    protected java.util.List<?> ls​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String dir)
    List remote files to local representation.
    protected java.util.List<java.io.File> mGet​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteDirectory, java.lang.String remoteFilename)  
    protected java.util.List<java.lang.String> mPut​(org.springframework.messaging.Message<?> message, Session<F> session, java.io.File localDir)
    Put files from the provided directory to the remote server recursively.
    protected boolean mv​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteFilePath, java.lang.String remoteFileNewPath)
    Move one remote path to another.
    protected java.util.List<java.lang.String> nlst​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String dir)
    List remote files names for the provided directory.
    protected void purgeDots​(java.util.List<F> lsFiles)  
    protected void purgeLinks​(java.util.List<F> lsFiles)  
    protected java.lang.String put​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String subDirectory)
    Put the file based on the message to the remote server.
    protected void remoteFileTemplateExplicitlySet​(boolean remoteFileTemplateExplicitlySet)  
    protected boolean rm​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteFilePath)
    Perform remote delete for the provided path.
    void setAutoCreateDirectory​(boolean autoCreateDirectory)
    Determine whether the remote directory should automatically be created when sending files to the remote system.
    void setAutoCreateLocalDirectory​(boolean autoCreateLocalDirectory)
    A boolean flag to identify if local directory should be created automatically.
    void setCharset​(java.lang.String charset)
    Set the charset to use when converting String payloads to bytes as the content of the remote file.
    void setChmod​(int chmod)
    Set the file permissions after uploading, e.g.
    void setChmodOctal​(java.lang.String chmod)
    String setter for Spring XML convenience.
    void setFileExistsMode​(FileExistsMode fileExistsMode)
    Determine the action to take when using GET and MGET operations when the file already exists locally, or PUT and MPUT when the file exists on the remote system.
    void setFileNameExpression​(org.springframework.expression.Expression fileNameExpression)
    Set the file name expression to determine the full path to the remote file.
    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 setFilter​(FileListFilter<F> filter)
    Set a FileListFilter to filter remote files.
    void setLocalDirectory​(java.io.File localDirectory)
    Specify a directory path where remote files will be transferred to.
    void setLocalDirectoryExpression​(org.springframework.expression.Expression localDirectoryExpression)
    Specify a SpEL expression to evaluate the directory path to which remote files will be transferred.
    void setLocalDirectoryExpressionString​(java.lang.String localDirectoryExpression)
    Specify a SpEL expression to evaluate the directory path to which remote files will be transferred.
    void setLocalFilenameGeneratorExpression​(org.springframework.expression.Expression localFilenameGeneratorExpression)
    Specify a SpEL expression for local files renaming after downloading.
    void setLocalFilenameGeneratorExpressionString​(java.lang.String localFilenameGeneratorExpression)
    Specify a SpEL expression for local files renaming after downloading.
    void setMputFilter​(FileListFilter<java.io.File> filter)
    A FileListFilter that runs against the local file system view when using MPUT command.
    void setOption​(AbstractRemoteFileOutboundGateway.Option... options)
    Specify the array of options for various gateway commands.
    void setOptions​(java.lang.String options)
    Specify the options for various gateway commands as a space-delimited string.
    void setRemoteDirectoryExpression​(org.springframework.expression.Expression remoteDirectoryExpression)
    Set the remote directory expression used to determine the remote directory to which files will be sent.
    void setRemoteFileSeparator​(java.lang.String remoteFileSeparator)
    Set the file separator when dealing with remote files; default '/'.
    void setRenameExpression​(org.springframework.expression.Expression renameExpression)
    Specify a SpEL expression for files renaming during transfer.
    void setRenameExpressionString​(java.lang.String renameExpression)
    Specify a SpEL expression for files renaming during transfer.
    void setTemporaryFileSuffix​(java.lang.String temporaryFileSuffix)
    Set the temporary suffix to use when transferring files to the remote system.
    void setTemporaryRemoteDirectoryExpression​(org.springframework.expression.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.

    Methods inherited from class org.springframework.integration.handler.AbstractReplyProducingMessageHandler

    doInvokeAdvisedRequestHandler, getBeanClassLoader, getIntegrationPatternType, getRequiresReply, handleMessageInternal, hasAdviceChain, onInit, setAdviceChain, setBeanClassLoader, setRequiresReply

    Methods inherited from class org.springframework.integration.handler.AbstractMessageProducingHandler

    addNotPropagatedHeaders, createOutputMessage, getNotPropagatedHeaders, getOutputChannel, isAsync, messageBuilderForReply, produceOutput, resolveErrorChannel, sendErrorMessage, sendOutput, sendOutputs, setAsync, setNotPropagatedHeaders, setOutputChannel, setOutputChannelName, setSendTimeout, shouldCopyRequestHeaders, shouldSplitOutput, updateNotPropagatedHeaders

    Methods inherited from class org.springframework.integration.handler.AbstractMessageHandler

    handleMessage, onComplete, onError, onNext, onSubscribe

    Methods inherited from class org.springframework.integration.handler.MessageHandlerSupport

    buildSendTimer, destroy, getComponentType, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack

    Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport

    afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface reactor.core.CoreSubscriber

    currentContext

    Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement

    getThisAs

    Methods inherited from interface org.springframework.integration.support.context.NamedComponent

    getBeanName, getComponentName
  • Constructor Details

    • AbstractRemoteFileOutboundGateway

      public AbstractRemoteFileOutboundGateway​(SessionFactory<F> sessionFactory, MessageSessionCallback<F,​?> messageSessionCallback)
      Construct an instance using the provided session factory and callback for performing operations on the session.
      Parameters:
      sessionFactory - the session factory.
      messageSessionCallback - the callback.
    • AbstractRemoteFileOutboundGateway

      public AbstractRemoteFileOutboundGateway​(RemoteFileTemplate<F> remoteFileTemplate, MessageSessionCallback<F,​?> messageSessionCallback)
      Construct an instance with the supplied remote file template and callback for performing operations on the session.
      Parameters:
      remoteFileTemplate - the remote file template.
      messageSessionCallback - the callback.
    • AbstractRemoteFileOutboundGateway

      public AbstractRemoteFileOutboundGateway​(SessionFactory<F> sessionFactory, java.lang.String command, @Nullable java.lang.String expression)
      Construct an instance with the supplied session factory, a command ('ls', 'get' etc), and an expression to determine the filename.
      Parameters:
      sessionFactory - the session factory.
      command - the command.
      expression - the filename expression.
    • AbstractRemoteFileOutboundGateway

      public AbstractRemoteFileOutboundGateway​(SessionFactory<F> sessionFactory, AbstractRemoteFileOutboundGateway.Command command, @Nullable java.lang.String expression)
      Construct an instance with the supplied session factory, a command ('ls', 'get' etc), and an expression to determine the filename.
      Parameters:
      sessionFactory - the session factory.
      command - the command.
      expression - the filename expression.
    • AbstractRemoteFileOutboundGateway

      public AbstractRemoteFileOutboundGateway​(RemoteFileTemplate<F> remoteFileTemplate, java.lang.String command, @Nullable java.lang.String expression)
      Construct an instance with the supplied remote file template, a command ('ls', 'get' etc), and an expression to determine the filename.
      Parameters:
      remoteFileTemplate - the remote file template.
      command - the command.
      expression - the filename expression.
    • AbstractRemoteFileOutboundGateway

      public AbstractRemoteFileOutboundGateway​(RemoteFileTemplate<F> remoteFileTemplate, AbstractRemoteFileOutboundGateway.Command command, @Nullable java.lang.String expressionArg)
      Construct an instance with the supplied remote file template, a command ('ls', 'get' etc), and an expression to determine the filename.
      Parameters:
      remoteFileTemplate - the remote file template.
      command - the command.
      expressionArg - the filename expression.
  • Method Details

    • remoteFileTemplateExplicitlySet

      protected final void remoteFileTemplateExplicitlySet​(boolean remoteFileTemplateExplicitlySet)
    • assertRemoteFileTemplateMutability

      protected void assertRemoteFileTemplateMutability​(java.lang.String propertyName)
    • setOptions

      public void setOptions​(java.lang.String options)
      Specify the options for various gateway commands as a space-delimited string.
      Parameters:
      options - the options to set
      See Also:
      AbstractRemoteFileOutboundGateway.Option
    • setOption

      public void setOption​(AbstractRemoteFileOutboundGateway.Option... options)
      Specify the array of options for various gateway commands.
      Parameters:
      options - the AbstractRemoteFileOutboundGateway.Option array to use.
      Since:
      5.0
      See Also:
      AbstractRemoteFileOutboundGateway.Option
    • setRemoteFileSeparator

      public void setRemoteFileSeparator​(java.lang.String remoteFileSeparator)
      Set the file separator when dealing with remote files; default '/'.
      Parameters:
      remoteFileSeparator - the separator.
      See Also:
      RemoteFileTemplate.setRemoteFileSeparator(String)
    • setLocalDirectory

      public void setLocalDirectory​(java.io.File localDirectory)
      Specify a directory path where remote files will be transferred to.
      Parameters:
      localDirectory - the localDirectory to set
    • setLocalDirectoryExpression

      public void setLocalDirectoryExpression​(org.springframework.expression.Expression localDirectoryExpression)
      Specify a SpEL expression to evaluate the directory path to which remote files will be transferred.
      Parameters:
      localDirectoryExpression - the SpEL to determine the local directory.
    • setLocalDirectoryExpressionString

      public void setLocalDirectoryExpressionString​(java.lang.String localDirectoryExpression)
      Specify a SpEL expression to evaluate the directory path to which remote files will be transferred.
      Parameters:
      localDirectoryExpression - the SpEL to determine the local directory.
      Since:
      5.0
    • setAutoCreateLocalDirectory

      public void setAutoCreateLocalDirectory​(boolean autoCreateLocalDirectory)
      A boolean flag to identify if local directory should be created automatically. Defaults to true.
      Parameters:
      autoCreateLocalDirectory - the autoCreateLocalDirectory to set
    • setTemporaryFileSuffix

      public void setTemporaryFileSuffix​(java.lang.String temporaryFileSuffix)
      Set the temporary suffix to use when transferring files to the remote system. Default .writing.
      Parameters:
      temporaryFileSuffix - the temporaryFileSuffix to set
      See Also:
      RemoteFileTemplate.setTemporaryFileSuffix(String)
    • 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.
      Since:
      5.2
      See Also:
      RemoteFileTemplate.setAutoCreateDirectory(boolean)
    • setRemoteDirectoryExpression

      public void setRemoteDirectoryExpression​(org.springframework.expression.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.
      Since:
      5.2
      See Also:
      RemoteFileTemplate.setRemoteDirectoryExpression(org.springframework.expression.Expression)
    • setTemporaryRemoteDirectoryExpression

      public void setTemporaryRemoteDirectoryExpression​(org.springframework.expression.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.
      Since:
      5.2
      See Also:
      RemoteFileTemplate.setTemporaryRemoteDirectoryExpression(org.springframework.expression.Expression)
    • setFileNameExpression

      public void setFileNameExpression​(org.springframework.expression.Expression fileNameExpression)
      Set the file name expression to determine the full path to the remote file.
      Parameters:
      fileNameExpression - the file name expression.
      Since:
      5.2
      See Also:
      RemoteFileTemplate.setFileNameExpression(org.springframework.expression.Expression)
    • 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.
      Since:
      5.2
      See Also:
      RemoteFileTemplate.setUseTemporaryFileName(boolean)
    • 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.
      Parameters:
      fileNameGenerator - the file name generator.
      Since:
      5.2
      See Also:
      RemoteFileTemplate.setFileNameGenerator(org.springframework.integration.file.FileNameGenerator)
    • setCharset

      public void setCharset​(java.lang.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.
      Since:
      5.2
      See Also:
      RemoteFileTemplate.setCharset(java.lang.String)
    • setFilter

      public void setFilter​(FileListFilter<F> filter)
      Set a FileListFilter to filter remote files.
      Parameters:
      filter - the filter to set
    • setMputFilter

      public void setMputFilter​(FileListFilter<java.io.File> filter)
      A FileListFilter that runs against the local file system view when using MPUT command.
      Parameters:
      filter - the filter to set
    • setRenameExpression

      public void setRenameExpression​(org.springframework.expression.Expression renameExpression)
      Specify a SpEL expression for files renaming during transfer.
      Parameters:
      renameExpression - the expression to use.
      Since:
      4.3
    • setRenameExpressionString

      public void setRenameExpressionString​(java.lang.String renameExpression)
      Specify a SpEL expression for files renaming during transfer.
      Parameters:
      renameExpression - the String in SpEL syntax.
      Since:
      4.3
    • setLocalFilenameGeneratorExpression

      public void setLocalFilenameGeneratorExpression​(org.springframework.expression.Expression localFilenameGeneratorExpression)
      Specify a SpEL expression for local files renaming after downloading.
      Parameters:
      localFilenameGeneratorExpression - the expression to use.
      Since:
      3.0
    • setLocalFilenameGeneratorExpressionString

      public void setLocalFilenameGeneratorExpressionString​(java.lang.String localFilenameGeneratorExpression)
      Specify a SpEL expression for local files renaming after downloading.
      Parameters:
      localFilenameGeneratorExpression - the String in SpEL syntax.
      Since:
      4.3
    • setFileExistsMode

      public void setFileExistsMode​(FileExistsMode fileExistsMode)
      Determine the action to take when using GET and MGET operations when the file already exists locally, or PUT and MPUT when the file exists on the remote system.
      Parameters:
      fileExistsMode - the fileExistsMode to set.
      Since:
      4.2
    • setChmodOctal

      public void setChmodOctal​(java.lang.String chmod)
      String setter for Spring XML convenience.
      Parameters:
      chmod - permissions as an octal string e.g "600";
      Since:
      4.3
      See Also:
      setChmod(int)
    • setChmod

      public void setChmod​(int chmod)
      Set the file permissions after uploading, e.g. 0600 for owner read/write.
      Parameters:
      chmod - the permissions.
      Since:
      4.3
    • isChmodCapable

      public boolean isChmodCapable()
    • getRemoteFileTemplate

      protected final RemoteFileTemplate<F> getRemoteFileTemplate()
    • doInit

      protected void doInit()
      Overrides:
      doInit in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
    • handleRequestMessage

      protected java.lang.Object handleRequestMessage​(org.springframework.messaging.Message<?> requestMessage)
      Specified by:
      handleRequestMessage in class org.springframework.integration.handler.AbstractReplyProducingMessageHandler
    • nlst

      protected java.util.List<java.lang.String> nlst​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String dir) throws java.io.IOException
      List remote files names for the provided directory. The message can be consulted for some context related to the current request; isn't used in the default implementation.
      Parameters:
      message - the message related to the current request
      session - the session to perform list file names command
      dir - the remote directory to list file names
      Returns:
      the list of file/directory names in the provided dir
      Throws:
      java.io.IOException - the IO exception during performing remote command
      Since:
      5.0
    • rm

      protected boolean rm​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteFilePath) throws java.io.IOException
      Perform remote delete for the provided path. The message can be consulted to determine some context; isn't used in the default implementation.
      Parameters:
      message - the request message related to the path to remove
      session - the remote protocol session to perform remove command
      remoteFilePath - the remote path to remove
      Returns:
      true or false as a result of the remote removal
      Throws:
      java.io.IOException - the IO exception during performing remote command
      Since:
      5.0
    • mv

      protected boolean mv​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteFilePath, java.lang.String remoteFileNewPath) throws java.io.IOException
      Move one remote path to another. The message can be consulted to determine some context; isn't used in the default implementation.
      Parameters:
      message - the request message related to this move command
      session - the remote protocol session to perform move command
      remoteFilePath - the source remote path
      remoteFileNewPath - the target remote path
      Returns:
      true or false as a result of the operation
      Throws:
      java.io.IOException - the IO exception during performing remote command
      Since:
      5.0
    • put

      protected java.lang.String put​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String subDirectory)
      Put the file based on the message to the remote server. The message can be consulted to determine some context. The session argument isn't used in the default implementation.
      Parameters:
      message - the request message related to this put command
      session - the remote protocol session related to this invocation context
      subDirectory - the target sub directory to put
      Returns:
      The remote path, or null if no local file was found.
      Since:
      5.0
    • doChmod

      protected void doChmod​(RemoteFileOperations<F> remoteFileOperations, java.lang.String path, int chmodToSet)
      Set the mode on the remote file after transfer; the default implementation does nothing.
      Parameters:
      remoteFileOperations - the remote file template.
      path - the path.
      chmodToSet - the chmod to set.
      Since:
      4.3
    • mPut

      protected java.util.List<java.lang.String> mPut​(org.springframework.messaging.Message<?> message, Session<F> session, java.io.File localDir)
      Put files from the provided directory to the remote server recursively. The message can be consulted to determine some context. The session argument isn't used in the default implementation.
      Parameters:
      message - the request message related to this mPut command
      session - the remote protocol session for this invocation context
      localDir - the local directory to mput to the server
      Returns:
      The list of remote paths for sent files
      Since:
      5.0
    • ls

      protected java.util.List<?> ls​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String dir) throws java.io.IOException
      List remote files to local representation. The message can be consulted for some context for the current request; isn't used in the default implementation.
      Parameters:
      message - the message related to the list request
      session - the session to perform list command
      dir - the remote directory to list content
      Returns:
      the list of remote files
      Throws:
      java.io.IOException - the IO exception during performing remote command
    • filterFiles

      protected final java.util.List<F> filterFiles​(F[] files)
    • filterFile

      protected final F filterFile​(F file)
    • filterMputFiles

      protected final java.util.List<java.io.File> filterMputFiles​(java.io.File[] files)
    • purgeLinks

      protected void purgeLinks​(java.util.List<F> lsFiles)
    • purgeDots

      protected void purgeDots​(java.util.List<F> lsFiles)
    • get

      protected java.io.File get​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteDir, java.lang.String remoteFilePath, java.lang.String remoteFilename, F fileInfoParam) throws java.io.IOException
      Copy a remote file to the configured local directory.
      Parameters:
      message - the message.
      session - the session.
      remoteDir - the remote directory.
      remoteFilePath - the remote file path.
      remoteFilename - the remote file name.
      fileInfoParam - the remote file info; if null we will execute an 'ls' command first.
      Returns:
      The file.
      Throws:
      java.io.IOException - Any IOException.
    • mGet

      protected java.util.List<java.io.File> mGet​(org.springframework.messaging.Message<?> message, Session<F> session, java.lang.String remoteDirectory, java.lang.String remoteFilename) throws java.io.IOException
      Throws:
      java.io.IOException
    • getRemoteFilename

      protected java.lang.String getRemoteFilename​(java.lang.String remoteFilePath)
      Parameters:
      remoteFilePath - The remote file path.
      Returns:
      The remote file name.
    • isDirectory

      protected abstract boolean isDirectory​(F file)
    • isLink

      protected abstract boolean isLink​(F file)
    • getFilename

      protected abstract java.lang.String getFilename​(F file)
    • getFilename

      protected abstract java.lang.String getFilename​(AbstractFileInfo<F> file)
    • getModified

      protected abstract long getModified​(F file)
    • asFileInfoList

      protected abstract java.util.List<AbstractFileInfo<F>> asFileInfoList​(java.util.Collection<F> files)
    • enhanceNameWithSubDirectory

      protected abstract F enhanceNameWithSubDirectory​(F file, java.lang.String directory)