
aQute.bnd.osgi.repository.AggregateRepository Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of biz.aQute.bndlib Show documentation
Show all versions of biz.aQute.bndlib Show documentation
bndlib: A Swiss Army Knife for OSGi
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 extends Repository> 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 extends Requirement> 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