Class ClassLoaderFileSystem
FileSystem
implementation looking up resources using a ClassLoader.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
AutoService
registrar for theClassLoaderFileSystem
.static class
Nested classes/interfaces inherited from class org.apache.beam.sdk.io.FileSystem
FileSystem.LineageLevel
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionprotected void
copy
(List<ClassLoaderFileSystem.ClassLoaderResourceId> srcResourceIds, List<ClassLoaderFileSystem.ClassLoaderResourceId> destResourceIds) Copies aList
of file-like resources from one location to another.protected WritableByteChannel
create
(ClassLoaderFileSystem.ClassLoaderResourceId resourceId, CreateOptions createOptions) Returns a write channel for the givenFileSystem
.protected void
delete
(Collection<ClassLoaderFileSystem.ClassLoaderResourceId> resourceIds) Deletes a collection of resources.protected String
Get the URI scheme which defines the namespace of theFileSystem
.protected List
<MatchResult> This is the entry point to convert user-provided specs toResourceIds
.matchNewResource
(String path, boolean isDirectory) Returns a newResourceId
for this filesystem that represents the named resource.protected ReadableByteChannel
open
(ClassLoaderFileSystem.ClassLoaderResourceId resourceId) Returns a read channel for the givenFileSystem
.protected void
rename
(List<ClassLoaderFileSystem.ClassLoaderResourceId> srcResourceIds, List<ClassLoaderFileSystem.ClassLoaderResourceId> destResourceIds, MoveOptions... moveOptions) Renames aList
of file-like resources from one location to another.Methods inherited from class org.apache.beam.sdk.io.FileSystem
reportLineage, reportLineage
-
Field Details
-
SCHEMA
- See Also:
-
-
Method Details
-
match
Description copied from class:FileSystem
This is the entry point to convert user-provided specs toResourceIds
. Callers should useFileSystem.match(java.util.List<java.lang.String>)
to resolve users specs ambiguities before calling other methods.Implementation should handle the following ambiguities of a user-provided spec:
spec
could be a glob or a uri.FileSystem.match(java.util.List<java.lang.String>)
should be able to tell and choose efficient implementations.- The user-provided
spec
might refer to files or directories. It is common that users that wish to indicate a directory will omit the trailing/
, such as in a spec of"/tmp/dir"
. TheFileSystem
should be able to recognize a directory with the trailing/
omitted, but should always return a correctFileSystem
(e.g.,"/tmp/dir/"
inside the returnedMatchResult
.
All
FileSystem
implementations should support glob in the final hierarchical path component ofFileSystem
. This allows SDK libraries to construct file system agnostic spec.FileSystems
can support additional patterns for user-provided specs.- Specified by:
match
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
- Returns:
List<MatchResult>
in the same order of the input specs.- Throws:
IOException
- if all specs failed to match due to issues like: network connection, authorization. Exception for individual spec need to be deferred until callers retrieve metadata withMatchResult.metadata()
.
-
create
protected WritableByteChannel create(ClassLoaderFileSystem.ClassLoaderResourceId resourceId, CreateOptions createOptions) throws IOException Description copied from class:FileSystem
Returns a write channel for the givenFileSystem
.The resource is not expanded; it is used verbatim.
- Specified by:
create
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
- Parameters:
resourceId
- the reference of the file-like resource to createcreateOptions
- the configuration of the create operation- Throws:
IOException
-
open
protected ReadableByteChannel open(ClassLoaderFileSystem.ClassLoaderResourceId resourceId) throws IOException Description copied from class:FileSystem
Returns a read channel for the givenFileSystem
.The resource is not expanded; it is used verbatim.
If seeking is supported, then this returns a
SeekableByteChannel
.- Specified by:
open
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
- Parameters:
resourceId
- the reference of the file-like resource to open- Throws:
IOException
-
copy
protected void copy(List<ClassLoaderFileSystem.ClassLoaderResourceId> srcResourceIds, List<ClassLoaderFileSystem.ClassLoaderResourceId> destResourceIds) throws IOException Description copied from class:FileSystem
Copies aList
of file-like resources from one location to another.The number of source resources must equal the number of destination resources. Destination resources will be created recursively.
- Specified by:
copy
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
- Parameters:
srcResourceIds
- the references of the source resourcesdestResourceIds
- the references of the destination resources- Throws:
IOException
-
rename
protected void rename(List<ClassLoaderFileSystem.ClassLoaderResourceId> srcResourceIds, List<ClassLoaderFileSystem.ClassLoaderResourceId> destResourceIds, MoveOptions... moveOptions) throws IOException Description copied from class:FileSystem
Renames aList
of file-like resources from one location to another.The number of source resources must equal the number of destination resources. Destination resources will be created recursively.
- Specified by:
rename
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
- Parameters:
srcResourceIds
- the references of the source resourcesdestResourceIds
- the references of the destination resourcesmoveOptions
- move options specifying handling of error conditions- Throws:
IOException
-
delete
protected void delete(Collection<ClassLoaderFileSystem.ClassLoaderResourceId> resourceIds) throws IOException Description copied from class:FileSystem
Deletes a collection of resources.- Specified by:
delete
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
- Parameters:
resourceIds
- the references of the resources to delete.- Throws:
IOException
-
matchNewResource
protected ClassLoaderFileSystem.ClassLoaderResourceId matchNewResource(String path, boolean isDirectory) Description copied from class:FileSystem
Returns a newResourceId
for this filesystem that represents the named resource. The user supplies both the resource spec and whether it is a directory.The supplied
singleResourceSpec
is expected to be in a proper format, including any necessary escaping, for thisFileSystem
.This function may throw an
IllegalArgumentException
if given an invalid argument, such as when the specifiedsingleResourceSpec
is not a valid resource name.- Specified by:
matchNewResource
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
-
getScheme
Description copied from class:FileSystem
Get the URI scheme which defines the namespace of theFileSystem
.- Specified by:
getScheme
in classFileSystem<ClassLoaderFileSystem.ClassLoaderResourceId>
- See Also:
-