Package org.jboss.vfs.spi
Class JavaZipFileSystem
- java.lang.Object
-
- org.jboss.vfs.spi.JavaZipFileSystem
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
,FileSystem
public final class JavaZipFileSystem extends java.lang.Object implements FileSystem
This implementation is backed by a zip file. The provided file must be owned by this instance; otherwise, if the file disappears unexpectedly, the filesystem will malfunction.- Author:
- David M. Lloyd, Ales Justin
-
-
Constructor Summary
Constructors Constructor Description JavaZipFileSystem(java.io.File archiveFile, TempDir tempDir)
Create a new instance.JavaZipFileSystem(java.lang.String name, java.io.InputStream inputStream, TempDir tempDir)
Create a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Destroy this filesystem instance.boolean
delete(VirtualFile mountPoint, VirtualFile target)
Attempt to delete a virtual file within this filesystem.boolean
exists(VirtualFile mountPoint, VirtualFile target)
Ascertain the existance of a virtual file within this filesystem.java.security.CodeSigner[]
getCodeSigners(VirtualFile mountPoint, VirtualFile target)
Get theCodeSigner
s for a the virtual file.java.util.List<java.lang.String>
getDirectoryEntries(VirtualFile mountPoint, VirtualFile target)
Read a directory.java.io.File
getFile(VirtualFile mountPoint, VirtualFile target)
Get a realFile
for the given path within this filesystem.long
getLastModified(VirtualFile mountPoint, VirtualFile target)
Get the last modification time of a virtual file within this filesystem.java.io.File
getMountSource()
Get theFile
source provided at mount time.java.net.URI
getRootURI()
Get the root URI for this file system, ornull
if there is no valid root URI.long
getSize(VirtualFile mountPoint, VirtualFile target)
Get the size of a virtual file within this filesystem.boolean
isDirectory(VirtualFile mountPoint, VirtualFile target)
Ascertain whether a virtual file within this filesystem is a directory.boolean
isFile(VirtualFile mountPoint, VirtualFile target)
Ascertain whether a virtual file within this filesystem is a plain file.boolean
isReadOnly()
Determine whether this filesystem is read-only.java.io.InputStream
openInputStream(VirtualFile mountPoint, VirtualFile target)
Open an input stream for the file at the given relative path.
-
-
-
Constructor Detail
-
JavaZipFileSystem
public JavaZipFileSystem(java.lang.String name, java.io.InputStream inputStream, TempDir tempDir) throws java.io.IOException
Create a new instance.- Parameters:
name
- the name of the source archiveinputStream
- an input stream from the source archivetempDir
- the temp dir into which zip information is stored- Throws:
java.io.IOException
- if an I/O error occurs
-
JavaZipFileSystem
public JavaZipFileSystem(java.io.File archiveFile, TempDir tempDir) throws java.io.IOException
Create a new instance.- Parameters:
archiveFile
- the original archive filetempDir
- the temp dir into which zip information is stored- Throws:
java.io.IOException
- if an I/O error occurs
-
-
Method Detail
-
getFile
public java.io.File getFile(VirtualFile mountPoint, VirtualFile target) throws java.io.IOException
Get a realFile
for the given path within this filesystem. Some filesystem types will need to make a copy in order to return this file; such copies should be cached and retained until the filesystem is closed. Depending on the file type, the real path of the returnedFile
may or may not bear a relationship to the virtual path provided; if such a relationship is required, it must be negotiated at the time the filesystem is mounted.- Specified by:
getFile
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
- the file instance
- Throws:
java.io.IOException
- if an I/O error occurs
-
openInputStream
public java.io.InputStream openInputStream(VirtualFile mountPoint, VirtualFile target) throws java.io.IOException
Open an input stream for the file at the given relative path.- Specified by:
openInputStream
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
- the input stream
- Throws:
java.io.IOException
- if an I/O error occurs
-
delete
public boolean delete(VirtualFile mountPoint, VirtualFile target)
Attempt to delete a virtual file within this filesystem.- Specified by:
delete
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
true
if the file was deleted,false
if it failed for any reason
-
getSize
public long getSize(VirtualFile mountPoint, VirtualFile target)
Get the size of a virtual file within this filesystem.- Specified by:
getSize
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
- the size, in bytes, or 0L if the file does not exist or is a directory
-
getLastModified
public long getLastModified(VirtualFile mountPoint, VirtualFile target)
Get the last modification time of a virtual file within this filesystem.- Specified by:
getLastModified
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
- the modification time in milliseconds, or 0L if the file does not exist or if an error occurs
-
exists
public boolean exists(VirtualFile mountPoint, VirtualFile target)
Ascertain the existance of a virtual file within this filesystem.- Specified by:
exists
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
true
if the file exists,false
otherwise
-
isFile
public boolean isFile(VirtualFile mountPoint, VirtualFile target)
Ascertain whether a virtual file within this filesystem is a plain file.- Specified by:
isFile
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
true
if the file exists and is a plain file,false
otherwise
-
isDirectory
public boolean isDirectory(VirtualFile mountPoint, VirtualFile target)
Ascertain whether a virtual file within this filesystem is a directory.- Specified by:
isDirectory
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
true
if the file exists and is a directory,false
otherwise
-
getDirectoryEntries
public java.util.List<java.lang.String> getDirectoryEntries(VirtualFile mountPoint, VirtualFile target)
Read a directory. Returns all the simple path names (excluding "." and ".."). The returned list will be empty if the node is not a directory.- Specified by:
getDirectoryEntries
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
- the collection of children names
-
getCodeSigners
public java.security.CodeSigner[] getCodeSigners(VirtualFile mountPoint, VirtualFile target)
Get theCodeSigner
s for a the virtual file.- Specified by:
getCodeSigners
in interfaceFileSystem
- Parameters:
mountPoint
- the mount point of the filesystem instance (guaranteed to be a parent oftarget
)target
- the virtual file to act upon- Returns:
CodeSigner
for the virtual file or null if not signed.
-
isReadOnly
public boolean isReadOnly()
Determine whether this filesystem is read-only. A read-only filesystem prohibits file modification or deletion. It is not an error to mount a read-write filesystem within a read-only filesystem however (this operation does not take place within theFileSystem
implementation).- Specified by:
isReadOnly
in interfaceFileSystem
- Returns:
true
if the filesystem is read-only
-
getMountSource
public java.io.File getMountSource()
Get theFile
source provided at mount time.- Specified by:
getMountSource
in interfaceFileSystem
- Returns:
- the source used for mounting
-
getRootURI
public java.net.URI getRootURI() throws java.net.URISyntaxException
Description copied from interface:FileSystem
Get the root URI for this file system, ornull
if there is no valid root URI.- Specified by:
getRootURI
in interfaceFileSystem
- Returns:
- the root URI
- Throws:
java.net.URISyntaxException
- if the URI isn't valid
-
close
public void close() throws java.io.IOException
Destroy this filesystem instance. After this method is called, the filesystem may not be used in any way. This method should be called only after all mounts of this filesystem have been cleared; otherwise, VFS accesses may result inIOException
s.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Specified by:
close
in interfaceFileSystem
- Throws:
java.io.IOException
- if an I/O error occurs during close
-
-