in src/main/java/com/googlesource/gerrit/plugins/replication/DestinationsCollection.java [82:139]
public Multimap<Destination, URIish> getURIs(
Optional<String> remoteName, Project.NameKey projectName, FilterType filterType) {
if (getAll(filterType).isEmpty()) {
return ImmutableMultimap.of();
}
SetMultimap<Destination, URIish> uris = HashMultimap.create();
for (Destination config : getAll(filterType)) {
if (filterType != FilterType.PROJECT_DELETION && !config.wouldPushProject(projectName)) {
continue;
}
if (remoteName.isPresent() && !config.getRemoteConfigName().equals(remoteName.get())) {
continue;
}
boolean adminURLUsed = false;
for (String url : config.getAdminUrls()) {
if (Strings.isNullOrEmpty(url)) {
continue;
}
URIish uri;
try {
uri = new URIish(url);
} catch (URISyntaxException e) {
repLog.atWarning().log("adminURL '%s' is invalid: %s", url, e.getMessage());
continue;
}
if (!isGerrit(uri) && !isGerritHttp(uri)) {
String path =
replaceName(uri.getPath(), projectName.get(), config.isSingleProjectMatch());
if (path == null) {
repLog.atWarning().log("adminURL %s does not contain ${name}", uri);
continue;
}
uri = uri.setPath(path);
if (!isSSH(uri)) {
repLog.atWarning().log(
"adminURL '%s' is invalid: only SSH and HTTP are supported", uri);
continue;
}
}
uris.put(config, uri);
adminURLUsed = true;
}
if (!adminURLUsed) {
for (URIish uri : config.getURIs(projectName, "*")) {
uris.put(config, uri);
}
}
}
return uris;
}