All Downloads are FREE. Search and download functionalities are using the official Maven repository.

aQute.bnd.osgi.repository.AggregateRepository Maven / Gradle / Ivy

The newest version!
package aQute.bnd.osgi.repository;

import static java.util.Collections.singleton;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import org.osgi.resource.Capability;
import org.osgi.resource.Requirement;
import org.osgi.service.repository.Repository;

import aQute.bnd.osgi.resource.ResourceUtils;

public class AggregateRepository extends BaseRepository {
	private final List repositories;

	public AggregateRepository(Collection repositories) {
		this.repositories = new ArrayList<>(repositories);
	}

	public AggregateRepository(Repository... repositories) {
		this.repositories = new ArrayList<>(repositories.length);
		Collections.addAll(this.repositories, repositories);
	}

	@Override
	public Map> findProviders(Collection requirements) {
		Map> result = ResourceUtils.findProviders(requirements,
			this::findProviders);
		return result;
	}

	public Collection findProviders(Requirement requirement) {
		Collection requirements = singleton(requirement);
		Collection capabilities = repositories.stream()
			.map(repository -> repository.findProviders(requirements)
				.get(requirement))
			.reduce(new ArrayList<>(), ResourceUtils::capabilitiesCombiner);
		return capabilities;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy