@Override protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { // grab the magic lock synchronized (getClassLoadingLock(name)) { // Check if class is in the loaded classes cache Class<?> cachedClass = findLoadedClass(name); if (cachedClass != null) { return resolveClass(cachedClass, resolve); } // If this is an SPI class, only check SPI class loader if (isSpiClass(name)) { return resolveClass(spiClassLoader.loadClass(name), resolve); } // Look for class locally return super.loadClass(name, resolve); } }
private Class<?> resolveClass(Class<?> clazz, boolean resolve) { if (resolve) { resolveClass(clazz); } return clazz; }
@Override public Enumeration<URL> getResources(String name) throws IOException { // If this is an SPI resource, use SPI resources if (isSpiClass(name)) { return spiClassLoader.getResources(name); } // Use local resources return super.getResources(name); }
private URLClassLoader createClassLoader(List<URL> urls) { ClassLoader parent = getClass().getClassLoader(); return new PluginClassLoader(urls, parent, SPI_PACKAGES); }
@Override public URL getResource(String name) { // If this is an SPI resource, only check SPI class loader if (isSpiResource(name)) { return spiClassLoader.getResource(name); } // Look for resource locally return super.getResource(name); }
private Class<?> resolveClass(Class<?> clazz, boolean resolve) { if (resolve) { resolveClass(clazz); } return clazz; }
@Override public Enumeration<URL> getResources(String name) throws IOException { // If this is an SPI resource, use SPI resources if (isSpiClass(name)) { return spiClassLoader.getResources(name); } // Use local resources return super.getResources(name); }
private URLClassLoader createClassLoader(List<URL> urls) { ClassLoader parent = getClass().getClassLoader(); return new PluginClassLoader(urls, parent, SPI_PACKAGES); }
@Override public URL getResource(String name) { // If this is an SPI resource, only check SPI class loader if (isSpiResource(name)) { return spiClassLoader.getResource(name); } // Look for resource locally return super.getResource(name); }
@Override protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { // grab the magic lock synchronized (getClassLoadingLock(name)) { // Check if class is in the loaded classes cache Class<?> cachedClass = findLoadedClass(name); if (cachedClass != null) { return resolveClass(cachedClass, resolve); } // If this is an SPI class, only check SPI class loader if (isSpiClass(name)) { return resolveClass(spiClassLoader.loadClass(name), resolve); } // Look for class locally return super.loadClass(name, resolve); } }