private RevisionParser.Result parseRevision(HttpServletRequest req, String path) throws IOException { RevisionParser revParser = new RevisionParser( ServletUtils.getRepository(req), accessFactory.forRequest(req), visibilityCache); return revParser.parse(checkLeadingSlash(path)); }
@Override protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws IOException { MarkdownConfig cfg = MarkdownConfig.get(getAccess(req).getConfig()); if (!cfg.render) { res.setStatus(SC_NOT_FOUND); return; } GitilesView view = ViewFilter.getView(req); Repository repo = ServletUtils.getRepository(req); try (RevWalk rw = new RevWalk(repo)) { ObjectReader reader = rw.getObjectReader(); String path = view.getPathPart(); RevTree root; try { root = rw.parseTree(view.getRevision().getId()); } catch (IncorrectObjectTypeException e) { res.setStatus(SC_NOT_FOUND); return; } MarkdownFile srcmd = findFile(rw, root, path); if (srcmd == null) { res.setStatus(SC_NOT_FOUND); return; } MarkdownFile navmd = findFile(rw, root, NAVBAR_MD); String curEtag = etag(srcmd, navmd); if (etagMatch(req, curEtag)) { res.setStatus(SC_NOT_MODIFIED); return; } view = view.toBuilder().setPathPart(srcmd.path).build(); try { srcmd.read(reader, cfg); if (navmd != null) { navmd.read(reader, cfg); } } catch (LargeObjectException.ExceedsLimit errBig) { fileTooBig(res, view, errBig); return; } catch (IOException err) { readError(res, view, err); return; } MarkdownToHtml.Builder fmt = MarkdownToHtml.builder() .setConfig(cfg) .setGitilesView(view) .setRequestUri(req.getRequestURI()) .setReader(reader) .setRootTree(root); res.setHeader(HttpHeaders.ETAG, curEtag); showDoc(req, res, view, cfg, fmt, navmd, srcmd); } }
@Override public RepositoryDescription getRepositoryDescription() throws IOException { return buildDescription(ServletUtils.getRepository(req), Collections.<String>emptySet()); }
@Override public String getRepositoryName() { return getRepositoryName(ServletUtils.getRepository(req)); }