/** * Return a classloader that can see all the given interfaces If the given loader can see all interfaces * then it is used. If not then a combined classloader of all interface classloaders is returned. * * @param loader use supplied class loader * @param interfaces * @return classloader that sees all interfaces */ private ClassLoader getClassLoaderForInterfaces(ClassLoader loader, Class<?>[] interfaces) { if (canSeeAllInterfaces(loader, interfaces)) { return loader; } ProxyClassLoader combined = new ProxyClassLoader(loader, interfaces); for (Class<?> currentInterface : interfaces) { combined.addLoader(currentInterface.getClassLoader()); } return combined; }
/** * Return a classloader that can see all the given interfaces If the given loader can see all interfaces * then it is used. If not then a combined classloader of all interface classloaders is returned. * * @param loader use supplied class loader * @param interfaces * @return classloader that sees all interfaces */ private ClassLoader getClassLoaderForInterfaces(ClassLoader loader, Class<?>[] interfaces) { if (canSeeAllInterfaces(loader, interfaces)) { return loader; } ProxyClassLoader combined = new ProxyClassLoader(loader, interfaces); for (Class<?> currentInterface : interfaces) { combined.addLoader(currentInterface.getClassLoader()); } return combined; }
if (canSeeAllInterfaces(loader, interfaces)) { LOG.log(Level.FINE, "current classloader " + loader + " can see all interface"); return loader; if (canSeeAllInterfaces(cachedLoader, interfaces)) { LOG.log(Level.FINE, "find required loader from ProxyClassLoader cache with key" + sortedNameFromInterfaceArray);
if (canSeeAllInterfaces(loader, interfaces)) { LOG.log(Level.FINE, "current classloader " + loader + " can see all interface"); return loader; if (canSeeAllInterfaces(cachedLoader, interfaces)) { LOG.log(Level.FINE, "find required loader from ProxyClassLoader cache with key" + sortedNameFromInterfaceArray);