* Made a heap of stuff final. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271360 13f79535-47bb-0310-9956-ffa450edef68master
@@ -8,6 +8,7 @@ | |||
package org.apache.aut.vfs; | |||
import org.apache.avalon.framework.component.Component; | |||
import java.io.File; | |||
/** | |||
* A FileSystemManager is manages a set of file systems. This interface is | |||
@@ -85,10 +86,26 @@ public interface FileSystemManager | |||
* The name of the file. | |||
* | |||
* @param baseFile | |||
* The base file to use to resolve paths. | |||
* The base file to use to resolve relative paths. | |||
* | |||
* @throws FileSystemException | |||
* On error parsing the file name. | |||
*/ | |||
FileObject resolveFile( FileObject baseFile, String name ) throws FileSystemException; | |||
/** | |||
* Locates a file by name. See {@link #resolveFile(FileObject, String)} | |||
* for details. | |||
* | |||
* @param baseFile | |||
* The base file to use to resolve relative paths. | |||
* | |||
* @param name | |||
* The name of the file. | |||
* | |||
* @throws FileSystemException | |||
* On error parsing the file name. | |||
* | |||
*/ | |||
FileObject resolveFile ( File baseFile, String name ) throws FileSystemException; | |||
} |
@@ -34,13 +34,13 @@ public class DefaultFileSystemManager | |||
= ResourceManager.getPackageResources( DefaultFileSystemManager.class ); | |||
/** The default provider. */ | |||
private LocalFileSystemProvider m_localFileProvider; | |||
private final LocalFileSystemProvider m_localFileProvider; | |||
/** Mapping from URI scheme to FileSystemProvider. */ | |||
private Map m_providers = new HashMap(); | |||
private final Map m_providers = new HashMap(); | |||
/** The provider context. */ | |||
private ProviderContextImpl m_context = new ProviderContextImpl(); | |||
private final ProviderContextImpl m_context = new ProviderContextImpl(); | |||
/** The base file to use for relative URI. */ | |||
private FileObject m_baseFile; | |||
@@ -49,7 +49,7 @@ public class DefaultFileSystemManager | |||
* The cached file systems. This is a mapping from root URI to | |||
* FileSystem object. | |||
*/ | |||
private Map m_fileSystems = new HashMap(); | |||
private final Map m_fileSystems = new HashMap(); | |||
public DefaultFileSystemManager() throws Exception | |||
{ | |||
@@ -117,7 +117,7 @@ public class DefaultFileSystemManager | |||
/** | |||
* Sets the base file to use when resolving relative URI. | |||
*/ | |||
public void setBaseFile( FileObject baseFile ) throws FileSystemException | |||
public void setBaseFile( final FileObject baseFile ) throws FileSystemException | |||
{ | |||
m_baseFile = baseFile; | |||
} | |||
@@ -125,9 +125,9 @@ public class DefaultFileSystemManager | |||
/** | |||
* Sets the base file to use when resolving relative URI. | |||
*/ | |||
public void setBaseFile( File baseFile ) throws FileSystemException | |||
public void setBaseFile( final File baseFile ) throws FileSystemException | |||
{ | |||
m_baseFile = m_localFileProvider.findFileByLocalName( baseFile.getAbsolutePath() ); | |||
m_baseFile = m_localFileProvider.findLocalFile( baseFile.getAbsolutePath() ); | |||
} | |||
/** | |||
@@ -141,22 +141,33 @@ public class DefaultFileSystemManager | |||
/** | |||
* Locates a file by URI. | |||
*/ | |||
public FileObject resolveFile( String URI ) throws FileSystemException | |||
public FileObject resolveFile( final String uri ) throws FileSystemException | |||
{ | |||
return resolveFile( m_baseFile, URI ); | |||
return resolveFile( m_baseFile, uri ); | |||
} | |||
/** | |||
* Locates a file by URI. | |||
*/ | |||
public FileObject resolveFile( final File baseFile, final String uri ) | |||
throws FileSystemException | |||
{ | |||
final FileObject baseFileObj = m_localFileProvider.findFileByLocalName( baseFile ); | |||
return resolveFile( baseFileObj, uri ); | |||
} | |||
/** | |||
* Resolves a URI, relative to a base file. | |||
*/ | |||
public FileObject resolveFile( FileObject baseFile, String uri ) throws FileSystemException | |||
public FileObject resolveFile( final FileObject baseFile, final String uri ) | |||
throws FileSystemException | |||
{ | |||
// Extract the scheme | |||
String scheme = UriParser.extractScheme( uri ); | |||
final String scheme = UriParser.extractScheme( uri ); | |||
if( scheme != null ) | |||
{ | |||
// An absolute URI - locate the provider | |||
FileSystemProvider provider = (FileSystemProvider)m_providers.get( scheme ); | |||
final FileSystemProvider provider = (FileSystemProvider)m_providers.get( scheme ); | |||
if( provider != null ) | |||
{ | |||
return provider.findFile( uri ); | |||
@@ -166,7 +177,7 @@ public class DefaultFileSystemManager | |||
// Handle absolute file names | |||
if( m_localFileProvider.isAbsoluteLocalName( uri ) ) | |||
{ | |||
return m_localFileProvider.findFileByLocalName( uri ); | |||
return m_localFileProvider.findLocalFile( uri ); | |||
} | |||
// Assume a bad scheme | |||
@@ -194,7 +205,7 @@ public class DefaultFileSystemManager | |||
/** | |||
* Locates a cached file system by root URI. | |||
*/ | |||
public FileSystem getFileSystem( String rootURI ) | |||
public FileSystem getFileSystem( final String rootURI ) | |||
{ | |||
// TODO - need to have a per-fs uri comparator | |||
return (FileSystem)m_fileSystems.get( rootURI ); | |||
@@ -203,7 +214,8 @@ public class DefaultFileSystemManager | |||
/** | |||
* Registers a file system for caching. | |||
*/ | |||
public void putFileSystem( String rootURI, FileSystem fs ) throws FileSystemException | |||
public void putFileSystem( final String rootURI, final FileSystem fs ) | |||
throws FileSystemException | |||
{ | |||
// TODO - should really check that there's not one already cached | |||
m_fileSystems.put( rootURI, fs ); | |||
@@ -14,6 +14,7 @@ import org.apache.aut.vfs.provider.DefaultFileName; | |||
import org.apache.aut.vfs.provider.FileSystem; | |||
import org.apache.aut.vfs.provider.FileSystemProvider; | |||
import org.apache.aut.vfs.provider.ParsedUri; | |||
import java.io.File; | |||
/** | |||
* A file system provider, which uses direct file access. | |||
@@ -23,26 +24,35 @@ import org.apache.aut.vfs.provider.ParsedUri; | |||
public class LocalFileSystemProvider extends AbstractFileSystemProvider | |||
implements FileSystemProvider | |||
{ | |||
private LocalFileNameParser m_parser = new LocalFileNameParser(); | |||
private final LocalFileNameParser m_parser = new LocalFileNameParser(); | |||
/** | |||
* Determines if a name is an absolute file name. | |||
*/ | |||
public boolean isAbsoluteLocalName( String name ) | |||
public boolean isAbsoluteLocalName( final String name ) | |||
{ | |||
return m_parser.isAbsoluteName( name ); | |||
} | |||
/** | |||
* Finds a file by local file name. | |||
* Finds a local file, from its local name. | |||
*/ | |||
public FileObject findFileByLocalName( String name ) throws FileSystemException | |||
public FileObject findLocalFile( final String name ) throws FileSystemException | |||
{ | |||
// TODO - tidy this up, no need to turn the name into an absolute URI, | |||
// and then straight back again | |||
return findFile( "file:" + name ); | |||
} | |||
/** | |||
* Finds a local file. | |||
*/ | |||
public FileObject findFileByLocalName( final File file ) throws FileSystemException | |||
{ | |||
// TODO - tidy this up, should build file object straight from the file | |||
return findFile( "file:" + file.getAbsolutePath() ); | |||
} | |||
/** | |||
* Parses a URI into its components. The returned value is used to | |||
* locate the file system in the cache (using the root prefix), and is | |||
@@ -51,7 +61,7 @@ public class LocalFileSystemProvider extends AbstractFileSystemProvider | |||
* <p>The provider can annotate this object with any additional | |||
* information it requires to create a file system from the URI. | |||
*/ | |||
protected ParsedUri parseURI( String uri ) throws FileSystemException | |||
protected ParsedUri parseURI( final String uri ) throws FileSystemException | |||
{ | |||
return m_parser.parseUri( uri ); | |||
} | |||
@@ -59,14 +69,14 @@ public class LocalFileSystemProvider extends AbstractFileSystemProvider | |||
/** | |||
* Creates the filesystem. | |||
*/ | |||
protected FileSystem createFileSystem( ParsedUri uri ) throws FileSystemException | |||
protected FileSystem createFileSystem( final ParsedUri uri ) throws FileSystemException | |||
{ | |||
// Build the name of the root file. | |||
ParsedFileUri fileUri = (ParsedFileUri)uri; | |||
String rootFile = fileUri.getRootFile(); | |||
final ParsedFileUri fileUri = (ParsedFileUri)uri; | |||
final String rootFile = fileUri.getRootFile(); | |||
// Create the file system | |||
DefaultFileName rootName = new DefaultFileName( m_parser, fileUri.getRootURI(), "/" ); | |||
final DefaultFileName rootName = new DefaultFileName( m_parser, fileUri.getRootURI(), "/" ); | |||
return new LocalFileSystem( rootName, rootFile ); | |||
} | |||
} |