package com.sebastian_daschner.jaxrs_analyzer.analysis.classes; import org.objectweb.asm.ClassReader; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; /** * A {@link ClassReader} that is able to use a separate {@link ClassLoader}. * * @author Sebastian Daschner */ public class ContextClassReader extends ClassReader { private static final ExtensibleClassLoader CLASS_LOADER = new ExtensibleClassLoader(); public ContextClassReader(final String className) throws IOException { super(CLASS_LOADER.getResourceAsStream(className.replace('.', '/') + ".class")); final URL resource = CLASS_LOADER.getResource(className.replace('.', '/') + ".class"); } public static ClassLoader getClassLoader() { return CLASS_LOADER; } public static void addClassPath(final URL url) { CLASS_LOADER.addURL(url); } private static class ExtensibleClassLoader extends URLClassLoader { ExtensibleClassLoader() { super(new URL[]{}); } @Override public void addURL(final URL url) { super.addURL(url); } } }