in extscript-core-root/extscript-myfaces/src/main/java/org/apache/myfaces/extensions/scripting/jsf/adapters/ClassLoaderServiceImpl.java [45:80]
public void registerThrowAwayClassloader()
{
//we do not have the luxury of a pluggable classloading extensions like in myfaces
// instead we have to provide our own classloader which is hooked in from time to time into the running system
final ClassLoader loader = ClassLoaderUtils.getDefaultClassLoader();
boolean found = false;
ClassLoader parent = loader;
while (parent != null && !found)
{
found = parent instanceof ThrowAwayClassloader;
if (!found)
{
parent = parent.getParent();
}
}
if (found)
{
return;
}
//in case of an unchanged classloader we can recycle our old throw away classloader
if (_oldClassLoader != null && loader.equals(_oldClassLoader.getParent()))
{
Thread.currentThread().setContextClassLoader(_oldClassLoader);
} else
{
_oldClassLoader = (ClassLoader) AccessController.doPrivileged(
new PrivilegedAction()
{
public Object run()
{
return new ThrowAwayClassloader(loader);
}
});
Thread.currentThread().setContextClassLoader(_oldClassLoader);
}
}