adammurdoch 2003/02/20 21:13:59 Modified: vfs/src/java/org/apache/commons/vfs/impl DefaultFileSystemManager.java vfs/src/java/org/apache/commons/vfs Resources.properties vfs/src/test/org/apache/commons/vfs/test ProviderTestSuite.java Log: Throw an exception when trying to add a provider for a scheme that already has a provider registered. Revision Changes Path 1.20 +10 -20 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/DefaultFileSystemManager.java Index: DefaultFileSystemManager.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/DefaultFileSystemManager.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- DefaultFileSystemManager.java 12 Feb 2003 07:56:10 -0000 1.19 +++ DefaultFileSystemManager.java 21 Feb 2003 05:13:58 -0000 1.20 @@ -67,7 +67,6 @@ import org.apache.commons.vfs.FileObject; import org.apache.commons.vfs.FileSystemException; import org.apache.commons.vfs.FileSystemManager; -import org.apache.commons.vfs.util.Messages; import org.apache.commons.vfs.provider.DefaultURLStreamHandler; import org.apache.commons.vfs.provider.FileProvider; import org.apache.commons.vfs.provider.FileReplicator; @@ -77,23 +76,7 @@ import org.apache.commons.vfs.provider.VfsComponent; /** - * A default file system manager implementation. To use this class: - * <ul> - * <li>Create an instance of this class. - * <li>Call {@link #setLogger} to set the logger that the manager, and its - * components, should use (optional). - * <li>Add one or more file providers using {@link #addProvider}. - * <li>Set the default provider using {@link #setDefaultProvider} (optional). - * <li>Set the file replicator using {@link #setReplicator} (optional). - * <li>Set the temporary file store using {@link #setTemporaryFileStore} (optional). - * <li>Set the base file using {@link #setBaseFile} (optional). - * <li>Initialise the manager using {@link #init}. - * </ul> - * - * <p>When finished with the manager, call its {@link #close} method to clean - * up any resources it is using. - * - * @todo - Extract an AbstractFileSystemManager super-class from this class. + * A default file system manager implementation. * * @author <a href="mailto:[EMAIL PROTECTED]">Adam Murdoch</a> * @version $Revision$ $Date$ @@ -176,8 +159,7 @@ final String scheme = urlSchemes[ i ]; if ( providers.containsKey( scheme ) ) { - final String message = Messages.getString( "vfs.impl/multiple-providers-for-scheme.warning", scheme ); - getLog().warn( message ); + throw new FileSystemException( "vfs.impl/multiple-providers-for-scheme.error", scheme ); } } @@ -195,6 +177,14 @@ { localFileProvider = (LocalFileProvider)provider; } + } + + /** + * Returns true if this manager has a provider for a particular scheme. + */ + public boolean hasProvider( final String scheme ) + { + return providers.containsKey( scheme ); } /** 1.19 +7 -3 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/Resources.properties Index: Resources.properties =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/Resources.properties,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- Resources.properties 20 Feb 2003 07:30:36 -0000 1.18 +++ Resources.properties 21 Feb 2003 05:13:59 -0000 1.19 @@ -76,7 +76,7 @@ # DefaultFileSystemManager vfs.impl/unknown-scheme.error=Unknown scheme "{0}" in URI "{1}". vfs.impl/find-rel-file.error=Could not find file with URI "{0}" because it is a relative path, and no base URI was provided. -vfs.impl/multiple-providers-for-scheme.warning=Multiple providers registered for URL scheme "{0}". +vfs.impl/multiple-providers-for-scheme.error=Multiple providers registered for URL scheme "{0}". vfs.impl/unknown-provider.error=No file system provider is registered for URI scheme "{0}". vfs.impl/no-local-file-provider.error=Could not find a file system provider which can handle local files. vfs.impl/no-replicator.error=No file replicator configured. @@ -84,8 +84,12 @@ vfs.impl/replicate-file.error=Could not replicate "{0}". vfs.impl/delete-temp.warn=Could not clean up temporary file "{0}". vfs.impl/init-replicator.error=Could not initialise file replicator. -vfs.impl/create-provider.warn=Could not create file provider of class "{0}". + +# StandardFileSystemManager +vfs.impl/find-config-file.error=Could not find VFS configuration resource "{0}". +vfs.impl/load-config.error=Could not load VFS configuration from "{0}". vfs.impl/create-provider.error=Could not create file provider of class "{0}". +vfs.impl/skipping-provider.warn=Skipping provider "{0}" because required class "{0}" is not available. # VFSClassLoader vfs.impl/pkg-sealing-unsealed=Trying to seal package "{0}" that exists as unsealed. @@ -94,7 +98,7 @@ # VirtualFileSystem vfs.impl/nested-junction.error=Attempting to create a nested junction at "{0}". Nested junctions are not supported. vfs.impl/create-junction.error=Could not create a junction at "{0}". -r + # Local Provider vfs.provider.local/get-type.error=Could not determine the type of "{0}". vfs.provider.local/delete-file.error=Could not delete "{0}". 1.9 +6 -2 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderTestSuite.java Index: ProviderTestSuite.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderTestSuite.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- ProviderTestSuite.java 20 Feb 2003 09:22:13 -0000 1.8 +++ ProviderTestSuite.java 21 Feb 2003 05:13:59 -0000 1.9 @@ -173,13 +173,17 @@ // Create the file system manager manager = new DefaultFileSystemManager(); - manager.addProvider( "file", new DefaultLocalFileProvider() ); final DefaultFileReplicator replicator = new DefaultFileReplicator( tempDir ); manager.setReplicator( new PrivilegedFileReplicator( replicator ) ); manager.setTemporaryFileStore( replicator ); providerConfig.prepare( manager ); + + if ( !manager.hasProvider( "file" ) ) + { + manager.addProvider( "file", new DefaultLocalFileProvider() ); + } manager.init();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]