Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jboss.windup.util;
- import java.io.IOException;
- import java.net.URL;
- import java.util.Collections;
- import java.util.Enumeration;
- import java.util.LinkedHashSet;
- import java.util.List;
- import java.util.Set;
- /**
- * A composite class loader which looks for classes and resources in a list of class loaders.
- *
- * @author Ondrej Zizka, ozizka at redhat.com
- */
- public class FurnaceCompositeClassLoader extends ClassLoader
- {
- private final Set<ClassLoader> loaders = new LinkedHashSet<>();
- public FurnaceCompositeClassLoader(List<ClassLoader> loaders)
- {
- this.loaders.addAll(loaders);
- }
- public FurnaceCompositeClassLoader(ClassLoader classLoader, List<ClassLoader> loaders)
- {
- super(classLoader);
- this.loaders.addAll(loaders);
- }
- @Override
- public Class<?> findClass(String name) throws ClassNotFoundException
- {
- for (ClassLoader classLoader : loaders)
- {
- try
- {
- return classLoader.loadClass(name);
- }
- catch (ClassNotFoundException notFound)
- {
- // oh well
- }
- }
- ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
- if (contextLoader != null)
- {
- return contextLoader.loadClass(name);
- }
- else
- {
- return super.findClass(name);
- }
- }
- @Override
- public URL getResource(String name)
- {
- for (ClassLoader classLoader : loaders)
- {
- URL resource = classLoader.getResource(name);
- if (resource != null)
- {
- return resource;
- }
- }
- ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
- if (contextLoader != null)
- {
- return contextLoader.getResource(name);
- }
- else
- {
- return super.getResource(name);
- }
- }
- @Override
- public Enumeration<URL> getResources(String name) throws IOException
- {
- Set<URL> result = new LinkedHashSet<>();
- for (ClassLoader classLoader : loaders)
- {
- result.addAll(Collections.list(classLoader.getResources(name)));
- }
- ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
- if (contextLoader != null)
- {
- result.addAll(Collections.list(contextLoader.getResources(name)));
- }
- else
- {
- result.addAll(Collections.list(super.getResources(name)));
- }
- return Collections.enumeration(result);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement