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]