in java/com/google/gitiles/GitilesView.java [621:726]
public String toUrl() {
StringBuilder url = new StringBuilder(servletPath).append('/');
ListMultimap<String, String> params = this.params;
switch (type) {
case HOST_INDEX:
if (repositoryPrefix != null) {
url.append(repositoryPrefix).append('/');
}
params = LinkedListMultimap.create();
if (repositoryPrefix == null && !this.params.containsKey("format")) {
params.put("format", FormatType.HTML.toString());
}
params.putAll(this.params);
break;
case REPOSITORY_INDEX:
url.append(repositoryName).append('/');
break;
case REFS:
url.append(repositoryName).append("/+refs");
break;
case DESCRIBE:
url.append(repositoryName).append("/+describe");
break;
case REVISION:
url.append(repositoryName).append("/+/").append(revision.getName());
break;
case ARCHIVE:
url.append(repositoryName).append("/+archive/").append(revision.getName());
if (path != null) {
url.append('/').append(path);
}
url.append(firstNonNull(extension, DEFAULT_ARCHIVE_EXTENSION));
break;
case PATH:
url.append(repositoryName)
.append("/+/")
.append(revision.getName())
.append('/')
.append(path);
break;
case SHOW:
url.append(repositoryName)
.append("/+show/")
.append(revision.getName())
.append('/')
.append(path);
break;
case DIFF:
url.append(repositoryName).append("/+/");
if (isFirstParent(revision, oldRevision)) {
url.append(revision.getName()).append("^!");
} else {
url.append(oldRevision.getName()).append("..").append(revision.getName());
}
url.append('/').append(path);
break;
case LOG:
url.append(repositoryName).append("/+log");
if (!Revision.isNull(revision)) {
url.append('/');
if (!Revision.isNull(oldRevision)) {
url.append(oldRevision.getName()).append("..");
}
url.append(revision.getName());
if (path != null) {
url.append('/').append(path);
}
}
break;
case BLAME:
url.append(repositoryName)
.append("/+blame/")
.append(revision.getName())
.append('/')
.append(path);
break;
case DOC:
url.append(repositoryName);
if (path != null && path.endsWith(".md")) {
url.append("/+/");
} else {
url.append("/+doc/");
}
url.append(revision.getName());
if (path != null) {
url.append('/').append(path);
}
break;
case ROOTED_DOC:
if (path != null) {
url.append(path);
}
break;
default:
throw new IllegalStateException("Unknown view type: " + type);
}
String baseUrl = escapeName(url.toString());
url = new StringBuilder();
if (!params.isEmpty()) {
url.append('?').append(paramsToString(params));
}
if (!Strings.isNullOrEmpty(anchor)) {
url.append('#').append(escapeName(anchor));
}
return baseUrl + url;
}