in src/main/java/org/apache/sling/feature/scanner/Scanner.java [262:287]
public BundleDescriptor scan(final ArtifactId framework, final Map<String,String> props) throws IOException {
final StringBuilder sb = new StringBuilder();
sb.append(framework.toMvnId());
if (props != null) {
final Map<String, String> sortedMap = new TreeMap<String, String>(props);
for (final Map.Entry<String, String> entry : sortedMap.entrySet()) {
sb.append(":").append(entry.getKey()).append("=").append(entry.getValue());
}
}
final String key = sb.toString();
BundleDescriptor desc = (BundleDescriptor) this.cache.get(key);
if (desc == null) {
for (final FrameworkScanner scanner : this.frameworkScanners) {
desc = scanner.scan(framework, props, artifactProvider);
if (desc != null) {
break;
}
}
if (desc == null) {
throw new IOException("No scanner found for framework " + framework.toMvnId());
}
this.cache.put(key, desc);
}
return desc;
}