package org.hibernate.junit;
/**
* A specialized TestCase for running tests in an isolated class-loader
*
* @author Steve Ebersole
*/
public abstract class AbstractClassLoaderIsolatedTestCase extends UnitTestCase {
private ClassLoader parentLoader;
private ClassLoader isolatedLoader;
public AbstractClassLoaderIsolatedTestCase(String string) {
super( string );
}
protected void setUp() throws Exception {
parentLoader = Thread.currentThread().getContextClassLoader();
isolatedLoader = buildIsolatedClassLoader( parentLoader );
Thread.currentThread().setContextClassLoader( isolatedLoader );
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
Thread.currentThread().setContextClassLoader( parentLoader );
releaseIsolatedClassLoader( isolatedLoader );
parentLoader = null;
isolatedLoader = null;
}
protected abstract ClassLoader buildIsolatedClassLoader(ClassLoader parent);
protected abstract void releaseIsolatedClassLoader(ClassLoader isolatedLoader);
}
|