Set<Contribution> extensions = new HashSet<Contribution>(); for (Contribution contribution : zoneContributions) { Set<Contribution> required = store.resolveCapabilities(contribution); extensions.addAll(required);
/** * Transitively calculates imported contributions and required capabilities. These are then added to the extension un/provision command. * * @param contribution the contribution to calculate imports for * @param command the command to update * @throws GenerationException if an exception occurs */ private void addDependencies(Contribution contribution, AbstractExtensionsCommand command) throws GenerationException { List<ContributionWire<?, ?>> contributionWires = contribution.getWires(); for (ContributionWire<?, ?> wire : contributionWires) { URI uri = wire.getExportContributionUri(); Contribution imported = store.find(uri); addDependencies(imported, command); if (!command.getExtensionUris().contains(uri) && !Names.HOST_CONTRIBUTION.equals(uri) && !Names.BOOT_CONTRIBUTION.equals(uri)) { command.addExtensionUri(uri); } } Set<Contribution> capabilities = store.resolveCapabilities(contribution); for (Contribution capability : capabilities) { URI uri = capability.getUri(); if (!command.getExtensionUris().contains(uri)) { command.addExtensionUri(uri); } } }