package ddth.dasp.framework.model; import java.net.URL; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class CombinedClassLoader extends ClassLoader { private final Logger LOGGER = LoggerFactory.getLogger(CombinedClassLoader.class); private Set<ClassLoader> loaders = new HashSet<ClassLoader>(); public CombinedClassLoader() { } public CombinedClassLoader(Collection<ClassLoader> classLoaders) { for (ClassLoader classLoader : classLoaders) { addLoader(classLoader); } } public void addLoader(ClassLoader loader) { if (loader != null) { loaders.add(loader); } } public void addLoader(Class<?> clazz) { addLoader(clazz.getClassLoader()); } public Class<?> findClass(String name) throws ClassNotFoundException { for (ClassLoader loader : loaders) { try { return loader.loadClass(name); } catch (ClassNotFoundException cnfe) { if (LOGGER.isDebugEnabled()) { LOGGER.debug(cnfe.getMessage()); } } } throw new ClassNotFoundException(name); } public URL getResource(String name) { for (ClassLoader loader : loaders) { URL url = loader.getResource(name); if (url != null) { return url; } } return null; } }