in atomos/src/main/java/org/apache/felix/atomos/impl/modules/ModuleConnectLoader.java [81:113]
void initEdges(Module module, Configuration loaderConfig,
Map<String, ? extends ClassLoader> loaders)
{
this.module.set(module);
for (ResolvedModule moduleRead : resolvedModule.reads())
{
ClassLoader loaderForModuleRead;
if (moduleRead.configuration().equals(loaderConfig))
{
loaderForModuleRead = loaders.get(moduleRead.name());
}
else
{
ClassLoader cl = module.getLayer().findLoader(moduleRead.name());
loaderForModuleRead = (cl != null) ? cl
: ClassLoader.getPlatformClassLoader();
}
ModuleDescriptor descriptor = moduleRead.reference().descriptor();
if (descriptor.isAutomatic())
{
descriptor.packages().forEach(
p -> edges.putIfAbsent(p, loaderForModuleRead));
}
else
{
descriptor.exports().stream() //
.filter(
p -> !p.isQualified() || p.targets().contains(module.getName())) //
.map(Exports::source) //
.forEach(pn -> edges.putIfAbsent(pn, loaderForModuleRead));
}
}
}