in taverna-maven-plugin/src/main/java/org/apache/taverna/mavenplugin/MavenOsgiUtils.java [240:293]
public void checkBundleDependencies(List<DependencyNode> nodes) {
Map<Artifact, Set<Package>> unresolvedArtifacts = new HashMap<Artifact, Set<Package>>();
Set<Artifact> artifacts = getAllArtifacts(nodes);
Map<String, Set<PackageVersion>> exports = calculatePackageVersions(artifacts, true, false);
for (Artifact artifact : artifacts) {
if (isBundle(artifact)) {
Parameters imports = getManifestAttributeParameters(artifact,
Constants.IMPORT_PACKAGE);
if (imports != null) {
for (String packageName : imports.keySet()) {
boolean exportMissing = true;
VersionRange importRange = null;
Attrs attrs = imports.get(packageName);
if (isOptional(attrs)) {
exportMissing = false;
} else if (javaPackages.contains(packageName)
|| systemPackages.contains(packageName)
|| packageName.startsWith("org.osgi.")) {
exportMissing = false;
} else if (attrs == null || attrs.get(Constants.VERSION_ATTRIBUTE) == null) {
if (exports.containsKey(packageName)) {
exportMissing = false;
}
} else {
importRange = getVersionRange(attrs);
if (exports.containsKey(packageName)) {
for (PackageVersion exportVersion : exports.get(packageName)) {
if (importRange.includes(exportVersion.getVersionRange()
.getLow())) {
exportMissing = false;
break;
}
}
}
}
if (exportMissing) {
if (!unresolvedArtifacts.containsKey(artifact)) {
unresolvedArtifacts.put(artifact, new HashSet<Package>());
}
unresolvedArtifacts.get(artifact).add(
new Package(packageName, importRange));
}
}
}
}
}
for (Entry<Artifact, Set<Package>> unresolvedArtifact : unresolvedArtifacts.entrySet()) {
log.warn("Bundle : " + unresolvedArtifact.getKey().getId()
+ " has unresolved package dependencies:");
for (Package unresolvedPackage : unresolvedArtifact.getValue()) {
log.warn(" " + unresolvedPackage);
}
}
}