liquibase.resource.ClassLoaderResourceAccessor Maven / Gradle / Ivy
package liquibase.resource;
import liquibase.util.StringUtils;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
/**
* An implementation of liquibase.FileOpener that opens file from the class loader.
*
* @see ResourceAccessor
*/
public class ClassLoaderResourceAccessor implements ResourceAccessor {
private ClassLoader classLoader;
public ClassLoaderResourceAccessor() {
this.classLoader = getClass().getClassLoader();
}
public ClassLoaderResourceAccessor(ClassLoader classLoader) {
this.classLoader = classLoader;
}
public InputStream getResourceAsStream(String file) throws IOException {
return classLoader.getResourceAsStream(file);
}
public Enumeration getResources(String packageName) throws IOException {
return classLoader.getResources(packageName);
}
public ClassLoader toClassLoader() {
return classLoader;
}
@Override
public String toString() {
String description;
if (classLoader instanceof URLClassLoader) {
List urls = new ArrayList();
for (URL url : ((URLClassLoader) classLoader).getURLs()) {
urls.add(url.toExternalForm());
}
description = StringUtils.join(urls, ",");
} else {
description = classLoader.getClass().getName();
}
return getClass().getName()+"("+ description +")";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy