hibernate-orm/test/org/hibernate/junit/AbstractClassLoaderIsolatedTestCase.java
2007-06-29 19:51:56 +00:00

35 lines
1.0 KiB
Java

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);
}