private void addProvider()

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);
        }
    }