package org.xeustechnologies.jcl;
import org.junit.Test;
import org.xeustechnologies.jcl.sample.Test1;
import static org.junit.Assert.*;
/**
*
* DelegateProxyClassLoaderTest test with DelegateProxyClassLoader.
*
* @author <a href="mailto:jguibert@intelligents-ia.com" >Jerome Guibert</a>
*
*/
public class DelegateProxyClassLoaderTest {
@Test
public void checkDelegateProxyClassLoader() throws ClassNotFoundException {
/**
* First classLoader without Test1
*/
JarClassLoader classLoader = new JarClassLoader();
doIsolated(classLoader);
assertTrue(classLoader.getLocalLoader().isEnabled());
try {
classLoader.loadClass(Test1.class.getName());
fail("Should obtain java.lang.ClassNotFoundException: org.xeustechnologies.jcl.sample.Test1");
} catch (ClassNotFoundException e) {
}
/**
* target classLoader with Test1
*/
JarClassLoader target = new JarClassLoader();
doIsolated(classLoader);
assertTrue(classLoader.getLocalLoader().isEnabled());
target.add(Test1.class.getName());
target.loadClass(Test1.class.getName());
/**
* Add delegate
*/
classLoader.addLoader(new DelegateProxyClassLoader(target));
classLoader.loadClass(Test1.class.getName());
}
/**
* Only local loader.
*
* @param classLoader
*/
protected void doIsolated(JarClassLoader classLoader) {
classLoader.getCurrentLoader().setEnabled(false);
classLoader.getParentLoader().setEnabled(false);
classLoader.getThreadLoader().setEnabled(false);
classLoader.getSystemLoader().setEnabled(false);
classLoader.getOsgiBootLoader().setEnabled(false);
}
}