All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jivesoftware.smack.util.FileUtils Maven / Gradle / Ivy

The newest version!
package org.jivesoftware.smack.util;

import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;

public final class FileUtils {

    private FileUtils() {
    }

    public static InputStream getStreamForUrl(String url, ClassLoader loader)
            throws MalformedURLException, IOException {
        URI fileUri = URI.create(url);

        if (fileUri.getScheme() == null) {
            throw new MalformedURLException("No protocol found in file URL: "
                    + url);
        }

        if (fileUri.getScheme().equals("classpath")) {
            // Get an array of class loaders to try loading the providers files
            // from.
            ClassLoader[] classLoaders = getClassLoaders();
            for (ClassLoader classLoader : classLoaders) {
                InputStream is = classLoader.getResourceAsStream(fileUri
                        .getSchemeSpecificPart());

                if (is != null) {
                    return is;
                }
            }
        } else {
            return fileUri.toURL().openStream();
        }
        return null;
    }

    /**
     * Returns default classloaders.
     * 
     * @return an array of ClassLoader instances.
     */
    public static ClassLoader[] getClassLoaders() {
        ClassLoader[] classLoaders = new ClassLoader[2];
        classLoaders[0] = FileUtils.class.getClassLoader();
        classLoaders[1] = Thread.currentThread().getContextClassLoader();
        // Clean up possible null values. Note that #getClassLoader may return a
        // null value.
        List loaders = new ArrayList();

        for (ClassLoader classLoader : classLoaders) {
            if (classLoader != null) {
                loaders.add(classLoader);
            }
        }
        return loaders.toArray(new ClassLoader[loaders.size()]);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy