![JAR search and dependency download from the Maven repository](/logo.png)
io.airlift.airship.shared.RepositorySet Maven / Gradle / Ivy
package io.airlift.airship.shared;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import javax.inject.Inject;
import java.net.URI;
import java.util.Set;
import static com.google.common.collect.Sets.newTreeSet;
public class RepositorySet implements Repository
{
private final Set repositories;
@Inject
public RepositorySet(Set repositories)
{
Preconditions.checkNotNull(repositories, "repositories is null");
this.repositories = ImmutableSet.copyOf(repositories);
}
@Override
public String configShortName(String config)
{
if (!config.startsWith("@")) {
return null;
}
String noAtSign = config.substring(1);
for (Repository repository : repositories) {
String shortName = repository.configShortName(config);
if (!config.equals(shortName) && !noAtSign.endsWith(shortName)) {
return shortName;
}
}
return noAtSign.replaceAll("[:%/ !$]", "_");
}
@Override
public String configRelativize(String config)
{
Set relativeConfigs = newTreeSet();
for (Repository repository : repositories) {
String relativeConfig = repository.configRelativize(config);
if (relativeConfig != null) {
relativeConfigs.add(relativeConfig);
}
}
// if we end up with more than one form for the relative config, just return the absolute config
if (relativeConfigs.size() != 1) {
return config;
}
return relativeConfigs.iterator().next();
}
@Override
public String configResolve(String config)
{
Set configs = newTreeSet();
for (Repository repository : repositories) {
String resolved = repository.configResolve(config);
if (resolved != null) {
configs.add(resolved);
}
}
if (configs.size() > 1) {
throw new RuntimeException(String.format("Ambiguous config %s matched %s", config, configs));
}
if (configs.isEmpty()) {
return null;
}
return configs.iterator().next();
}
@Override
public String configUpgrade(String config, String version)
{
Set configs = newTreeSet();
for (Repository repository : repositories) {
String resolved = repository.configUpgrade(config, version);
if (resolved != null) {
configs.add(resolved);
}
}
if (configs.size() > 1) {
throw new RuntimeException(String.format("Ambiguous upgrade version %s for config %s matched %s", version, config, configs));
}
if (configs.isEmpty()) {
return null;
}
return configs.iterator().next();
}
@Override
public boolean configEqualsIgnoreVersion(String config1, String config2)
{
for (Repository repository : repositories) {
if (repository.configEqualsIgnoreVersion(config1, config2)) {
return true;
}
}
return false;
}
@Override
public URI configToHttpUri(String config)
{
Set httpUris = newTreeSet();
for (Repository repository : repositories) {
URI httpUri = repository.configToHttpUri(config);
if (httpUri != null) {
httpUris.add(httpUri);
}
}
if (httpUris.size() > 1) {
throw new RuntimeException(String.format("Ambiguous config %s found %s", config, httpUris));
}
if (httpUris.isEmpty()) {
return null;
}
return httpUris.iterator().next();
}
@Override
public String binaryRelativize(String binary)
{
Set relativeBinaries = newTreeSet();
for (Repository repository : repositories) {
String relativeBinary = repository.binaryRelativize(binary);
if (relativeBinary != null) {
relativeBinaries.add(relativeBinary);
}
}
// if we end up with more than one form for the relative binary, just return the absolute binary
if (relativeBinaries.size() != 1) {
return binary;
}
return relativeBinaries.iterator().next();
}
@Override
public String binaryResolve(String binary)
{
Set binaries = newTreeSet();
for (Repository repository : repositories) {
String resolved = repository.binaryResolve(binary);
if (resolved != null) {
binaries.add(resolved);
}
}
if (binaries.size() > 1) {
throw new RuntimeException(String.format("Ambiguous binary %s matched %s", binary, binaries));
}
if (binaries.isEmpty()) {
return null;
}
return binaries.iterator().next();
}
@Override
public String binaryUpgrade(String binary, String version)
{
Set binaries = newTreeSet();
for (Repository repository : repositories) {
String resolved = repository.binaryUpgrade(binary, version);
if (resolved != null) {
binaries.add(resolved);
}
}
if (binaries.size() > 1) {
throw new RuntimeException(String.format("Ambiguous upgrade version %s for binary %s matched %s", version, binary, binaries));
}
if (binaries.isEmpty()) {
return null;
}
return binaries.iterator().next();
}
@Override
public boolean binaryEqualsIgnoreVersion(String binary1, String binary2)
{
for (Repository repository : repositories) {
if (repository.binaryEqualsIgnoreVersion(binary1, binary2)) {
return true;
}
}
return false;
}
@Override
public URI binaryToHttpUri(String binary)
{
Set httpUris = newTreeSet();
for (Repository repository : repositories) {
URI httpUri = repository.binaryToHttpUri(binary);
if (httpUri != null) {
httpUris.add(httpUri);
}
}
if (httpUris.size() > 1) {
throw new RuntimeException(String.format("Ambiguous binary %s found %s", binary, httpUris));
}
if (httpUris.isEmpty()) {
return null;
}
return httpUris.iterator().next();
}
@Override
public String toString()
{
final StringBuilder sb = new StringBuilder();
sb.append("RepositorySet");
sb.append("{repositories=").append(repositories);
sb.append('}');
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy