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

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

There is a newer version: 7.0.0
Show newest version
package aQute.bnd.osgi.repository;

import static java.util.Collections.singleton;

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

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

import aQute.lib.collections.MultiMap;

public class AggregateRepository extends BaseRepository {

	private final Repository repositories[];

	public AggregateRepository(Collection< ? extends Repository> repositories) {
		this(repositories.toArray(new Repository[0]));
	}

	public AggregateRepository(Repository... repositories) {
		this.repositories = new Repository[repositories.length];
		System.arraycopy(repositories, 0, this.repositories, 0, repositories.length);
	}

	@SuppressWarnings({
			"unchecked", "rawtypes"
	})
	@Override
	public Map> findProviders(Collection< ? extends Requirement> requirements) {
		MultiMap result = new MultiMap<>();

		for (Repository repository : repositories) {
			Map> capabilities = repository.findProviders(requirements);
			result.addAll(capabilities);
		}

		return (Map) result;
	}

	public Collection findProviders(Requirement req) {
		if (req == null)
			return Collections.emptyList();

		Collection capabilities = findProviders(singleton(req)).get(req);

		assert capabilities != null : "findProviders must return a map containing the collection";

		return capabilities;
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy