in src/main/java/org/apache/sling/feature/scanner/impl/BundleDescriptorImpl.java [236:280]
private static List<PackageInfo> extractPackages(final Manifest m,
final String headerName,
final String defaultVersion,
final boolean checkOptional) {
final String pckInfo = m.getMainAttributes().getValue(headerName);
if (pckInfo != null) {
final Clause[] clauses = Parser.parseHeader(pckInfo);
final List<PackageInfo> pcks = new ArrayList<>();
for(final Clause entry : clauses) {
Object versionObj = entry.getAttribute("version");
final String version;
if ( versionObj == null ) {
version = defaultVersion;
} else {
version = versionObj.toString();
}
boolean optional = false;
if ( checkOptional ) {
final String resolution = entry.getDirective("resolution");
optional = "optional".equalsIgnoreCase(resolution);
}
Set<String> uses = new HashSet<>();
String usesAttribute = entry.getDirective("uses");
if (usesAttribute != null && !usesAttribute.isEmpty()) {
StringTokenizer tokenizer = new StringTokenizer(usesAttribute, ",");
while (tokenizer.hasMoreTokens()) {
String usePackage = tokenizer.nextToken();
uses.add(usePackage);
}
}
final PackageInfo pck = new PackageInfo(entry.getName(),
version,
optional,
uses);
pcks.add(pck);
}
return pcks;
}
return Collections.emptyList();
}