in src/main/java/org/apache/sling/feature/scanner/Scanner.java [133:153]
private BundleDescriptor doScan(final Artifact bundle, final int startLevel) throws IOException {
final String key = bundle.getId()
.toMvnId()
.concat(":")
.concat(String.valueOf(startLevel))
.concat(":")
.concat(Stream.of(bundle.getFeatureOrigins())
.map(ArtifactId::toMvnId)
.collect(Collectors.joining(",")));
BundleDescriptor desc = (BundleDescriptor) this.cache.get(key);
if (desc == null) {
final URL file = artifactProvider.provide(bundle.getId());
if (file == null) {
throw new IOException("Unable to find file for " + bundle.getId());
}
desc = new BundleDescriptorImpl(bundle, file);
this.cache.put(key, desc);
}
return desc;
}