Interface SftpEventListener

  • All Superinterfaces:
    java.util.EventListener, SshdEventListener
    All Known Implementing Classes:
    AbstractSftpEventListenerAdapter

    public interface SftpEventListener
    extends SshdEventListener
    Can be used register for SFTP events. Note: it does not expose the entire set of available SFTP commands and responses (e.g., no reports for initialization, extensions, parameters re-negotiation, etc...);
    • Method Summary

      All Methods Static Methods Instance Methods Default Methods 
      Modifier and Type Method Description
      default void blocked​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, long length, int mask, java.lang.Throwable thrown)
      Called after blocking a file section
      default void blocking​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, long length, int mask)
      Called prior to blocking a file section
      default void closed​(ServerSession session, java.lang.String remoteHandle, Handle localHandle, java.lang.Throwable thrown)
      Specified file / directory has been closed
      default void closing​(ServerSession session, java.lang.String remoteHandle, Handle localHandle)
      Specified file / directory about to be closed
      default void created​(ServerSession session, java.nio.file.Path path, java.util.Map<java.lang.String,​?> attrs, java.lang.Throwable thrown)
      Called after creating a directory
      default void creating​(ServerSession session, java.nio.file.Path path, java.util.Map<java.lang.String,​?> attrs)
      Called prior to creating a directory
      default void destroying​(ServerSession session)
      Called when subsystem is destroyed since it was closed
      default void exiting​(ServerSession session, Handle handle)
      Called when subsystem is exiting due to being destroyed
      default void initialized​(ServerSession session, int version)
      Called when the SFTP protocol has been initialized
      default void linked​(ServerSession session, java.nio.file.Path source, java.nio.file.Path target, boolean symLink, java.lang.Throwable thrown)
      Called after creating a link
      default void linking​(ServerSession session, java.nio.file.Path source, java.nio.file.Path target, boolean symLink)
      Called prior to creating a link
      default void modifiedAttributes​(ServerSession session, java.nio.file.Path path, java.util.Map<java.lang.String,​?> attrs, java.lang.Throwable thrown)
      Called after modifying the attributes of a file / directory
      default void modifyingAttributes​(ServerSession session, java.nio.file.Path path, java.util.Map<java.lang.String,​?> attrs)
      Called prior to modifying the attributes of a file / directory
      default void moved​(ServerSession session, java.nio.file.Path srcPath, java.nio.file.Path dstPath, java.util.Collection<java.nio.file.CopyOption> opts, java.lang.Throwable thrown)
      Called after renaming a file / directory
      default void moving​(ServerSession session, java.nio.file.Path srcPath, java.nio.file.Path dstPath, java.util.Collection<java.nio.file.CopyOption> opts)
      Called prior to renaming a file / directory
      default void open​(ServerSession session, java.lang.String remoteHandle, Handle localHandle)
      Specified file / directory has been opened
      default void openFailed​(ServerSession session, java.lang.String remotePath, java.nio.file.Path localPath, boolean isDirectory, java.lang.Throwable thrown)
      Specified file / directory could not be opened - Note: this call may occur without opening(ServerSession, String, Handle) ever having been called
      default void opening​(ServerSession session, java.lang.String remoteHandle, Handle localHandle)
      Specified file / directory is being opened
      default void read​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, byte[] data, int dataOffset, int dataLen, int readLen, java.lang.Throwable thrown)
      Result of reading from a file
      default void readEntries​(ServerSession session, java.lang.String remoteHandle, DirectoryHandle localHandle, java.util.Map<java.lang.String,​java.nio.file.Path> entries)
      Result of reading entries from a directory - Note: it may be a partial result if the directory contains more entries than can be accommodated in the response
      default void reading​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, byte[] data, int dataOffset, int dataLen)
      Preparing to read from a file
      default void readingEntries​(ServerSession session, java.lang.String remoteHandle, DirectoryHandle localHandle)
      About to read entries from a directory - Note: might not be the 1st time it is called for the directory in case several iterations are required in order to go through all the entries in the directory
      default void received​(ServerSession session, int type, int id)
      Called when a SFTP request has been received before it is processed.
      default void receivedExtension​(ServerSession session, java.lang.String extension, int id)
      Called when a SFTP extension request SftpConstants.SSH_FXP_EXTENDED has been received before it is processed.
      default void removed​(ServerSession session, java.nio.file.Path path, boolean isDirectory, java.lang.Throwable thrown)
      Called after a file has been removed
      default void removing​(ServerSession session, java.nio.file.Path path, boolean isDirectory)
      Called prior to removing a file
      default void unblocked​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, long length, java.lang.Throwable thrown)
      Called prior to un-blocking a file section
      default void unblocking​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, long length)
      Called prior to un-blocking a file section
      static <L extends SftpEventListener>
      L
      validateListener​(L listener)  
      default void writing​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, byte[] data, int dataOffset, int dataLen)
      Preparing to write to file
      default void written​(ServerSession session, java.lang.String remoteHandle, FileHandle localHandle, long offset, byte[] data, int dataOffset, int dataLen, java.lang.Throwable thrown)
      Finished to writing to file
    • Method Detail

      • received

        default void received​(ServerSession session,
                              int type,
                              int id)
                       throws java.io.IOException
        Called when a SFTP request has been received before it is processed.
        Parameters:
        session - The ServerSession through which the request was received
        type - The request type; one of the SSH_FXP_* constants from SftpConstants
        id - The id received with the request
        Throws:
        java.io.IOException - If the request shall generate an error response. Throwing an exception for type = SftpConstants.SSH_FXP_INIT closes the session.
      • receivedExtension

        default void receivedExtension​(ServerSession session,
                                       java.lang.String extension,
                                       int id)
                                throws java.io.IOException
        Called when a SFTP extension request SftpConstants.SSH_FXP_EXTENDED has been received before it is processed.
        Parameters:
        session - The ServerSession through which the request was received
        extension - The extension request received; one of the SSH_EXT_* constants from SftpConstants
        id - The id received with the request
        Throws:
        java.io.IOException - If the request shall generate an error response.
      • initialized

        default void initialized​(ServerSession session,
                                 int version)
                          throws java.io.IOException
        Called when the SFTP protocol has been initialized
        Parameters:
        session - The ServerSession through which the request was handled
        version - The negotiated SFTP version
        Throws:
        java.io.IOException - If failed to handle the call
      • exiting

        default void exiting​(ServerSession session,
                             Handle handle)
                      throws java.io.IOException
        Called when subsystem is exiting due to being destroyed
        Parameters:
        session - The associated ServerSession
        handle - The file / directory Handle being closed due to the exit
        Throws:
        java.io.IOException - If failed to handle the call
      • destroying

        default void destroying​(ServerSession session)
                         throws java.io.IOException
        Called when subsystem is destroyed since it was closed
        Parameters:
        session - The associated ServerSession
        Throws:
        java.io.IOException - If failed to handle the call
      • opening

        default void opening​(ServerSession session,
                             java.lang.String remoteHandle,
                             Handle localHandle)
                      throws java.io.IOException
        Specified file / directory is being opened
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file / directory
        localHandle - The associated file / directory Handle
        Throws:
        java.io.IOException - If failed to handle the call
      • open

        default void open​(ServerSession session,
                          java.lang.String remoteHandle,
                          Handle localHandle)
                   throws java.io.IOException
        Specified file / directory has been opened
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file / directory
        localHandle - The associated file / directory Handle
        Throws:
        java.io.IOException - If failed to handle the call
      • openFailed

        default void openFailed​(ServerSession session,
                                java.lang.String remotePath,
                                java.nio.file.Path localPath,
                                boolean isDirectory,
                                java.lang.Throwable thrown)
                         throws java.io.IOException
        Specified file / directory could not be opened - Note: this call may occur without opening(ServerSession, String, Handle) ever having been called
        Parameters:
        session - The ServerSession through which the request was handled
        remotePath - The path that was specified in the command
        localPath - The matching resolved local path
        isDirectory - Whether this was a folder or a file
        thrown - Non-null reason for the failure
        Throws:
        java.io.IOException - If failed to handle the call
      • readingEntries

        default void readingEntries​(ServerSession session,
                                    java.lang.String remoteHandle,
                                    DirectoryHandle localHandle)
                             throws java.io.IOException
        About to read entries from a directory - Note: might not be the 1st time it is called for the directory in case several iterations are required in order to go through all the entries in the directory
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the directory
        localHandle - The associated DirectoryHandle
        Throws:
        java.io.IOException - If failed to handle the call
        See Also:
        readEntries
      • readEntries

        default void readEntries​(ServerSession session,
                                 java.lang.String remoteHandle,
                                 DirectoryHandle localHandle,
                                 java.util.Map<java.lang.String,​java.nio.file.Path> entries)
                          throws java.io.IOException
        Result of reading entries from a directory - Note: it may be a partial result if the directory contains more entries than can be accommodated in the response
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the directory
        localHandle - The associated DirectoryHandle
        entries - A Map of the listed entries - key = short name, value = Path of the sub-entry
        Throws:
        java.io.IOException - If failed to handle the call
      • reading

        default void reading​(ServerSession session,
                             java.lang.String remoteHandle,
                             FileHandle localHandle,
                             long offset,
                             byte[] data,
                             int dataOffset,
                             int dataLen)
                      throws java.io.IOException
        Preparing to read from a file
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file from which to read
        data - Buffer holding the read data
        dataOffset - Offset of read data in buffer
        dataLen - Requested read length
        Throws:
        java.io.IOException - If failed to handle the call
      • read

        default void read​(ServerSession session,
                          java.lang.String remoteHandle,
                          FileHandle localHandle,
                          long offset,
                          byte[] data,
                          int dataOffset,
                          int dataLen,
                          int readLen,
                          java.lang.Throwable thrown)
                   throws java.io.IOException
        Result of reading from a file
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file from which to read
        data - Buffer holding the read data
        dataOffset - Offset of read data in buffer
        dataLen - Requested read length
        readLen - Actual read length - negative if thrown exception provided
        thrown - Non-null if read failed due to this exception
        Throws:
        java.io.IOException - If failed to handle the call
      • writing

        default void writing​(ServerSession session,
                             java.lang.String remoteHandle,
                             FileHandle localHandle,
                             long offset,
                             byte[] data,
                             int dataOffset,
                             int dataLen)
                      throws java.io.IOException
        Preparing to write to file
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file to which to write
        data - Buffer holding the written data
        dataOffset - Offset of write data in buffer
        dataLen - Requested write length
        Throws:
        java.io.IOException - If failed to handle the call
      • written

        default void written​(ServerSession session,
                             java.lang.String remoteHandle,
                             FileHandle localHandle,
                             long offset,
                             byte[] data,
                             int dataOffset,
                             int dataLen,
                             java.lang.Throwable thrown)
                      throws java.io.IOException
        Finished to writing to file
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file to which to write
        data - Buffer holding the written data
        dataOffset - Offset of write data in buffer
        dataLen - Requested write length
        thrown - The reason for failing to write - null if successful
        Throws:
        java.io.IOException - If failed to handle the call
      • blocking

        default void blocking​(ServerSession session,
                              java.lang.String remoteHandle,
                              FileHandle localHandle,
                              long offset,
                              long length,
                              int mask)
                       throws java.io.IOException
        Called prior to blocking a file section
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file for locking
        length - Section size for locking
        mask - Lock mask flags - see SSH_FXP_BLOCK message
        Throws:
        java.io.IOException - If failed to handle the call
        See Also:
        blocked(ServerSession, String, FileHandle, long, long, int, Throwable)
      • blocked

        default void blocked​(ServerSession session,
                             java.lang.String remoteHandle,
                             FileHandle localHandle,
                             long offset,
                             long length,
                             int mask,
                             java.lang.Throwable thrown)
                      throws java.io.IOException
        Called after blocking a file section
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file for locking
        length - Section size for locking
        mask - Lock mask flags - see SSH_FXP_BLOCK message
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • unblocking

        default void unblocking​(ServerSession session,
                                java.lang.String remoteHandle,
                                FileHandle localHandle,
                                long offset,
                                long length)
                         throws java.io.IOException
        Called prior to un-blocking a file section
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file for un-locking
        length - Section size for un-locking
        Throws:
        java.io.IOException - If failed to handle the call
      • unblocked

        default void unblocked​(ServerSession session,
                               java.lang.String remoteHandle,
                               FileHandle localHandle,
                               long offset,
                               long length,
                               java.lang.Throwable thrown)
                        throws java.io.IOException
        Called prior to un-blocking a file section
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file
        localHandle - The associated FileHandle
        offset - Offset in file for un-locking
        length - Section size for un-locking
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • closing

        default void closing​(ServerSession session,
                             java.lang.String remoteHandle,
                             Handle localHandle)
                      throws java.io.IOException
        Specified file / directory about to be closed
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file / directory
        localHandle - The associated file / directory Handle
        Throws:
        java.io.IOException - If failed to handle the call
      • closed

        default void closed​(ServerSession session,
                            java.lang.String remoteHandle,
                            Handle localHandle,
                            java.lang.Throwable thrown)
                     throws java.io.IOException
        Specified file / directory has been closed
        Parameters:
        session - The ServerSession through which the request was handled
        remoteHandle - The (opaque) assigned handle for the file / directory
        localHandle - The associated file / directory Handle
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • creating

        default void creating​(ServerSession session,
                              java.nio.file.Path path,
                              java.util.Map<java.lang.String,​?> attrs)
                       throws java.io.IOException
        Called prior to creating a directory
        Parameters:
        session - The ServerSession through which the request was handled
        path - Directory Path to be created
        attrs - Requested associated attributes to set
        Throws:
        java.io.IOException - If failed to handle the call
        See Also:
        created(ServerSession, Path, Map, Throwable)
      • created

        default void created​(ServerSession session,
                             java.nio.file.Path path,
                             java.util.Map<java.lang.String,​?> attrs,
                             java.lang.Throwable thrown)
                      throws java.io.IOException
        Called after creating a directory
        Parameters:
        session - The ServerSession through which the request was handled
        path - Directory Path to be created
        attrs - Requested associated attributes to set
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • moving

        default void moving​(ServerSession session,
                            java.nio.file.Path srcPath,
                            java.nio.file.Path dstPath,
                            java.util.Collection<java.nio.file.CopyOption> opts)
                     throws java.io.IOException
        Called prior to renaming a file / directory
        Parameters:
        session - The ServerSession through which the request was handled
        srcPath - The source Path
        dstPath - The target Path
        opts - The resolved renaming options
        Throws:
        java.io.IOException - If failed to handle the call
        See Also:
        moved(ServerSession, Path, Path, Collection, Throwable)
      • moved

        default void moved​(ServerSession session,
                           java.nio.file.Path srcPath,
                           java.nio.file.Path dstPath,
                           java.util.Collection<java.nio.file.CopyOption> opts,
                           java.lang.Throwable thrown)
                    throws java.io.IOException
        Called after renaming a file / directory
        Parameters:
        session - The ServerSession through which the request was handled
        srcPath - The source Path
        dstPath - The target Path
        opts - The resolved renaming options
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • removing

        default void removing​(ServerSession session,
                              java.nio.file.Path path,
                              boolean isDirectory)
                       throws java.io.IOException
        Called prior to removing a file
        Parameters:
        session - The ServerSession through which the request was handled
        path - The Path about to be removed
        isDirectory - Whether this is a folder or a file
        Throws:
        java.io.IOException - If failed to handle the call
        See Also:
        removed(ServerSession, Path, boolean, Throwable)
      • removed

        default void removed​(ServerSession session,
                             java.nio.file.Path path,
                             boolean isDirectory,
                             java.lang.Throwable thrown)
                      throws java.io.IOException
        Called after a file has been removed
        Parameters:
        session - The ServerSession through which the request was handled
        path - The Path to be removed
        isDirectory - Whether this was a folder or a file
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • linking

        default void linking​(ServerSession session,
                             java.nio.file.Path source,
                             java.nio.file.Path target,
                             boolean symLink)
                      throws java.io.IOException
        Called prior to creating a link
        Parameters:
        session - The ServerSession through which the request was handled
        source - The source Path
        target - The target Path
        symLink - true = symbolic link
        Throws:
        java.io.IOException - If failed to handle the call
        See Also:
        linked(ServerSession, Path, Path, boolean, Throwable)
      • linked

        default void linked​(ServerSession session,
                            java.nio.file.Path source,
                            java.nio.file.Path target,
                            boolean symLink,
                            java.lang.Throwable thrown)
                     throws java.io.IOException
        Called after creating a link
        Parameters:
        session - The ServerSession through which the request was handled
        source - The source Path
        target - The target Path
        symLink - true = symbolic link
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • modifyingAttributes

        default void modifyingAttributes​(ServerSession session,
                                         java.nio.file.Path path,
                                         java.util.Map<java.lang.String,​?> attrs)
                                  throws java.io.IOException
        Called prior to modifying the attributes of a file / directory
        Parameters:
        session - The ServerSession through which the request was handled
        path - The file / directory Path to be modified
        attrs - The attributes Map - names and values depend on the O/S, view, type, etc...
        Throws:
        java.io.IOException - If failed to handle the call
        See Also:
        modifiedAttributes(ServerSession, Path, Map, Throwable)
      • modifiedAttributes

        default void modifiedAttributes​(ServerSession session,
                                        java.nio.file.Path path,
                                        java.util.Map<java.lang.String,​?> attrs,
                                        java.lang.Throwable thrown)
                                 throws java.io.IOException
        Called after modifying the attributes of a file / directory
        Parameters:
        session - The ServerSession through which the request was handled
        path - The file / directory Path to be modified
        attrs - The attributes Map - names and values depend on the O/S, view, type, etc...
        thrown - If not-null then the reason for the failure to execute
        Throws:
        java.io.IOException - If failed to handle the call
      • validateListener

        static <L extends SftpEventListener> L validateListener​(L listener)