package org.hotswap.agent.util.classloader;
import org.hotswap.agent.config.PluginManager;
import org.junit.Test;
import java.net.URL;
import java.net.URLClassLoader;
import static org.junit.Assert.assertEquals;
/**
* Created by bubnik on 14.10.13.
*/
public class ClassLoaderURLPatcherTest {
@Test
public void testWithoutPatch() throws Exception {
ClassLoader appClassLoader = new URLClassLoader(new URL[]{}, getClass().getClassLoader());
Class pluginManagerInAppClassLoaderClass = appClassLoader.loadClass(PluginManager.class.getName());
assertEquals("Plugin Manager from parent classloader before patch", getClass().getClassLoader(),
pluginManagerInAppClassLoaderClass.getClassLoader());
}
@Test
public void testPatch() throws Exception {
ClassLoaderURLPatcher classLoaderURLPatcher = new ClassLoaderURLPatcher();
// create classloader without parent - simulate webapp classloader with own classpath precedence.
ClassLoader appClassLoader = new URLClassLoader(new URL[]{}, null);
classLoaderURLPatcher.patch(getClass().getClassLoader(), PluginManager.PLUGIN_PACKAGE.replace(".", "/"),
appClassLoader, null);
Class pluginManagerInAppClassLoaderClass = appClassLoader.loadClass(PluginManager.class.getName());
assertEquals("Plugin Manager from child classloader after patch", appClassLoader,
pluginManagerInAppClassLoaderClass.getClassLoader());
}
}