in commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java [103:138]
private void addProvider(final Element providerDef, final boolean isDefault) throws FileSystemException {
final String classname = providerDef.getAttribute("class-name");
// Make sure all required schemes are available
final String[] requiredSchemes = getRequiredSchemes(providerDef);
for (final String requiredScheme : requiredSchemes) {
if (!hasProvider(requiredScheme)) {
final String msg = Messages.getString("vfs.impl/skipping-provider-scheme.debug", classname,
requiredScheme);
VfsLog.debug(getLogger(), getLogger(), msg);
return;
}
}
// Make sure all required classes are in classpath
final String[] requiredClasses = getRequiredClasses(providerDef);
for (final String requiredClass : requiredClasses) {
if (!findClass(requiredClass)) {
final String msg = Messages.getString("vfs.impl/skipping-provider.debug", classname, requiredClass);
VfsLog.debug(getLogger(), getLogger(), msg);
return;
}
}
// Create and register the provider
final FileProvider provider = (FileProvider) createInstance(classname);
final String[] schemas = getSchemas(providerDef);
if (schemas.length > 0) {
addProvider(schemas, provider);
}
// Set as default, if required
if (isDefault) {
setDefaultProvider(provider);
}
}