private void processImplementations( BeanDefinitionRegistry registry, PluginRegistry pluginRegistry) { List<Class> extensionPoints = pluginRegistry.getExtensionPoints(); for (Class extensionPoint : extensionPoints) { List<Class> implementations = pluginRegistry.getImplementations(extensionPoint); LOG.debug( String.format( "Found %d implementations for %s extension point: [%s]", implementations.size(), extensionPoint.getCanonicalName(), commaSeparated(implementations.stream().map(Class::getCanonicalName)))); for (Class implementation : implementations) { processImplementation(registry, implementation); } } }
private void processResources(PluginRegistry pluginRegistry) { List<String> pluginNames = pluginRegistry.getPluginNames(); for (String pluginName : pluginNames) { List<Path> pluginResources = pluginRegistry.getResources(pluginName); LOG.debug( String.format( "Found %d resource files for plugin %s: [%s]", pluginResources.size(), pluginName, commaSeparated(pluginResources.stream().map(Path::toString)))); Optional<ClassLoader> pluginClassLoader = pluginRegistry.getClassLoader(pluginName); if (pluginClassLoader.isPresent()) { for (Path pluginResource : pluginResources) { beanClassLoader.addPathClassLoader(pluginResource, pluginClassLoader.get()); } } } }