in java/com/google/gitiles/PathServlet.java [527:574]
private void showSymlink(HttpServletRequest req, HttpServletResponse res, WalkResult wr)
throws IOException {
GitilesView view = ViewFilter.getView(req);
Map<String, Object> data = Maps.newHashMap();
ObjectLoader loader = wr.getObjectReader().open(wr.id, OBJ_BLOB);
String target;
try {
target = RawParseUtils.decode(loader.getCachedBytes(TreeSoyData.MAX_SYMLINK_SIZE));
} catch (LargeObjectException.OutOfMemory e) {
throw e;
} catch (LargeObjectException e) {
data.put("sha", ObjectId.toString(wr.id));
data.put("data", null);
data.put("size", Long.toString(loader.getSize()));
renderHtml(
req,
res,
PATH_DETAIL,
ImmutableMap.of(
"title", ViewFilter.getView(req).getPathPart(),
"breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
"type", FileType.REGULAR_FILE.toString(),
"data", data));
return;
}
String url =
resolveTargetUrl(
GitilesView.path().copyFrom(view).setPathPart(dirname(view.getPathPart())).build(),
target);
data.put("title", view.getPathPart());
data.put("target", target);
if (url != null) {
data.put("targetUrl", url);
}
// TODO(sop): Allow caching files by SHA-1 when no S cookie is sent.
renderHtml(
req,
res,
PATH_DETAIL,
ImmutableMap.of(
"title", ViewFilter.getView(req).getPathPart(),
"breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
"type", FileType.SYMLINK.toString(),
"data", data));
}