package liquibase.test; import liquibase.resource.ResourceAccessor; import liquibase.util.StringUtils; import java.io.File; 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; public class JUnitResourceAccessor implements ResourceAccessor { private URLClassLoader classLoader; public JUnitResourceAccessor() throws Exception { File srcDir = new File(TestContext.getInstance().findCoreProjectRoot(), "src"); File integrationClassesDir = new File(TestContext.getInstance().findIntegrationTestProjectRoot(), "target/classes"); File integrationTestClassesDir = new File(TestContext.getInstance().findIntegrationTestProjectRoot(), "target/test-classes"); classLoader = new URLClassLoader(new URL[]{ //integrationClassesDir.toURL(), //integrationTestClassesDir.toURL(), //new File(srcDir, "test/java").toURL(), new File(TestContext.getInstance().findIntegrationTestProjectRoot(), "src/test/resources/packaged-changelog.jar").toURL(), new File(System.getProperty("java.io.tmpdir")).toURL(), }); } public InputStream getResourceAsStream(String file) throws IOException { return classLoader.getResourceAsStream(file); } public Enumeration<URL> getResources(String packageName) throws IOException { return classLoader.getResources(packageName); } public ClassLoader toClassLoader() { return classLoader; } @Override public String toString() { List<String> urls = new ArrayList<String>(); for (URL url : classLoader.getURLs()) { urls.add(url.toExternalForm()); } return getClass().getName() + "(" + StringUtils.join(urls, ",") + ")"; } }