Interface FileSystemProvider

All Known Implementing Classes:
AzureFileSystemProvider, BuiltinStreamProvider, FTPFileSystemProvider, GcpFileSystemProvider, HadoopFileSystemProvider, LocalFileSystemProvider, S3FileSystemProvider, SFTPFileSystemProvider, URLFileSystemProvider

public interface FileSystemProvider
Provides basic operations on paths for a specific path scheme or schemes. A FileSystemProvider serves two primary purposes:
  • It operates as a factory for Path objects for the schemes it supports.
  • It implements file and directory operations for the schemes it supports.
Normally, a provider is not used directly. Instead, the static methods in Paths and FileClient are used. These handle paths generically, whereas a provider can only deal with paths it knows how to support.

To add a new path scheme/file system, it is necessary to provide an implementation of this interface. For the scheme to be supported by the methods in Paths, the implementation class must be registered as service for com.pervasive.datarush.io.FileSystemProvider in the META-INF of the jar containing the class.

  • Method Details

    • isPathSupported

      boolean isPathSupported(String scheme)
      Indicates whether the given scheme is handled by the provider.
      Parameters:
      scheme - an identifier for a path scheme
      Returns:
      true if this provider handles paths using the scheme, false otherwise.
    • getFileSystem

      FileSystem getFileSystem(FileClient client, FileConfiguration configuration, Path path)
      Gets the file system identified by the path. The path identifies a file on the file system; the file's file system is returned. This is equivalent to calling getPath(path).getFileSystem(), but may be faster.
      Parameters:
      client - a file client. most implementations will ignore this parameter. "meta-filesystems" ( those than can span filesystems ) may need the file client.
      configuration - the configuration for this filesystem
      path - a path identifying a file on the file system
      Returns:
      the requested file system object
      Throws:
      IllegalArgumentException - if the path is not prefixed with a scheme supported by the provider
    • getPath

      Path getPath(String path)
      Gets the path identified by the given string. The resulting path represents a location in an abstract file system. Use the methods in FileClient to perform operations on the files and directories represented by paths.
      Parameters:
      path - the path name to resolve into a path object
      Returns:
      the requested path object
      Throws:
      IllegalArgumentException - if the path is not prefixed with a scheme supported by the provider
    • getDefaultConfiguration

      Map<String,FileConfiguration> getDefaultConfiguration()
      Gets default configuration for the schemes handled by the provider. Default configuration is inherited from the execution environment.

      A provider should return a map with entries only for schemes having default configuration; if no schemes do, an empty map should be returned.

      Returns:
      a mapping of schemes to default configuration
    • getConfigurationTemplate

      FileConfiguration getConfigurationTemplate()
      Returns a non-populated configuration object to server as a template that the user must fill-in.
      Returns:
      a configuration template
    • getFileSystemPath

      Path getFileSystemPath(Path path)
      Returns the filesystem root path associated with the given path.
      Parameters:
      path - the path
      Returns:
      the root path