Class DefaultFileSystemManager
- java.lang.Object
-
- org.apache.commons.vfs2.impl.DefaultFileSystemManager
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,FileSystemManager
- Direct Known Subclasses:
StandardFileSystemManager
public class DefaultFileSystemManager extends java.lang.Object implements FileSystemManager
The default file system manager implementation.
-
-
Constructor Summary
Constructors Constructor Description DefaultFileSystemManager()
Constructs a new instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
_closeFileSystem(FileSystem fileSystem)
Closes the given file system.void
addExtensionMap(java.lang.String extension, java.lang.String scheme)
Adds a file name extension mapping.void
addMimeTypeMap(java.lang.String mimeType, java.lang.String scheme)
Adds a mime type mapping.void
addOperationProvider(java.lang.String[] schemes, FileOperationProvider operationProvider)
Adds an operation provider.void
addOperationProvider(java.lang.String scheme, FileOperationProvider operationProvider)
Adds the specified FileOperationProvider for the specified scheme.void
addProvider(java.lang.String[] urlSchemes, FileProvider provider)
Adds a file system provider.void
addProvider(java.lang.String urlScheme, FileProvider provider)
Adds a file system provider.protected void
addVirtualFileSystemScheme(java.lang.String rootUri)
Adds a scheme.boolean
canCreateFileSystem(FileObject file)
Tests if a layered file system can be created for a given file.void
close()
Closes the manager.void
closeFileSystem(FileSystem fileSystem)
Closes the given file system.FileObject
createFileSystem(java.lang.String scheme, FileObject file)
Creates a layered file system.FileObject
createFileSystem(FileObject file)
Creates a layered file system.FileObject
createVirtualFileSystem(java.lang.String rootUri)
Creates an empty virtual file system.FileObject
createVirtualFileSystem(FileObject rootFile)
Creates a virtual file system.void
freeUnusedResources()
Frees all unused resources created by this manager.FileObject
getBaseFile()
Gets the base file used to resolve relative URI.CacheStrategy
getCacheStrategy()
Gets the cache strategy used.FileContentInfoFactory
getFileContentInfoFactory()
Gets the fileContentInfoFactory used to determine the infos of a file content.java.lang.Class<?>
getFileObjectDecorator()
Gets the file object decorator used.java.lang.reflect.Constructor<?>
getFileObjectDecoratorConst()
Gets the constructor associated to the fileObjectDecorator.FilesCache
getFilesCache()
Gets the filesCache implementation used to cache files.FileSystemConfigBuilder
getFileSystemConfigBuilder(java.lang.String scheme)
Gets the configuration builder for the given scheme.protected org.apache.commons.logging.Log
getLogger()
Gets the logger used by this manager.FileOperationProvider[]
getOperationProviders(java.lang.String scheme)
Gets Providers for file operations.java.util.Collection<Capability>
getProviderCapabilities(java.lang.String scheme)
Gets the capabilities for a given scheme.FileReplicator
getReplicator()
Gets the file replicator.java.lang.String[]
getSchemes()
Gets the schemes currently available.TemporaryFileStore
getTemporaryFileStore()
Gets the temporary file store.java.net.URLStreamHandlerFactory
getURLStreamHandlerFactory()
Gets the URLStreamHandlerFactory.boolean
hasProvider(java.lang.String scheme)
Tests if this manager has a provider for a particular scheme.void
init()
Initializes this manager.void
removeProvider(java.lang.String urlScheme)
Unregisters a file system provider.FileObject
resolveFile(java.io.File baseFile, java.lang.String uri)
Resolves a URI, relative to base file.FileObject
resolveFile(java.lang.String uri)
Locates a file by URI.FileObject
resolveFile(java.lang.String uri, FileSystemOptions fileSystemOptions)
Resolves a file by URI, use the FileSystemOptions for file-system creation.FileObject
resolveFile(java.net.URI uri)
Resolves a URI into aFileObject
.FileObject
resolveFile(java.net.URL url)
Resolves a URL into aFileObject
.FileObject
resolveFile(FileObject baseFile, java.lang.String uri)
Resolves a URI, relative to a base file.FileObject
resolveFile(FileObject baseFile, java.lang.String uri, FileSystemOptions fileSystemOptions)
Resolves a URI, relative to a base file with specified FileSystem configuration.FileName
resolveName(FileName root, java.lang.String path)
Resolves a name, relative to the file.FileName
resolveName(FileName base, java.lang.String name, NameScope scope)
Resolves a name, relative to the root.FileName
resolveURI(java.lang.String uri)
Resolve the uri to a file name.void
setBaseFile(java.io.File baseFile)
Sets the base file to use when resolving relative URI.void
setBaseFile(FileObject baseFile)
Sets the base file to use when resolving relative URI.void
setCacheStrategy(CacheStrategy fileCacheStrategy)
Sets the cache strategy to use when dealing with file object data.void
setDefaultProvider(FileProvider provider)
Sets the default provider.void
setFileContentInfoFactory(FileContentInfoFactory fileContentInfoFactory)
Sets the fileContentInfoFactory used to determine the infos of a file content.void
setFileObjectDecorator(java.lang.Class<?> fileObjectDecorator)
Sets a fileObject decorator to be used for ALL returned file objects.void
setFilesCache(FilesCache filesCache)
Sets the filesCache implementation used to cache files.void
setLogger(org.apache.commons.logging.Log log)
Sets the logger to use.void
setReplicator(FileReplicator replicator)
Sets the file replicator to use.void
setTemporaryFileStore(TemporaryFileStore tempFileStore)
Sets the temporary file store to use.FileObject
toFileObject(java.io.File file)
Converts a local file into aFileObject
.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.commons.vfs2.FileSystemManager
toFileObject
-
-
-
-
Constructor Detail
-
DefaultFileSystemManager
public DefaultFileSystemManager()
Constructs a new instance.
-
-
Method Detail
-
_closeFileSystem
public void _closeFileSystem(FileSystem fileSystem)
Closes the given file system.If you use VFS as singleton it is VERY dangerous to call this method
- Parameters:
fileSystem
- The FileSystem to close.
-
addExtensionMap
public void addExtensionMap(java.lang.String extension, java.lang.String scheme)
Adds a file name extension mapping.- Parameters:
extension
- The file name extension.scheme
- The scheme to use for files with this extension.
-
addMimeTypeMap
public void addMimeTypeMap(java.lang.String mimeType, java.lang.String scheme)
Adds a mime type mapping.- Parameters:
mimeType
- The mime type.scheme
- The scheme to use for files with this mime type.
-
addOperationProvider
public void addOperationProvider(java.lang.String scheme, FileOperationProvider operationProvider) throws FileSystemException
Adds the specified FileOperationProvider for the specified scheme. Several FileOperationProvider's might be registered for the same scheme. For example, for "file" scheme we can register SvnWsOperationProvider and CvsOperationProvider.- Specified by:
addOperationProvider
in interfaceFileSystemManager
- Parameters:
scheme
- The scheme the provider should be registered for.operationProvider
- The FileOperationProvider.- Throws:
FileSystemException
- if an error occurs adding the provider.
-
addOperationProvider
public void addOperationProvider(java.lang.String[] schemes, FileOperationProvider operationProvider) throws FileSystemException
Description copied from interface:FileSystemManager
Adds an operation provider.- Specified by:
addOperationProvider
in interfaceFileSystemManager
- Parameters:
schemes
- The array of schemes the provider should apply to.operationProvider
- The FileOperationProvider.- Throws:
FileSystemException
- if an error occurs.- See Also:
FileSystemManager.addOperationProvider(String, org.apache.commons.vfs2.operations.FileOperationProvider)
-
addProvider
public void addProvider(java.lang.String urlScheme, FileProvider provider) throws FileSystemException
Adds a file system provider.The manager takes care of all lifecycle management. A provider may be registered multiple times. The first
LocalFileProvider
added will be remembered forgetLocalFileProvider()
.- Parameters:
urlScheme
- The scheme the provider will handle.provider
- The provider.- Throws:
FileSystemException
- if an error occurs adding the provider.
-
addProvider
public void addProvider(java.lang.String[] urlSchemes, FileProvider provider) throws FileSystemException
Adds a file system provider.The manager takes care of all lifecycle management. A provider may be registered multiple times. The first
LocalFileProvider
added will be remembered forgetLocalFileProvider()
.- Parameters:
urlSchemes
- The schemes the provider will handle.provider
- The provider.- Throws:
FileSystemException
- if an error occurs adding the provider.
-
addVirtualFileSystemScheme
protected void addVirtualFileSystemScheme(java.lang.String rootUri)
Adds a scheme.- Parameters:
rootUri
- the URI containing the scheme to add.
-
canCreateFileSystem
public boolean canCreateFileSystem(FileObject file) throws FileSystemException
Tests if a layered file system can be created for a given file.- Specified by:
canCreateFileSystem
in interfaceFileSystemManager
- Parameters:
file
- The file to check for.- Returns:
- true if the FileSystem can be created.
- Throws:
FileSystemException
- if an error occurs.
-
close
public void close()
Closes the manager.This will close all providers (all files), it will also close all managed components including temporary files, replicator, file cache and file operations.
The manager is in uninitialized state after this method.
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfaceFileSystemManager
-
closeFileSystem
public void closeFileSystem(FileSystem fileSystem)
Closes the given file system.If you use VFS as singleton it is VERY dangerous to call this method.
- Specified by:
closeFileSystem
in interfaceFileSystemManager
- Parameters:
fileSystem
- The FileSystem to close.
-
createFileSystem
public FileObject createFileSystem(FileObject file) throws FileSystemException
Creates a layered file system.- Specified by:
createFileSystem
in interfaceFileSystemManager
- Parameters:
file
- The FileObject to use.- Returns:
- The layered FileObject.
- Throws:
FileSystemException
- if an error occurs.
-
createFileSystem
public FileObject createFileSystem(java.lang.String scheme, FileObject file) throws FileSystemException
Creates a layered file system.- Specified by:
createFileSystem
in interfaceFileSystemManager
- Parameters:
scheme
- The scheme to use.file
- The FileObject.- Returns:
- The layered FileObject.
- Throws:
FileSystemException
- if an error occurs.
-
createVirtualFileSystem
public FileObject createVirtualFileSystem(FileObject rootFile) throws FileSystemException
Creates a virtual file system.- Specified by:
createVirtualFileSystem
in interfaceFileSystemManager
- Parameters:
rootFile
- The FileObject to use.- Returns:
- The FileObject in the VirtualFileSystem.
- Throws:
FileSystemException
- if an error occurs creating the file.
-
createVirtualFileSystem
public FileObject createVirtualFileSystem(java.lang.String rootUri) throws FileSystemException
Creates an empty virtual file system.- Specified by:
createVirtualFileSystem
in interfaceFileSystemManager
- Parameters:
rootUri
- The URI to use as the root of the FileSystem.- Returns:
- A FileObject in the virtual FileSystem.
- Throws:
FileSystemException
- if an error occurs.
-
freeUnusedResources
public void freeUnusedResources()
Frees all unused resources created by this manager.
-
getBaseFile
public FileObject getBaseFile() throws FileSystemException
Gets the base file used to resolve relative URI.- Specified by:
getBaseFile
in interfaceFileSystemManager
- Returns:
- The FileObject that represents the base file.
- Throws:
FileSystemException
- if an error occurs.
-
getCacheStrategy
public CacheStrategy getCacheStrategy()
Gets the cache strategy used.- Specified by:
getCacheStrategy
in interfaceFileSystemManager
- Returns:
- The CacheStrategy.
-
getFileContentInfoFactory
public FileContentInfoFactory getFileContentInfoFactory()
Gets the fileContentInfoFactory used to determine the infos of a file content.- Specified by:
getFileContentInfoFactory
in interfaceFileSystemManager
- Returns:
- The FileContentInfoFactory.
-
getFileObjectDecorator
public java.lang.Class<?> getFileObjectDecorator()
Gets the file object decorator used.- Specified by:
getFileObjectDecorator
in interfaceFileSystemManager
- Returns:
- The decorator.
-
getFileObjectDecoratorConst
public java.lang.reflect.Constructor<?> getFileObjectDecoratorConst()
Gets the constructor associated to the fileObjectDecorator. We cache it here for performance reasons.- Specified by:
getFileObjectDecoratorConst
in interfaceFileSystemManager
- Returns:
- The decorator's Constructor.
-
getFilesCache
public FilesCache getFilesCache()
Gets the filesCache implementation used to cache files.- Specified by:
getFilesCache
in interfaceFileSystemManager
- Returns:
- The FilesCache.
-
getFileSystemConfigBuilder
public FileSystemConfigBuilder getFileSystemConfigBuilder(java.lang.String scheme) throws FileSystemException
Gets the configuration builder for the given scheme.- Specified by:
getFileSystemConfigBuilder
in interfaceFileSystemManager
- Parameters:
scheme
- The scheme to locate.- Returns:
- The FileSystemConfigBuilder for the scheme.
- Throws:
FileSystemException
- if the given scheme is not known
-
getLogger
protected org.apache.commons.logging.Log getLogger()
Gets the logger used by this manager.- Returns:
- the Logger.
-
getOperationProviders
public FileOperationProvider[] getOperationProviders(java.lang.String scheme) throws FileSystemException
Description copied from interface:FileSystemManager
Gets Providers for file operations.- Specified by:
getOperationProviders
in interfaceFileSystemManager
- Parameters:
scheme
- the scheme for which we want to get the list af registered providers.- Returns:
- the registered FileOperationProviders for the specified scheme. If there were no providers registered for the scheme, it returns null.
- Throws:
FileSystemException
- if an error occurs.
-
getProviderCapabilities
public java.util.Collection<Capability> getProviderCapabilities(java.lang.String scheme) throws FileSystemException
Gets the capabilities for a given scheme.- Specified by:
getProviderCapabilities
in interfaceFileSystemManager
- Parameters:
scheme
- The scheme to locate.- Returns:
- A Collection of capabilities.
- Throws:
FileSystemException
- if the given scheme is not known
-
getReplicator
public FileReplicator getReplicator() throws FileSystemException
Gets the file replicator.- Returns:
- The file replicator. Never returns null.
- Throws:
FileSystemException
- if there is no FileReplicator.
-
getSchemes
public java.lang.String[] getSchemes()
Gets the schemes currently available.- Specified by:
getSchemes
in interfaceFileSystemManager
- Returns:
- The array of scheme names.
-
getTemporaryFileStore
public TemporaryFileStore getTemporaryFileStore() throws FileSystemException
Gets the temporary file store.- Returns:
- The file store. Never returns null.
- Throws:
FileSystemException
- if there is no TemporaryFileStore.
-
getURLStreamHandlerFactory
public java.net.URLStreamHandlerFactory getURLStreamHandlerFactory()
Gets the URLStreamHandlerFactory.- Specified by:
getURLStreamHandlerFactory
in interfaceFileSystemManager
- Returns:
- The URLStreamHandlerFactory.
-
hasProvider
public boolean hasProvider(java.lang.String scheme)
Tests if this manager has a provider for a particular scheme.- Specified by:
hasProvider
in interfaceFileSystemManager
- Parameters:
scheme
- The scheme to check.- Returns:
- true if a provider is configured for this scheme, false otherwise.
-
init
public void init() throws FileSystemException
Initializes this manager.If no value for the following properties was specified, it will use the following defaults:
- fileContentInfoFactory = new FileContentInfoFilenameFactory()
- filesCache = new SoftRefFilesCache()
- fileCacheStrategy = CacheStrategy.ON_RESOLVE
- Throws:
FileSystemException
- if an error occurs during initialization.
-
removeProvider
public void removeProvider(java.lang.String urlScheme)
Unregisters a file system provider.- Parameters:
urlScheme
- The scheme of the provider.- Since:
- 2.8.0
-
resolveFile
public FileObject resolveFile(java.io.File baseFile, java.lang.String uri) throws FileSystemException
Resolves a URI, relative to base file.Uses the local file provider to locate the system file.
- Specified by:
resolveFile
in interfaceFileSystemManager
- Parameters:
baseFile
- The base File to use to locate the file.uri
- The URI of the file to locate.- Returns:
- The FileObject for the located file.
- Throws:
FileSystemException
- if the file cannot be located or an error occurs.
-
resolveFile
public FileObject resolveFile(FileObject baseFile, java.lang.String uri) throws FileSystemException
Resolves a URI, relative to a base file.- Specified by:
resolveFile
in interfaceFileSystemManager
- Parameters:
baseFile
- The base FileObject to use to locate the file.uri
- The URI of the file to locate.- Returns:
- The FileObject for the located file.
- Throws:
FileSystemException
- if the file cannot be located or an error occurs.
-
resolveFile
public FileObject resolveFile(FileObject baseFile, java.lang.String uri, FileSystemOptions fileSystemOptions) throws FileSystemException
Resolves a URI, relative to a base file with specified FileSystem configuration.- Parameters:
baseFile
- The base file.uri
- The file name. May be a fully qualified or relative path or an url.fileSystemOptions
- Options to pass to the file system.- Returns:
- A FileObject representing the target file.
- Throws:
FileSystemException
- if an error occurs accessing the file.
-
resolveFile
public FileObject resolveFile(java.lang.String uri) throws FileSystemException
Locates a file by URI.- Specified by:
resolveFile
in interfaceFileSystemManager
- Parameters:
uri
- The URI of the file to locate.- Returns:
- The FileObject for the located file.
- Throws:
FileSystemException
- if the file cannot be located or an error occurs.
-
resolveFile
public FileObject resolveFile(java.lang.String uri, FileSystemOptions fileSystemOptions) throws FileSystemException
Resolves a file by URI, use the FileSystemOptions for file-system creation.- Specified by:
resolveFile
in interfaceFileSystemManager
- Parameters:
uri
- The URI of the file to locate.fileSystemOptions
- The options for the FileSystem.- Returns:
- The FileObject for the located file.
- Throws:
FileSystemException
- if the file cannot be located or an error occurs.
-
resolveFile
public FileObject resolveFile(java.net.URI uri) throws FileSystemException
Resolves a URI into aFileObject
.- Specified by:
resolveFile
in interfaceFileSystemManager
- Parameters:
uri
- The URI to convert.- Returns:
- The
FileObject
that represents the URI. Never returns null. - Throws:
FileSystemException
- On error converting the URI.- Since:
- 2.1
-
resolveFile
public FileObject resolveFile(java.net.URL url) throws FileSystemException
Resolves a URL into aFileObject
.- Specified by:
resolveFile
in interfaceFileSystemManager
- Parameters:
url
- The URL to convert.- Returns:
- The
FileObject
that represents the URL. Never returns null. - Throws:
FileSystemException
- On error converting the URL.- Since:
- 2.1
-
resolveName
public FileName resolveName(FileName root, java.lang.String path) throws FileSystemException
Resolves a name, relative to the file. If the supplied name is an absolute path, then it is resolved relative to the root of the file system that the file belongs to. If a relative name is supplied, then it is resolved relative to this file name.- Specified by:
resolveName
in interfaceFileSystemManager
- Parameters:
root
- The base FileName.path
- The path to the file relative to the base FileName or an absolute path.- Returns:
- The constructed FileName.
- Throws:
FileSystemException
- if an error occurs constructing the FileName.
-
resolveName
public FileName resolveName(FileName base, java.lang.String name, NameScope scope) throws FileSystemException
Resolves a name, relative to the root.- Specified by:
resolveName
in interfaceFileSystemManager
- Parameters:
base
- the base file namename
- the namescope
- theNameScope
- Returns:
- The FileName of the file.
- Throws:
FileSystemException
- if an error occurs.
-
resolveURI
public FileName resolveURI(java.lang.String uri) throws FileSystemException
Resolve the uri to a file name.- Specified by:
resolveURI
in interfaceFileSystemManager
- Parameters:
uri
- The URI to resolve.- Returns:
- The FileName of the file.
- Throws:
FileSystemException
- if an error occurs.
-
setBaseFile
public void setBaseFile(java.io.File baseFile) throws FileSystemException
Sets the base file to use when resolving relative URI.- Parameters:
baseFile
- The new base FileObject.- Throws:
FileSystemException
- if an error occurs.
-
setBaseFile
public void setBaseFile(FileObject baseFile)
Sets the base file to use when resolving relative URI.- Parameters:
baseFile
- The new base FileObject.
-
setCacheStrategy
public void setCacheStrategy(CacheStrategy fileCacheStrategy) throws FileSystemException
Sets the cache strategy to use when dealing with file object data.Can only be set before the FileSystemManager is initialized.
The default is
CacheStrategy.ON_RESOLVE
.- Parameters:
fileCacheStrategy
- The CacheStrategy to use.- Throws:
FileSystemException
- if this is not possible. e.g. it is already set.
-
setDefaultProvider
public void setDefaultProvider(FileProvider provider) throws FileSystemException
Sets the default provider. This is the provider that will handle URI with unknown schemes. The manager takes care of all lifecycle management.- Parameters:
provider
- The FileProvider.- Throws:
FileSystemException
- if an error occurs setting the provider.
-
setFileContentInfoFactory
public void setFileContentInfoFactory(FileContentInfoFactory fileContentInfoFactory) throws FileSystemException
Sets the fileContentInfoFactory used to determine the infos of a file content.Can only be set before the FileSystemManager is initialized.
- Parameters:
fileContentInfoFactory
- The FileContentInfoFactory.- Throws:
FileSystemException
- if an error occurs setting the FileContentInfoFactory.
-
setFileObjectDecorator
public void setFileObjectDecorator(java.lang.Class<?> fileObjectDecorator) throws FileSystemException
Sets a fileObject decorator to be used for ALL returned file objects.Can only be set before the FileSystemManager is initialized.
- Parameters:
fileObjectDecorator
- must be inherited fromDecoratedFileObject
a has to provide a constructor with a singleFileObject
as argument- Throws:
FileSystemException
- if an error occurs setting the decorator.
-
setFilesCache
public void setFilesCache(FilesCache filesCache) throws FileSystemException
Sets the filesCache implementation used to cache files.Can only be set before the FileSystemManager is initialized.
The manager takes care of the lifecycle. If none is set, a default is picked in
init()
.- Parameters:
filesCache
- The FilesCache.- Throws:
FileSystemException
- if an error occurs setting the cache.
-
setLogger
public void setLogger(org.apache.commons.logging.Log log)
Sets the logger to use.This overwrites the default logger for this manager and is not reset in
close()
.- Specified by:
setLogger
in interfaceFileSystemManager
- Parameters:
log
- The Logger to use.
-
setReplicator
public void setReplicator(FileReplicator replicator) throws FileSystemException
Sets the file replicator to use.The manager takes care of all lifecycle management.
- Parameters:
replicator
- The FileReplicator.- Throws:
FileSystemException
- if an error occurs setting the replicator.
-
setTemporaryFileStore
public void setTemporaryFileStore(TemporaryFileStore tempFileStore) throws FileSystemException
Sets the temporary file store to use.The manager takes care of all lifecycle management.
- Parameters:
tempFileStore
- The temporary FileStore.- Throws:
FileSystemException
- if an error occurs adding the file store.
-
toFileObject
public FileObject toFileObject(java.io.File file) throws FileSystemException
Converts a local file into aFileObject
.- Specified by:
toFileObject
in interfaceFileSystemManager
- Parameters:
file
- The input File.- Returns:
- the created FileObject
- Throws:
FileSystemException
- if an error occurs creating the file.
-
-