package ch.elexis.scripting.beanshell.internal;
import java.util.List;
public class MultiClassLoader extends ClassLoader {
private List<ClassLoader> loaders;
public MultiClassLoader(List<ClassLoader> loaders){
this.loaders = loaders;
}
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException{
// try to load the class with the ClassLoaders
Class<?> clazz = null;
try {
clazz = super.loadClass(name);
} catch (ClassNotFoundException e) {
for (ClassLoader loader : loaders) {
try {
clazz = loader.loadClass(name);
} catch (ClassNotFoundException ex) {
// ignore
}
// class loaded
if (clazz != null) {
break;
}
}
}
if (clazz == null) {
throw new ClassNotFoundException(name);
}
return clazz;
}
public void addClassLoader(ClassLoader classLoader){
if (!loaders.contains(classLoader)) {
loaders.add(classLoader);
}
}
}