
aQute.bnd.build.WorkspaceRepositoryDynamic 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.build;
import static java.util.stream.Collectors.toList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
import org.osgi.resource.Capability;
import org.osgi.resource.Requirement;
import org.osgi.resource.Resource;
import org.osgi.service.repository.Repository;
import aQute.bnd.osgi.repository.BaseRepository;
import aQute.bnd.osgi.repository.WorkspaceRepositoryMarker;
import aQute.bnd.osgi.resource.ResourceUtils;
class WorkspaceRepositoryDynamic extends BaseRepository implements Repository, WorkspaceRepositoryMarker {
private final Workspace workspace;
WorkspaceRepositoryDynamic(Workspace workspace) {
this.workspace = workspace;
}
@Override
public Map> findProviders(Collection extends Requirement> requirements) {
List resources = workspace.getAllProjects()
.stream()
.map(Project::getResources)
.flatMap(Collection::stream)
.collect(toList());
Map> result = ResourceUtils.findProviders(requirements,
requirement -> findProvider(resources, requirement));
return result;
}
private List findProvider(Collection extends Resource> resources, Requirement requirement) {
List capabilities = new ArrayList<>();
String namespace = requirement.getNamespace();
Predicate matcher = ResourceUtils.matcher(requirement);
for (Resource resource : resources) {
for (Capability capability : resource.getCapabilities(namespace)) {
if (matcher.test(capability)) {
capabilities.add(capability);
}
}
}
return capabilities;
}
@Override
public String toString() {
return NAME;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy