public void checkBundleDependencies()

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);
			}
		}
	}