org.infinispan.commons.util.FileLookupFactory Maven / Gradle / Ivy
package org.infinispan.commons.util;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Collection;
import java.util.HashSet;
public class FileLookupFactory {
public static FileLookup newInstance() {
return new DefaultFileLookup();
}
public static class DefaultFileLookup extends AbstractFileLookup implements FileLookup {
protected DefaultFileLookup() {
}
@Override
protected InputStream getAsInputStreamFromClassLoader(String filename, ClassLoader appClassLoader) {
for (ClassLoader cl : Util.getClassLoaders(appClassLoader)) {
if (cl == null)
continue;
try {
InputStream is = cl.getResourceAsStream(filename);
if (is != null) {
return is;
}
} catch (RuntimeException e) {
// Ignore this as the classloader may throw exceptions for a valid path on Windows
}
}
return null;
}
@Override
protected URL getAsURLFromClassLoader(String filename, ClassLoader userClassLoader) {
for (ClassLoader cl : Util.getClassLoaders(userClassLoader)) {
if (cl == null)
continue;
try {
URL url = cl.getResource(filename);
if (url != null) {
return url;
}
} catch (RuntimeException e) {
// Ignore this as the classloader may throw exceptions for a valid path on Windows
}
}
return null;
}
@Override
protected Collection getAsURLsFromClassLoader(String filename, ClassLoader userClassLoader) throws IOException {
Collection urls = new HashSet(4);
for (ClassLoader cl : Util.getClassLoaders(userClassLoader)) {
if (cl == null)
continue;
try {
urls.addAll(new EnumerationList(cl.getResources(filename)));
} catch (RuntimeException e) {
// Ignore this as the classloader may throw exceptions for a valid path on Windows
}
}
return urls;
}
}
}