public interface SftpFileSystemAccessor
| Modifier and Type | Field and Description |
|---|---|
static SftpFileSystemAccessor |
DEFAULT |
static boolean |
DEFAULT_AUTO_SYNC_FILE_ON_CLOSE
Default value for "sftp-auto-fsync-on-close" if none set
|
static java.util.List<java.lang.String> |
DEFAULT_UNIX_VIEW |
static java.util.NavigableMap<java.lang.String,FileInfoExtractor<?>> |
FILEATTRS_RESOLVERS
A case insensitive
NavigableMap of FileInfoExtractors to be used to complete attributes
that are deemed important enough to warrant an extra effort if not accessible via the file system attributes
views |
static java.lang.String |
PROP_AUTO_SYNC_FILE_ON_CLOSE
Whether to invoke
FileChannel.force(boolean) on files open for write when closing |
| Modifier and Type | Method and Description |
|---|---|
default void |
applyExtensionFileAttributes(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.util.Map<java.lang.String,byte[]> extensions,
java.nio.file.LinkOption... options)
Invoked in order to allow processing of custom file attributes
|
default void |
closeDirectory(SftpSubsystemProxy subsystem,
DirectoryHandle dirHandle,
java.nio.file.Path dir,
java.lang.String handle,
java.nio.file.DirectoryStream<java.nio.file.Path> ds)
Called when a directory stream is no longer required
|
default void |
closeFile(SftpSubsystemProxy subsystem,
FileHandle fileHandle,
java.nio.file.Path file,
java.lang.String handle,
java.nio.channels.Channel channel,
java.util.Set<? extends java.nio.file.OpenOption> options)
Called to inform the accessor that it should close the file
|
default void |
copyFile(SftpSubsystemProxy subsystem,
java.nio.file.Path src,
java.nio.file.Path dst,
java.util.Collection<java.nio.file.CopyOption> opts) |
default void |
createDirectory(SftpSubsystemProxy subsystem,
java.nio.file.Path path) |
default void |
createLink(SftpSubsystemProxy subsystem,
java.nio.file.Path link,
java.nio.file.Path existing,
boolean symLink)
Invoked in order to create a link to a path
|
default java.nio.file.DirectoryStream<java.nio.file.Path> |
openDirectory(SftpSubsystemProxy subsystem,
DirectoryHandle dirHandle,
java.nio.file.Path dir,
java.lang.String handle)
Called when a new directory stream is requested
|
default java.nio.channels.SeekableByteChannel |
openFile(SftpSubsystemProxy subsystem,
FileHandle fileHandle,
java.nio.file.Path file,
java.lang.String handle,
java.util.Set<? extends java.nio.file.OpenOption> options,
java.nio.file.attribute.FileAttribute<?>... attrs)
Called whenever a new file is opened
|
default void |
putRemoteFileName(SftpSubsystemProxy subsystem,
java.nio.file.Path path,
Buffer buf,
java.lang.String name,
boolean shortName)
Invoked in order to encode the outgoing referenced file name/path
|
default java.util.Map<java.lang.String,?> |
readFileAttributes(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.lang.String view,
java.nio.file.LinkOption... options)
Invoked when required to retrieve file attributes for a specific file system view
|
default void |
removeFile(SftpSubsystemProxy subsystem,
java.nio.file.Path path,
boolean isDirectory) |
default void |
renameFile(SftpSubsystemProxy subsystem,
java.nio.file.Path oldPath,
java.nio.file.Path newPath,
java.util.Collection<java.nio.file.CopyOption> opts) |
default java.nio.file.LinkOption[] |
resolveFileAccessLinkOptions(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
int cmd,
java.lang.String extension,
boolean followLinks)
Invoked in order to determine the symbolic link follow options
|
default java.nio.file.attribute.UserPrincipal |
resolveFileOwner(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.nio.file.attribute.UserPrincipal name) |
default java.nio.file.attribute.GroupPrincipal |
resolveGroupOwner(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.nio.file.attribute.GroupPrincipal name) |
default java.lang.String |
resolveLinkTarget(SftpSubsystemProxy subsystem,
java.nio.file.Path link) |
default java.nio.file.Path |
resolveLocalFilePath(SftpSubsystemProxy subsystem,
java.nio.file.Path rootDir,
java.lang.String remotePath)
Invoked in order to resolve remote file paths reference by the client into ones accessible by the server
|
default java.util.NavigableMap<java.lang.String,java.lang.Object> |
resolveReportedFileAttributes(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
int flags,
java.util.NavigableMap<java.lang.String,java.lang.Object> attrs,
java.nio.file.LinkOption... options)
Invoked in order to allow intervention to the reported file attributes - e.g., add custom/extended properties
|
default void |
setFileAccessControl(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.util.List<java.nio.file.attribute.AclEntry> acl,
java.nio.file.LinkOption... options) |
default void |
setFileAttribute(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.lang.String view,
java.lang.String attribute,
java.lang.Object value,
java.nio.file.LinkOption... options)
Sets a view attribute for a local file
|
default void |
setFileOwner(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.security.Principal value,
java.nio.file.LinkOption... options) |
default void |
setFilePermissions(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.util.Set<java.nio.file.attribute.PosixFilePermission> perms,
java.nio.file.LinkOption... options) |
default void |
setGroupOwner(SftpSubsystemProxy subsystem,
java.nio.file.Path file,
java.security.Principal value,
java.nio.file.LinkOption... options) |
default void |
syncFileData(SftpSubsystemProxy subsystem,
FileHandle fileHandle,
java.nio.file.Path file,
java.lang.String handle,
java.nio.channels.Channel channel)
Called when file meta-data re-synchronization is required
|
default java.nio.channels.FileLock |
tryLock(SftpSubsystemProxy subsystem,
FileHandle fileHandle,
java.nio.file.Path file,
java.lang.String handle,
java.nio.channels.Channel channel,
long position,
long size,
boolean shared)
Called when locking a section of a file is requested
|
static final java.util.List<java.lang.String> DEFAULT_UNIX_VIEW
static final java.util.NavigableMap<java.lang.String,FileInfoExtractor<?>> FILEATTRS_RESOLVERS
NavigableMap of FileInfoExtractors to be used to complete attributes
that are deemed important enough to warrant an extra effort if not accessible via the file system attributes
viewsstatic final java.lang.String PROP_AUTO_SYNC_FILE_ON_CLOSE
FileChannel.force(boolean) on files open for write when closingstatic final boolean DEFAULT_AUTO_SYNC_FILE_ON_CLOSE
static final SftpFileSystemAccessor DEFAULT
default java.nio.file.Path resolveLocalFilePath(SftpSubsystemProxy subsystem, java.nio.file.Path rootDir, java.lang.String remotePath) throws java.io.IOException, java.nio.file.InvalidPathException
subsystem - The SFTP subsystem instance that manages the sessionrootDir - The default root directory used to resolve relative paths - a.k.a. the
chroot locationremotePath - The remote path - separated by '/'Pathjava.io.IOException - If failed to resolve the local pathjava.nio.file.InvalidPathException - If bad local path specificationSftpSubsystemEnvironment#getDefaultDirectory()default java.nio.file.LinkOption[] resolveFileAccessLinkOptions(SftpSubsystemProxy subsystem, java.nio.file.Path file, int cmd, java.lang.String extension, boolean followLinks) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfile - The referenced filecmd - The SFTP command that triggered this accessextension - The SFTP extension that triggered this access - non-empty only for {SSH_FXP_EXTENDED} commandfollowLinks - Whether to follow symbolic linksLinkOption-s to use - invokes IoUtils.getLinkOptions(boolean) by defaultjava.io.IOException - if failed to resolve the required optionsdefault java.util.NavigableMap<java.lang.String,java.lang.Object> resolveReportedFileAttributes(SftpSubsystemProxy subsystem, java.nio.file.Path file, int flags, java.util.NavigableMap<java.lang.String,java.lang.Object> attrs, java.nio.file.LinkOption... options) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfile - The referenced fileflags - A mask of the original required attributesattrs - The default resolved attributes mapoptions - The LinkOption-s that were used to access the file's attributesjava.io.IOException - If failed to resolve the attributesdefault void applyExtensionFileAttributes(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.util.Map<java.lang.String,byte[]> extensions, java.nio.file.LinkOption... options) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfile - The referenced fileextensions - The received extensions - may be null/emptyoptions - The LinkOption-s that were used to access the file's standard attributesjava.io.IOException - If failed to apply the attributesdefault void putRemoteFileName(SftpSubsystemProxy subsystem, java.nio.file.Path path, Buffer buf, java.lang.String name, boolean shortName) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionpath - The associated file Path - Note: might be a symbolic link containerbuf - The target Buffer for the encoded stringname - The string to sendshortName - If true then this is the "pure" file name/path, otherwise it also contains
user/group/size/last-modified-time/etc.java.io.IOException - If failed to resolve the remote namedefault java.nio.channels.SeekableByteChannel openFile(SftpSubsystemProxy subsystem, FileHandle fileHandle, java.nio.file.Path file, java.lang.String handle, java.util.Set<? extends java.nio.file.OpenOption> options, java.nio.file.attribute.FileAttribute<?>... attrs) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfileHandle - The FileHandle representing the created channel - may be null if not invoked
within the context of such a handle (special cases)file - The requested local file Path - same one returned by
resolveLocalFilePathhandle - The assigned file handle through which the remote peer references this file. May be
null/empty if the request is due to some internal functionality instead of due to
peer requesting a handle to a file.options - The requested OpenOptionsattrs - The requested FileAttributesSeekableByteChanneljava.io.IOException - If failed to opendefault java.nio.channels.FileLock tryLock(SftpSubsystemProxy subsystem, FileHandle fileHandle, java.nio.file.Path file, java.lang.String handle, java.nio.channels.Channel channel, long position, long size, boolean shared) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfileHandle - The FileHandle representing the created channelfile - The requested local file Path - same one returned by
resolveLocalFilePathhandle - The assigned file handle through which the remote peer references this filechannel - The original Channel that was returned by
openFile(SftpSubsystemProxy, FileHandle, Path, String, Set, FileAttribute...)position - The position at which the locked region is to start - must be non-negativesize - The size of the locked region; must be non-negative, and the sum
position + size must be non-negativeshared - true to request a shared lock, false to request an exclusive locknull if the lock could not be
acquired because another program holds an overlapping lockjava.io.IOException - If failed to honor the requestFileChannel.tryLock(long, long, boolean)default void syncFileData(SftpSubsystemProxy subsystem, FileHandle fileHandle, java.nio.file.Path file, java.lang.String handle, java.nio.channels.Channel channel) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfileHandle - The FileHandle representing the created channelfile - The requested local file Path - same one returned by
resolveLocalFilePathhandle - The assigned file handle through which the remote peer references this filechannel - The original Channel that was returned by
openFile(SftpSubsystemProxy, FileHandle, Path, String, Set, FileAttribute...)java.io.IOException - If failed to execute the requestFileChannel.force(boolean),
OpenSSH - section
10default void closeFile(SftpSubsystemProxy subsystem, FileHandle fileHandle, java.nio.file.Path file, java.lang.String handle, java.nio.channels.Channel channel, java.util.Set<? extends java.nio.file.OpenOption> options) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfileHandle - The FileHandle representing the created channel - may be null if not invoked
within the context of such a handle (special cases)file - The requested local file Path - same one returned by
resolveLocalFilePathhandle - The assigned file handle through which the remote peer references this filechannel - The original Channel that was returned by
openFile(SftpSubsystemProxy, FileHandle, Path, String, Set, FileAttribute...)options - The original options used to open the channeljava.io.IOException - If failed to execute the requestdefault java.nio.file.DirectoryStream<java.nio.file.Path> openDirectory(SftpSubsystemProxy subsystem, DirectoryHandle dirHandle, java.nio.file.Path dir, java.lang.String handle) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessiondirHandle - The DirectoryHandle representing the streamdir - The requested local directory Path - same one returned by
resolveLocalFilePathhandle - The assigned directory handle through which the remote peer references this directoryDirectoryStreamjava.io.IOException - If failed to opendefault void closeDirectory(SftpSubsystemProxy subsystem, DirectoryHandle dirHandle, java.nio.file.Path dir, java.lang.String handle, java.nio.file.DirectoryStream<java.nio.file.Path> ds) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessiondirHandle - The DirectoryHandle representing the stream - may be null if not invoked
within the context of such a handle (special cases)dir - The requested local directory Path - same one returned by
resolveLocalFilePathhandle - The assigned directory handle through which the remote peer references this directoryds - The disposed DirectoryStreamjava.io.IOException - If failed to opendefault java.util.Map<java.lang.String,?> readFileAttributes(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.lang.String view, java.nio.file.LinkOption... options) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfile - The requested local file Path - same one returned by
resolveLocalFilePathview - The required view nameoptions - The access LinkOption-sMap of all the attributes available for the file in the viewjava.io.IOException - If failed to read the attributesFiles.readAttributes(Path, String, LinkOption...)default void setFileAttribute(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.lang.String view, java.lang.String attribute, java.lang.Object value, java.nio.file.LinkOption... options) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionfile - The requested local file Path - same one returned by
resolveLocalFilePathview - The required view nameattribute - The attribute namevalue - The attribute valueoptions - The access LinkOption-sjava.io.IOException - If failed to set the attributedefault java.nio.file.attribute.UserPrincipal resolveFileOwner(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.nio.file.attribute.UserPrincipal name) throws java.io.IOException
java.io.IOExceptiondefault void setFileOwner(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.security.Principal value, java.nio.file.LinkOption... options) throws java.io.IOException
java.io.IOExceptiondefault java.nio.file.attribute.GroupPrincipal resolveGroupOwner(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.nio.file.attribute.GroupPrincipal name) throws java.io.IOException
java.io.IOExceptiondefault void setGroupOwner(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.security.Principal value, java.nio.file.LinkOption... options) throws java.io.IOException
java.io.IOExceptiondefault void setFilePermissions(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.util.Set<java.nio.file.attribute.PosixFilePermission> perms, java.nio.file.LinkOption... options) throws java.io.IOException
java.io.IOExceptiondefault void setFileAccessControl(SftpSubsystemProxy subsystem, java.nio.file.Path file, java.util.List<java.nio.file.attribute.AclEntry> acl, java.nio.file.LinkOption... options) throws java.io.IOException
java.io.IOExceptiondefault void createDirectory(SftpSubsystemProxy subsystem, java.nio.file.Path path) throws java.io.IOException
java.io.IOExceptiondefault void createLink(SftpSubsystemProxy subsystem, java.nio.file.Path link, java.nio.file.Path existing, boolean symLink) throws java.io.IOException
subsystem - The SFTP subsystem instance that manages the sessionlink - The requested link Path - same one returned by
resolveLocalFilePathexisting - The existing Path that the link should referencesymLink - true if this should be a symbolic linkjava.io.IOException - If failed to create the linkFiles.createLink(Path, Path),
Files.createSymbolicLink(Path, Path, FileAttribute...)default java.lang.String resolveLinkTarget(SftpSubsystemProxy subsystem, java.nio.file.Path link) throws java.io.IOException
java.io.IOExceptiondefault void renameFile(SftpSubsystemProxy subsystem, java.nio.file.Path oldPath, java.nio.file.Path newPath, java.util.Collection<java.nio.file.CopyOption> opts) throws java.io.IOException
java.io.IOExceptiondefault void copyFile(SftpSubsystemProxy subsystem, java.nio.file.Path src, java.nio.file.Path dst, java.util.Collection<java.nio.file.CopyOption> opts) throws java.io.IOException
java.io.IOExceptiondefault void removeFile(SftpSubsystemProxy subsystem, java.nio.file.Path path, boolean isDirectory) throws java.io.IOException
java.io.IOException