in src/main/java/com/googlesource/gerrit/plugins/gitiles/PluginModule.java [76:123]
GitilesUrls getGitilesUrls(
@GerritServerConfig Config gerritConfig,
@Nullable @CanonicalWebUrl String gerritUrl,
@SshAdvertisedAddresses List<String> advertisedSshAddresses)
throws MalformedURLException, UnknownHostException {
URL u;
String hostName;
if (gerritUrl != null) {
u = new URL(gerritUrl);
hostName = u.getHost() != null ? u.getHost() : getLocalHostName();
} else {
u = null;
hostName = "Gerrit";
}
// Arbitrarily prefer SSH, then HTTP, then git.
// TODO: Use user preferences.
String gitUrl;
if (!advertisedSshAddresses.isEmpty()) {
String addr = advertisedSshAddresses.get(0);
int index = addr.indexOf(":");
String port = "";
if (index != -1) {
port = addr.substring(index);
}
if (addr.startsWith("*:") || "".equals(addr)) {
if (u != null && u.getHost() != null) {
addr = u.getHost();
} else {
addr = getLocalHostName();
}
} else {
if (index != -1) {
addr = addr.substring(0, index);
}
}
gitUrl = "ssh://" + addr + port + "/";
} else {
gitUrl = gerritConfig.getString("gerrit", null, "gitHttpUrl");
if (gitUrl == null) {
gitUrl = gerritConfig.getString("gerrit", null, "canonicalGitUrl");
}
}
if (gitUrl == null) {
throw new ProvisionException("Unable to determine any canonical git URL from gerrit.config");
}
return new DefaultUrls(hostName, gitUrl, gerritUrl);
}