Also reformat main servlet code.
Background: see https://gerrit-review.googlesource.com/c/77101/.
Change-Id: I1a66e301334a2fb9986ac35a5adf0b05e0c0079d
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
index 152a50a..116bf29 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
@@ -35,6 +35,7 @@
// valid JAR file, whose code would have access to cookies on the domain.
private static final ImmutableMap<String, ArchiveFormat> BY_EXT;
+
static {
ImmutableMap.Builder<String, ArchiveFormat> byExt = ImmutableMap.builder();
for (ArchiveFormat format : ArchiveFormat.values()) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java
index 851723f..8a3b1e2 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveServlet.java
@@ -57,8 +57,8 @@
return;
}
- Optional<ArchiveFormat> format = ArchiveFormat.byExtension(
- view.getExtension(), getAccess(req).getConfig());
+ Optional<ArchiveFormat> format =
+ ArchiveFormat.byExtension(view.getExtension(), getAccess(req).getConfig());
if (!format.isPresent()) {
res.setStatus(SC_NOT_FOUND);
return;
@@ -95,15 +95,14 @@
}
private String getFilename(GitilesView view, Revision rev, String ext) {
- StringBuilder sb = new StringBuilder()
- .append(PathUtil.basename(view.getRepositoryName()))
- .append('-')
- .append(rev.getName());
+ StringBuilder sb =
+ new StringBuilder()
+ .append(PathUtil.basename(view.getRepositoryName()))
+ .append('-')
+ .append(rev.getName());
if (view.getPathPart() != null) {
- sb.append('-')
- .append(view.getPathPart().replace('/', '-'));
+ sb.append('-').append(view.getPathPart().replace('/', '-'));
}
- return sb.append(ext)
- .toString();
+ return sb.append(ext).toString();
}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
index 476e8cc..49c62df 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
@@ -66,6 +66,7 @@
public static BaseServlet notFoundServlet() {
return new BaseServlet(null, null) {
private static final long serialVersionUID = 1L;
+
@Override
public void service(HttpServletRequest req, HttpServletResponse res) {
res.setStatus(SC_NOT_FOUND);
@@ -147,8 +148,7 @@
* @param req in-progress request.
* @param res in-progress response.
*/
- protected void doGetHtml(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws IOException {
res.sendError(SC_BAD_REQUEST);
}
@@ -158,8 +158,7 @@
* @param req in-progress request.
* @param res in-progress response.
*/
- protected void doGetText(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetText(HttpServletRequest req, HttpServletResponse res) throws IOException {
res.sendError(SC_BAD_REQUEST);
}
@@ -169,8 +168,7 @@
* @param req in-progress request.
* @param res in-progress response.
*/
- protected void doGetJson(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetJson(HttpServletRequest req, HttpServletResponse res) throws IOException {
res.sendError(SC_BAD_REQUEST);
}
@@ -202,10 +200,10 @@
* @param soyData data for Soy.
* @throws IOException an error occurred during rendering.
*/
- protected void renderHtml(HttpServletRequest req, HttpServletResponse res, String templateName,
- Map<String, ?> soyData) throws IOException {
- renderer.render(req, res, templateName,
- startHtmlResponse(req, res, soyData));
+ protected void renderHtml(
+ HttpServletRequest req, HttpServletResponse res, String templateName, Map<String, ?> soyData)
+ throws IOException {
+ renderer.render(req, res, templateName, startHtmlResponse(req, res, soyData));
}
/**
@@ -226,22 +224,22 @@
* written only on calling {@code close()}.
* @throws IOException an error occurred during rendering the header.
*/
- protected OutputStream startRenderStreamingHtml(HttpServletRequest req,
- HttpServletResponse res, String templateName, Map<String, ?> soyData) throws IOException {
+ protected OutputStream startRenderStreamingHtml(
+ HttpServletRequest req, HttpServletResponse res, String templateName, Map<String, ?> soyData)
+ throws IOException {
req.setAttribute(STREAMING_ATTRIBUTE, true);
return renderer.renderStreaming(res, templateName, startHtmlResponse(req, res, soyData));
}
- private Map<String, ?> startHtmlResponse(HttpServletRequest req, HttpServletResponse res,
- Map<String, ?> soyData) throws IOException {
+ private Map<String, ?> startHtmlResponse(
+ HttpServletRequest req, HttpServletResponse res, Map<String, ?> soyData) throws IOException {
res.setContentType(FormatType.HTML.getMimeType());
res.setCharacterEncoding(UTF_8.name());
setCacheHeaders(res);
Map<String, Object> allData = getData(req);
- GitilesConfig.putVariant(
- getAccess(req).getConfig(), "customHeader", "headerVariant", allData);
+ GitilesConfig.putVariant(getAccess(req).getConfig(), "customHeader", "headerVariant", allData);
allData.putAll(soyData);
GitilesView view = ViewFilter.getView(req);
if (!allData.containsKey("repositoryName") && view.getRepositoryName() != null) {
@@ -263,8 +261,9 @@
* @param src @see com.google.gson.Gson#toJson(Object, Type, Appendable)
* @param typeOfSrc @see com.google.gson.Gson#toJson(Object, Type, Appendable)
*/
- protected void renderJson(HttpServletRequest req, HttpServletResponse res, Object src,
- Type typeOfSrc) throws IOException {
+ protected void renderJson(
+ HttpServletRequest req, HttpServletResponse res, Object src, Type typeOfSrc)
+ throws IOException {
setApiHeaders(res, JSON);
res.setStatus(SC_OK);
try (Writer writer = newWriter(req, res)) {
@@ -276,9 +275,9 @@
@SuppressWarnings("unused") // Used in subclasses.
protected GsonBuilder newGsonBuilder(HttpServletRequest req) throws IOException {
return new GsonBuilder()
- .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
- .setPrettyPrinting()
- .generateNonExecutableJson();
+ .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
+ .setPrettyPrinting()
+ .generateNonExecutableJson();
}
/**
@@ -288,8 +287,8 @@
* @param contentType contentType to set.
* @return the response's writer.
*/
- protected Writer startRenderText(HttpServletRequest req, HttpServletResponse res,
- String contentType) throws IOException {
+ protected Writer startRenderText(
+ HttpServletRequest req, HttpServletResponse res, String contentType) throws IOException {
setApiHeaders(res, contentType);
return newWriter(req, res);
}
@@ -324,8 +323,9 @@
*
* @throws IOException
*/
- protected void renderTextError(HttpServletRequest req, HttpServletResponse res, int statusCode,
- String message) throws IOException {
+ protected void renderTextError(
+ HttpServletRequest req, HttpServletResponse res, int statusCode, String message)
+ throws IOException {
res.setStatus(statusCode);
setApiHeaders(res, TEXT);
setCacheHeaders(res);
@@ -371,8 +371,7 @@
return new OutputStreamWriter(os, res.getCharacterEncoding());
}
- private Writer newWriter(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ private Writer newWriter(HttpServletRequest req, HttpServletResponse res) throws IOException {
OutputStream out;
if (acceptsGzipEncoding(req)) {
res.setHeader(HttpHeaders.CONTENT_ENCODING, "gzip");
@@ -388,7 +387,7 @@
if (accepts == null) {
return false;
}
- for (int b = 0; b < accepts.length();) {
+ for (int b = 0; b < accepts.length(); ) {
int comma = accepts.indexOf(',', b);
int e = 0 <= comma ? comma : accepts.length();
String term = accepts.substring(b, e).trim();
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java
index 87fc5c9..09dd548 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java
@@ -61,8 +61,7 @@
this.view = view;
}
- public Map<String, Object> toSoyData(ObjectId blobId)
- throws MissingObjectException, IOException {
+ public Map<String, Object> toSoyData(ObjectId blobId) throws MissingObjectException, IOException {
return toSoyData(null, blobId);
}
@@ -107,8 +106,11 @@
int last = 0;
for (ParseResult r : results) {
- checkState(r.getOffset() >= last,
- "out-of-order ParseResult, expected %s >= %s", r.getOffset(), last);
+ checkState(
+ r.getOffset() >= last,
+ "out-of-order ParseResult, expected %s >= %s",
+ r.getOffset(),
+ last);
line = writeResult(lines, null, content, last, r.getOffset());
last = r.getOffset() + r.getLength();
line = writeResult(lines, r.getStyleKeysString(), content, r.getOffset(), last);
@@ -132,8 +134,8 @@
}
}
- private static SoyListData writeResult(SoyListData lines, String classes,
- String s, int start, int end) {
+ private static SoyListData writeResult(
+ SoyListData lines, String classes, String s, int start, int end) {
SoyListData line = lines.getListData(lines.length() - 1);
while (true) {
int nl = nextLineBreak(s, start, end);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
index f457088..4027d91 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -100,8 +100,7 @@
return this;
}
- CommitData build(HttpServletRequest req, RevCommit c, Set<Field> fs)
- throws IOException {
+ CommitData build(HttpServletRequest req, RevCommit c, Set<Field> fs) throws IOException {
checkFields(fs);
checkNotNull(req, "request");
Repository repo = ServletUtils.getRepository(req);
@@ -124,17 +123,15 @@
}
}
if (fs.contains(Field.URL)) {
- result.url = GitilesView.revision()
- .copyFrom(view)
- .setRevision(c)
- .toUrl();
+ result.url = GitilesView.revision().copyFrom(view).setRevision(c).toUrl();
}
if (fs.contains(Field.LOG_URL)) {
result.logUrl = urlFromView(view, c, GitilesView.log());
}
if (fs.contains(Field.ARCHIVE_URL)) {
- result.archiveUrl = urlFromView(view, c,
- GitilesView.archive().setExtension(archiveFormat.getDefaultSuffix()));
+ result.archiveUrl =
+ urlFromView(
+ view, c, GitilesView.archive().setExtension(archiveFormat.getDefaultSuffix()));
}
if (fs.contains(Field.ARCHIVE_TYPE)) {
result.archiveType = archiveFormat;
@@ -186,10 +183,11 @@
}
}
- private static String urlFromView(GitilesView view, RevCommit commit,
- GitilesView.Builder builder) {
+ private static String urlFromView(
+ GitilesView view, RevCommit commit, GitilesView.Builder builder) {
Revision rev = view.getRevision();
- return builder.copyFrom(view)
+ return builder
+ .copyFrom(view)
.setOldRevision(Revision.NULL)
.setRevision(rev.getId().equals(commit) ? rev.getName() : commit.name(), commit)
.setPathPart(view.getPathPart())
@@ -200,18 +198,23 @@
if (refsById == null) {
refsById = repo.getAllRefsByPeeledObjectId();
}
- return FluentIterable.from(firstNonNull(refsById.get(id), ImmutableSet.<Ref> of()))
- .filter(new Predicate<Ref>() {
- @Override
- public boolean apply(Ref ref) {
- return ref.getName().startsWith(prefix);
- }
- }).toSortedList(Ordering.natural().onResultOf(new Function<Ref, String>() {
- @Override
- public String apply(Ref ref) {
- return ref.getName();
- }
- }));
+ return FluentIterable.from(firstNonNull(refsById.get(id), ImmutableSet.<Ref>of()))
+ .filter(
+ new Predicate<Ref>() {
+ @Override
+ public boolean apply(Ref ref) {
+ return ref.getName().startsWith(prefix);
+ }
+ })
+ .toSortedList(
+ Ordering.natural()
+ .onResultOf(
+ new Function<Ref, String>() {
+ @Override
+ public String apply(Ref ref) {
+ return ref.getName();
+ }
+ }));
}
private AbstractTreeIterator getTreeIterator(RevCommit commit) throws IOException {
@@ -223,9 +226,10 @@
private DiffList computeDiffEntries(Repository repo, GitilesView view, RevCommit commit)
throws IOException {
DiffList result = new DiffList();
- result.revision = view.getRevision().matches(commit)
- ? view.getRevision()
- : Revision.peeled(commit.name(), commit);
+ result.revision =
+ view.getRevision().matches(commit)
+ ? view.getRevision()
+ : Revision.peeled(commit.name(), commit);
AbstractTreeIterator oldTree;
switch (commit.getParentCount()) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitJsonData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitJsonData.java
index b1d8d8f..1db047b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitJsonData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitJsonData.java
@@ -34,8 +34,9 @@
import javax.servlet.http.HttpServletRequest;
public class CommitJsonData {
- static final ImmutableSet<Field> DEFAULT_FIELDS = Sets.immutableEnumSet(
- Field.SHA, Field.TREE, Field.PARENTS, Field.AUTHOR, Field.COMMITTER, Field.MESSAGE);
+ static final ImmutableSet<Field> DEFAULT_FIELDS =
+ Sets.immutableEnumSet(
+ Field.SHA, Field.TREE, Field.PARENTS, Field.AUTHOR, Field.COMMITTER, Field.MESSAGE);
public static class Log {
public List<Commit> log;
@@ -85,9 +86,7 @@
Commit toJsonData(HttpServletRequest req, RevCommit c, Set<Field> fs, DateFormatter df)
throws IOException {
- CommitData cd = new CommitData.Builder()
- .setRevWalk(walk)
- .build(req, c, fs);
+ CommitData cd = new CommitData.Builder().setRevWalk(walk).build(req, c, fs);
Commit result = new Commit();
if (cd.sha != null) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
index 9e5a9fe..d5bd8fd 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitSoyData.java
@@ -47,12 +47,21 @@
/** Soy data converter for git commits. */
public class CommitSoyData {
- static final ImmutableSet<Field> DEFAULT_FIELDS = Sets.immutableEnumSet(Field.AUTHOR,
- Field.COMMITTER, Field.SHA, Field.TREE, Field.TREE_URL, Field.PARENTS, Field.MESSAGE,
- Field.LOG_URL, Field.ARCHIVE_URL, Field.ARCHIVE_TYPE);
+ static final ImmutableSet<Field> DEFAULT_FIELDS =
+ Sets.immutableEnumSet(
+ Field.AUTHOR,
+ Field.COMMITTER,
+ Field.SHA,
+ Field.TREE,
+ Field.TREE_URL,
+ Field.PARENTS,
+ Field.MESSAGE,
+ Field.LOG_URL,
+ Field.ARCHIVE_URL,
+ Field.ARCHIVE_TYPE);
- private static final ImmutableSet<Field> NESTED_FIELDS = Sets.immutableEnumSet(
- Field.PARENT_BLAME_URL);
+ private static final ImmutableSet<Field> NESTED_FIELDS =
+ Sets.immutableEnumSet(Field.PARENT_BLAME_URL);
private Linkifier linkifier;
private RevWalk walk;
@@ -74,17 +83,14 @@
return this;
}
- Map<String, Object> toSoyData(HttpServletRequest req, RevCommit c, Set<Field> fs,
- DateFormatter df) throws IOException {
+ Map<String, Object> toSoyData(
+ HttpServletRequest req, RevCommit c, Set<Field> fs, DateFormatter df) throws IOException {
GitilesView view = ViewFilter.getView(req);
if (cdb == null) {
cdb = new CommitData.Builder();
}
- CommitData cd = cdb
- .setRevWalk(walk)
- .setArchiveFormat(archiveFormat)
- .build(req, c, fs);
+ CommitData cd = cdb.setRevWalk(walk).setArchiveFormat(archiveFormat).build(req, c, fs);
Map<String, Object> data = Maps.newHashMapWithExpectedSize(fs.size());
if (cd.author != null) {
@@ -139,13 +145,16 @@
if (cd.diffEntries != null) {
data.put("diffTree", toSoyData(view, cd.diffEntries));
}
- checkState(Sets.difference(fs, NESTED_FIELDS).size() == data.size(),
- "bad commit data fields: %s != %s", fs, data.keySet());
+ checkState(
+ Sets.difference(fs, NESTED_FIELDS).size() == data.size(),
+ "bad commit data fields: %s != %s",
+ fs,
+ data.keySet());
return data;
}
- Map<String, Object> toSoyData(HttpServletRequest req, RevCommit commit,
- DateFormatter df) throws IOException {
+ Map<String, Object> toSoyData(HttpServletRequest req, RevCommit commit, DateFormatter df)
+ throws IOException {
return toSoyData(req, commit, DEFAULT_FIELDS, df);
}
@@ -159,8 +168,8 @@
"relativeTime", RelativeDateFormatter.format(ident.getWhen()));
}
- private List<Map<String, String>> toSoyData(GitilesView view, Set<Field> fs,
- List<RevCommit> parents) {
+ private List<Map<String, String>> toSoyData(
+ GitilesView view, Set<Field> fs, List<RevCommit> parents) {
List<Map<String, String>> result = Lists.newArrayListWithCapacity(parents.size());
int i = 1;
// TODO(dborowitz): Render something slightly different when we're actively
@@ -180,17 +189,16 @@
Map<String, String> e = Maps.newHashMapWithExpectedSize(4);
e.put("sha", name);
- e.put("url", GitilesView.revision()
- .copyFrom(view)
- .setRevision(parentName, parent)
- .toUrl());
+ e.put("url", GitilesView.revision().copyFrom(view).setRevision(parentName, parent).toUrl());
e.put("diffUrl", diff.toUrl());
if (fs.contains(Field.PARENT_BLAME_URL)) {
// Assumes caller has ensured path is a file.
- e.put("blameUrl", GitilesView.blame()
- .copyFrom(view)
- .setRevision(Revision.peeled(parentName, parent))
- .toUrl());
+ e.put(
+ "blameUrl",
+ GitilesView.blame()
+ .copyFrom(view)
+ .setRevision(Revision.peeled(parentName, parent))
+ .toUrl());
}
result.add(e);
}
@@ -201,11 +209,12 @@
if (dl.oldRevision == null) {
return NullData.INSTANCE;
}
- GitilesView.Builder diffUrl = GitilesView.diff()
- .copyFrom(view)
- .setOldRevision(dl.oldRevision)
- .setRevision(dl.revision)
- .setPathPart("");
+ GitilesView.Builder diffUrl =
+ GitilesView.diff()
+ .copyFrom(view)
+ .setOldRevision(dl.oldRevision)
+ .setRevision(dl.revision)
+ .setPathPart("");
List<Object> result = Lists.newArrayListWithCapacity(dl.entries.size());
for (DiffEntry e : dl.entries) {
@@ -213,18 +222,22 @@
ChangeType type = e.getChangeType();
if (type != DELETE) {
entry.put("path", e.getNewPath());
- entry.put("url", GitilesView.path()
- .copyFrom(view)
- .setRevision(dl.revision)
- .setPathPart(e.getNewPath())
- .toUrl());
+ entry.put(
+ "url",
+ GitilesView.path()
+ .copyFrom(view)
+ .setRevision(dl.revision)
+ .setPathPart(e.getNewPath())
+ .toUrl());
} else {
entry.put("path", e.getOldPath());
- entry.put("url", GitilesView.path()
- .copyFrom(view)
- .setRevision(dl.oldRevision)
- .setPathPart(e.getOldPath())
- .toUrl());
+ entry.put(
+ "url",
+ GitilesView.path()
+ .copyFrom(view)
+ .setRevision(dl.oldRevision)
+ .setPathPart(e.getOldPath())
+ .toUrl());
}
entry.put("diffUrl", diffUrl.setAnchor("F" + result.size()).toUrl());
entry.put("changeType", e.getChangeType().toString());
@@ -236,17 +249,19 @@
return result;
}
- private static List<Map<String, String>> toSoyData(GitilesView view, List<Ref> refs,
- String prefix) {
+ private static List<Map<String, String>> toSoyData(
+ GitilesView view, List<Ref> refs, String prefix) {
List<Map<String, String>> result = Lists.newArrayListWithCapacity(refs.size());
for (Ref ref : refs) {
if (ref.getName().startsWith(prefix)) {
- result.add(ImmutableMap.of(
- "name", ref.getName().substring(prefix.length()),
- "url", GitilesView.revision()
- .copyFrom(view)
- .setRevision(Revision.unpeeled(ref.getName(), ref.getObjectId()))
- .toUrl()));
+ result.add(
+ ImmutableMap.of(
+ "name", ref.getName().substring(prefix.length()),
+ "url",
+ GitilesView.revision()
+ .copyFrom(view)
+ .setRevision(Revision.unpeeled(ref.getName(), ref.getObjectId()))
+ .toUrl()));
}
}
return result;
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java b/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java
index e167f94..0fedbf4 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java
@@ -43,15 +43,15 @@
* @param defaultValue value to use when the value is not assigned.
* @return a standard duration representing the time read, or defaultValue.
*/
- public static Duration getDuration(Config config, String section, String subsection, String name,
- Duration defaultValue) {
+ public static Duration getDuration(
+ Config config, String section, String subsection, String name, Duration defaultValue) {
String valStr = config.getString(section, subsection, name);
if (valStr == null) {
- return defaultValue;
+ return defaultValue;
}
valStr = valStr.trim();
if (valStr.isEmpty()) {
- return defaultValue;
+ return defaultValue;
}
Duration val = parseDuration(valStr);
if (val == null) {
@@ -162,21 +162,19 @@
* {@link TimeZone#getTimeZone(String)}, unknown time zones are treated as
* GMT.
*/
- public static Optional<TimeZone> getTimeZone(Config config, String section, String subsection,
- String name) {
+ public static Optional<TimeZone> getTimeZone(
+ Config config, String section, String subsection, String name) {
String id = config.getString(section, subsection, name);
- return id != null ? Optional.of(TimeZone.getTimeZone(id)) : Optional.<TimeZone> absent();
+ return id != null ? Optional.of(TimeZone.getTimeZone(id)) : Optional.<TimeZone>absent();
}
private static Matcher matcher(String pattern, String valStr) {
- return Pattern.compile(pattern).matcher(valStr);
+ return Pattern.compile(pattern).matcher(valStr);
}
private static boolean anyOf(String a, String... cases) {
- return Iterables.any(ImmutableList.copyOf(cases),
- Predicates.equalTo(a.toLowerCase()));
+ return Iterables.any(ImmutableList.copyOf(cases), Predicates.equalTo(a.toLowerCase()));
}
- private ConfigUtil() {
- }
+ private ConfigUtil() {}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java b/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java
index 0a57b6b..dd6830d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DebugRenderer.java
@@ -28,11 +28,15 @@
/** Renderer that reloads Soy templates from the filesystem on every request. */
public class DebugRenderer extends Renderer {
- public DebugRenderer(String staticPrefix, Iterable<String> customTemplatesFilenames,
- final String soyTemplatesRoot, String siteTitle) {
+ public DebugRenderer(
+ String staticPrefix,
+ Iterable<String> customTemplatesFilenames,
+ final String soyTemplatesRoot,
+ String siteTitle) {
super(
new FileUrlMapper(soyTemplatesRoot + File.separator),
- ImmutableMap.<String, String> of(), staticPrefix,
+ ImmutableMap.<String, String>of(),
+ staticPrefix,
FluentIterable.from(customTemplatesFilenames).transform(new FileUrlMapper()),
siteTitle);
}
@@ -44,8 +48,7 @@
@Override
protected SoyTofu getTofu() {
- SoyFileSet.Builder builder = SoyFileSet.builder()
- .setCompileTimeGlobals(globals);
+ SoyFileSet.Builder builder = SoyFileSet.builder().setCompileTimeGlobals(globals);
for (URL template : templates.values()) {
try {
checkState(new File(template.toURI()).exists(), "Missing Soy template %s", template);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java
index 0e435c6..a31be1c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultAccess.java
@@ -57,7 +57,7 @@
private static final String ANONYMOUS_USER_KEY = "anonymous user";
private static final String DEFAULT_DESCRIPTION =
- "Unnamed repository; edit this file 'description' to name the repository.";
+ "Unnamed repository; edit this file 'description' to name the repository.";
private static final Collator US_COLLATOR = Collator.getInstance(Locale.US);
@@ -68,8 +68,12 @@
private final Config baseConfig;
private final FileResolver<HttpServletRequest> resolver;
- Factory(File basePath, String baseGitUrl, Config baseConfig,
- FileResolver<HttpServletRequest> resolver) throws IOException {
+ Factory(
+ File basePath,
+ String baseGitUrl,
+ Config baseConfig,
+ FileResolver<HttpServletRequest> resolver)
+ throws IOException {
this.basePath = checkNotNull(basePath, "basePath");
this.baseGitUrl = checkNotNull(baseGitUrl, "baseGitUrl");
this.baseConfig = checkNotNull(baseConfig, "baseConfig");
@@ -82,8 +86,12 @@
return newAccess(basePath, canonicalBasePath, baseGitUrl, resolver, req);
}
- protected DefaultAccess newAccess(File basePath, String canonicalBasePath, String baseGitUrl,
- FileResolver<HttpServletRequest> resolver, HttpServletRequest req) {
+ protected DefaultAccess newAccess(
+ File basePath,
+ String canonicalBasePath,
+ String baseGitUrl,
+ FileResolver<HttpServletRequest> resolver,
+ HttpServletRequest req) {
return new DefaultAccess(basePath, canonicalBasePath, baseGitUrl, baseConfig, resolver, req);
}
}
@@ -95,8 +103,13 @@
protected final FileResolver<HttpServletRequest> resolver;
protected final HttpServletRequest req;
- protected DefaultAccess(File basePath, String canonicalBasePath, String baseGitUrl,
- Config baseConfig, FileResolver<HttpServletRequest> resolver, HttpServletRequest req) {
+ protected DefaultAccess(
+ File basePath,
+ String canonicalBasePath,
+ String baseGitUrl,
+ Config baseConfig,
+ FileResolver<HttpServletRequest> resolver,
+ HttpServletRequest req) {
this.basePath = checkNotNull(basePath, "basePath");
this.canonicalBasePath = checkNotNull(canonicalBasePath, "canonicalBasePath");
this.baseGitUrl = checkNotNull(baseGitUrl, "baseGitUrl");
@@ -106,8 +119,8 @@
}
@Override
- public Map<String, RepositoryDescription> listRepositories(String prefix,
- Set<String> branches) throws IOException {
+ public Map<String, RepositoryDescription> listRepositories(String prefix, Set<String> branches)
+ throws IOException {
Map<String, RepositoryDescription> repos = Maps.newTreeMap(US_COLLATOR);
for (Repository repo : scanRepositories(basePath, prefix, req)) {
repos.put(getRepositoryName(repo), buildDescription(repo, branches));
@@ -130,7 +143,7 @@
@Override
public RepositoryDescription getRepositoryDescription() throws IOException {
- return buildDescription(ServletUtils.getRepository(req), Collections.<String> emptySet());
+ return buildDescription(ServletUtils.getRepository(req), Collections.<String>emptySet());
}
@Override
@@ -170,8 +183,8 @@
if (path.startsWith(canonicalBasePath)) {
return path.substring(canonicalBasePath.length() + 1);
}
- throw new IllegalStateException(String.format(
- "Repository path %s is outside base path %s", path, base));
+ throw new IllegalStateException(
+ String.format("Repository path %s is outside base path %s", path, base));
}
private String loadDescriptionText(Repository repo) throws IOException {
@@ -223,8 +236,8 @@
return "refs/heads/" + name;
}
- private Collection<Repository> scanRepositories(File basePath, String prefix,
- HttpServletRequest req) throws IOException {
+ private Collection<Repository> scanRepositories(
+ File basePath, String prefix, HttpServletRequest req) throws IOException {
List<Repository> repos = Lists.newArrayList();
Queue<File> todo = initScan(basePath, prefix);
while (!todo.isEmpty()) {
@@ -243,8 +256,7 @@
return repos;
}
- private Queue<File> initScan(File basePath, String prefix)
- throws IOException {
+ private Queue<File> initScan(File basePath, String prefix) throws IOException {
Queue<File> todo = Queues.newArrayDeque();
File[] entries;
if (isValidPrefix(prefix)) {
@@ -262,7 +274,8 @@
private static boolean isValidPrefix(String prefix) {
return !Strings.isNullOrEmpty(prefix)
- && !prefix.equals(".") && !prefix.equals("..")
+ && !prefix.equals(".")
+ && !prefix.equals("..")
&& !prefix.contains("../")
&& !prefix.endsWith("/..");
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultRenderer.java b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultRenderer.java
index f3f244b..238aa74 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultRenderer.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultRenderer.java
@@ -29,15 +29,18 @@
private final SoyTofu tofu;
DefaultRenderer() {
- this("", ImmutableList.<URL> of(), "");
+ this("", ImmutableList.<URL>of(), "");
}
public DefaultRenderer(String staticPrefix, Iterable<URL> customTemplates, String siteTitle) {
- this(ImmutableMap.<String, String> of(), staticPrefix, customTemplates, siteTitle);
+ this(ImmutableMap.<String, String>of(), staticPrefix, customTemplates, siteTitle);
}
- public DefaultRenderer(Map<String, String> globals, String staticPrefix,
- Iterable<URL> customTemplates, String siteTitle) {
+ public DefaultRenderer(
+ Map<String, String> globals,
+ String staticPrefix,
+ Iterable<URL> customTemplates,
+ String siteTitle) {
super(
new Function<String, URL>() {
@Override
@@ -45,9 +48,11 @@
return Resources.getResource(Renderer.class, "templates/" + name);
}
},
- globals, staticPrefix, customTemplates, siteTitle);
- SoyFileSet.Builder builder = SoyFileSet.builder()
- .setCompileTimeGlobals(this.globals);
+ globals,
+ staticPrefix,
+ customTemplates,
+ siteTitle);
+ SoyFileSet.Builder builder = SoyFileSet.builder().setCompileTimeGlobals(this.globals);
for (URL template : templates.values()) {
builder.add(template);
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java
index 949fbab..adc280a 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DescribeServlet.java
@@ -49,8 +49,7 @@
private static boolean getBooleanParam(GitilesView view, String name) {
List<String> values = view.getParameters().get(name);
- return !values.isEmpty()
- && (values.get(0).isEmpty() || values.get(0).equals("1"));
+ return !values.isEmpty() && (values.get(0).isEmpty() || values.get(0).equals("1"));
}
protected DescribeServlet(GitilesAccess.Factory accessFactory) {
@@ -58,8 +57,7 @@
}
@Override
- protected void doGetText(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetText(HttpServletRequest req, HttpServletResponse res) throws IOException {
String name = describe(ServletUtils.getRepository(req), ViewFilter.getView(req), req, res);
if (name == null) {
return;
@@ -70,36 +68,47 @@
}
@Override
- protected void doGetJson(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetJson(HttpServletRequest req, HttpServletResponse res) throws IOException {
String name = describe(ServletUtils.getRepository(req), ViewFilter.getView(req), req, res);
if (name == null) {
return;
}
- renderJson(req, res,
+ renderJson(
+ req,
+ res,
ImmutableMap.of(ViewFilter.getView(req).getPathPart(), name),
new TypeToken<Map<String, String>>() {}.getType());
}
- private ObjectId resolve(Repository repo, GitilesView view, HttpServletRequest req,
- HttpServletResponse res) throws IOException {
+ private ObjectId resolve(
+ Repository repo, GitilesView view, HttpServletRequest req, HttpServletResponse res)
+ throws IOException {
String rev = view.getPathPart();
try {
return repo.resolve(rev);
} catch (RevisionSyntaxException e) {
- renderTextError(req, res, SC_BAD_REQUEST,
+ renderTextError(
+ req,
+ res,
+ SC_BAD_REQUEST,
"Invalid revision syntax: " + RefServlet.sanitizeRefForText(rev));
return null;
} catch (AmbiguousObjectException e) {
- renderTextError(req, res, SC_BAD_REQUEST, String.format(
- "Ambiguous short SHA-1 %s (%s)",
- e.getAbbreviatedObjectId(), Joiner.on(", ").join(e.getCandidates())));
+ renderTextError(
+ req,
+ res,
+ SC_BAD_REQUEST,
+ String.format(
+ "Ambiguous short SHA-1 %s (%s)",
+ e.getAbbreviatedObjectId(),
+ Joiner.on(", ").join(e.getCandidates())));
return null;
}
}
- private String describe(Repository repo, GitilesView view, HttpServletRequest req,
- HttpServletResponse res) throws IOException {
+ private String describe(
+ Repository repo, GitilesView view, HttpServletRequest req, HttpServletResponse res)
+ throws IOException {
if (!getBooleanParam(view, CONTAINS_PARAM)) {
res.setStatus(SC_BAD_REQUEST);
return null;
@@ -125,8 +134,8 @@
return name;
}
- private NameRevCommand nameRevCommand(Git git, ObjectId id,
- HttpServletRequest req, HttpServletResponse res) throws IOException {
+ private NameRevCommand nameRevCommand(
+ Git git, ObjectId id, HttpServletRequest req, HttpServletResponse res) throws IOException {
GitilesView view = ViewFilter.getView(req);
NameRevCommand cmd = git.nameRev();
boolean all = getBooleanParam(view, ALL_PARAM);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
index 788eb07..90d5170 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DiffServlet.java
@@ -93,10 +93,12 @@
}
GitilesAccess access = getAccess(req);
DateFormatter df = new DateFormatter(access, Format.DEFAULT);
- data.put("commit", new CommitSoyData()
- .setLinkifier(linkifier)
- .setArchiveFormat(getArchiveFormat(access))
- .toSoyData(req, walk.parseCommit(view.getRevision().getId()), fs, df));
+ data.put(
+ "commit",
+ new CommitSoyData()
+ .setLinkifier(linkifier)
+ .setArchiveFormat(getArchiveFormat(access))
+ .toSoyData(req, walk.parseCommit(view.getRevision().getId()), fs, df));
}
if (!data.containsKey("repositoryName") && (view.getRepositoryName() != null)) {
data.put("repositoryName", view.getRepositoryName());
@@ -107,15 +109,14 @@
setCacheHeaders(res);
try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.diffDetail", data);
- DiffFormatter diff = new HtmlDiffFormatter(renderer, view, out)) {
+ DiffFormatter diff = new HtmlDiffFormatter(renderer, view, out)) {
formatDiff(repo, oldTree, newTree, view.getPathPart(), diff);
}
}
}
@Override
- protected void doGetText(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetText(HttpServletRequest req, HttpServletResponse res) throws IOException {
GitilesView view = ViewFilter.getView(req);
Repository repo = ServletUtils.getRepository(req);
@@ -143,9 +144,7 @@
return null;
}
return TreeWalk.forPath(
- walk.getObjectReader(),
- view.getPathPart(),
- walk.parseTree(view.getRevision().getId()));
+ walk.getObjectReader(), view.getPathPart(), walk.parseTree(view.getRevision().getId()));
}
private static boolean isParentOf(RevWalk walk, Revision oldRevision, Revision newRevision)
@@ -162,8 +161,13 @@
return (tw.getRawMode(0) & FileMode.TYPE_FILE) > 0;
}
- private static void formatDiff(Repository repo, AbstractTreeIterator oldTree,
- AbstractTreeIterator newTree, String path, DiffFormatter diff) throws IOException {
+ private static void formatDiff(
+ Repository repo,
+ AbstractTreeIterator oldTree,
+ AbstractTreeIterator newTree,
+ String path,
+ DiffFormatter diff)
+ throws IOException {
if (!path.isEmpty()) {
diff.setPathFilter(PathFilter.create(path));
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java b/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
index 1d2f61c..c78ea25 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
@@ -32,8 +32,7 @@
public static Optional<FormatType> getFormatType(HttpServletRequest req) {
@SuppressWarnings("unchecked")
- Optional<FormatType> result =
- (Optional<FormatType>) req.getAttribute(FORMAT_TYPE_ATTRIBUTE);
+ Optional<FormatType> result = (Optional<FormatType>) req.getAttribute(FORMAT_TYPE_ATTRIBUTE);
if (result != null) {
return result;
}
@@ -58,8 +57,7 @@
return set(req, Optional.of(DEFAULT));
}
- private static Optional<FormatType> set(HttpServletRequest req,
- Optional<FormatType> format) {
+ private static Optional<FormatType> set(HttpServletRequest req, Optional<FormatType> format) {
req.setAttribute(FORMAT_TYPE_ATTRIBUTE, format);
return format;
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
index 6434e55..2977507 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
@@ -54,8 +54,7 @@
*/
public Map<String, RepositoryDescription> listRepositories(
@Nullable String prefix, Set<String> branches)
- throws ServiceNotEnabledException, ServiceNotAuthorizedException,
- IOException;
+ throws ServiceNotEnabledException, ServiceNotAuthorizedException, IOException;
/**
* @return an opaque object that uniquely identifies the end-user making the
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
index a196c07..4f7b40f 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
@@ -53,8 +53,8 @@
return config;
}
- public static void putVariant(Config config, String templateName, String keyName,
- Map<String, ? super String> out) {
+ public static void putVariant(
+ Config config, String templateName, String keyName, Map<String, ? super String> out) {
String variant = config.getString("template", null, templateName);
if (variant != null) {
out.put(keyName, variant);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
index d1960b8..4e5da10 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
@@ -77,52 +77,65 @@
private static final String CMD = "\\+[a-z0-9-]*";
@VisibleForTesting
- static final Pattern ROOT_REGEX = Pattern.compile(""
- + "^( " // 1. Everything
- + " /* " // Excess slashes
- + " (/) " // 2. Repo name (just slash)
- + " () " // 3. Command
- + " () " // 4. Path
- + ")$ ",
- Pattern.COMMENTS);
+ static final Pattern ROOT_REGEX =
+ Pattern.compile(
+ ""
+ + "^( " // 1. Everything
+ + " /* " // Excess slashes
+ + " (/) " // 2. Repo name (just slash)
+ + " () " // 3. Command
+ + " () " // 4. Path
+ + ")$ ",
+ Pattern.COMMENTS);
@VisibleForTesting
- static final Pattern REPO_REGEX = Pattern.compile(""
- + "^( " // 1. Everything
- + " /* " // Excess slashes
- + " ( " // 2. Repo name
- + " / " // Leading slash
- + " (?:.(?! " // Anything, as long as it's not followed by...
- + " /" + CMD + "/ " // the special "/<CMD>/" separator,
- + " |/" + CMD + "$ " // or "/<CMD>" at the end of the string
- + " ))*? "
- + " ) "
- + " /* " // Trailing slashes
- + " () " // 3. Command
- + " () " // 4. Path
- + ")$ ",
- Pattern.COMMENTS);
+ static final Pattern REPO_REGEX =
+ Pattern.compile(
+ ""
+ + "^( " // 1. Everything
+ + " /* " // Excess slashes
+ + " ( " // 2. Repo name
+ + " / " // Leading slash
+ + " (?:.(?! " // Anything, as long as it's not followed by...
+ + " /"
+ + CMD
+ + "/ " // the special "/<CMD>/" separator,
+ + " |/"
+ + CMD
+ + "$ " // or "/<CMD>" at the end of the string
+ + " ))*? "
+ + " ) "
+ + " /* " // Trailing slashes
+ + " () " // 3. Command
+ + " () " // 4. Path
+ + ")$ ",
+ Pattern.COMMENTS);
@VisibleForTesting
- static final Pattern REPO_PATH_REGEX = Pattern.compile(""
- + "^( " // 1. Everything
- + " /* " // Excess slashes
- + " ( " // 2. Repo name
- + " / " // Leading slash
- + " .*? " // Anything, non-greedy
- + " ) "
- + " /(" + CMD + ")" // 3. Command
- + " ( " // 4. Path
- + " (?:/.*)? " // Slash path, or nothing.
- + " ) "
- + ")$ ",
- Pattern.COMMENTS);
+ static final Pattern REPO_PATH_REGEX =
+ Pattern.compile(
+ ""
+ + "^( " // 1. Everything
+ + " /* " // Excess slashes
+ + " ( " // 2. Repo name
+ + " / " // Leading slash
+ + " .*? " // Anything, non-greedy
+ + " ) "
+ + " /("
+ + CMD
+ + ")" // 3. Command
+ + " ( " // 4. Path
+ + " (?:/.*)? " // Slash path, or nothing.
+ + " ) "
+ + ")$ ",
+ Pattern.COMMENTS);
private static class DispatchFilter extends AbstractHttpFilter {
private final ListMultimap<GitilesView.Type, Filter> filters;
private final Map<GitilesView.Type, HttpServlet> servlets;
- private DispatchFilter(ListMultimap<GitilesView.Type, Filter> filters,
+ private DispatchFilter(
+ ListMultimap<GitilesView.Type, Filter> filters,
Map<GitilesView.Type, HttpServlet> servlets) {
this.filters = LinkedListMultimap.create(filters);
this.servlets = ImmutableMap.copyOf(servlets);
@@ -166,8 +179,7 @@
private GitwebRedirectFilter gitwebRedirect;
private boolean initialized;
- GitilesFilter() {
- }
+ GitilesFilter() {}
GitilesFilter(
Config config,
@@ -213,10 +225,7 @@
}
root.through(dispatchFilter);
- serveRegex(REPO_REGEX)
- .through(repositoryFilter)
- .through(viewFilter)
- .through(dispatchFilter);
+ serveRegex(REPO_REGEX).through(repositoryFilter).through(viewFilter).through(dispatchFilter);
serveRegex(REPO_PATH_REGEX)
.through(repositoryFilter)
@@ -270,8 +279,7 @@
synchronized void setHandler(GitilesView.Type view, HttpServlet handler) {
checkNotInitialized();
- servlets.put(checkNotNull(view, "view"),
- checkNotNull(handler, "handler for %s", view));
+ servlets.put(checkNotNull(view, "view"), checkNotNull(handler, "handler for %s", view));
}
private synchronized void checkNotInitialized() {
@@ -309,22 +317,24 @@
private void setDefaultRenderer(FilterConfig filterConfig) {
if (renderer == null) {
- renderer = new DefaultRenderer(
- filterConfig.getServletContext().getContextPath() + STATIC_PREFIX,
- FluentIterable.from(Arrays.asList(
- config.getStringList("gitiles", null, "customTemplates")))
- .transform(new FileUrlMapper()),
- firstNonNull(config.getString("gitiles", null, "siteTitle"), "Gitiles"));
+ renderer =
+ new DefaultRenderer(
+ filterConfig.getServletContext().getContextPath() + STATIC_PREFIX,
+ FluentIterable.from(
+ Arrays.asList(config.getStringList("gitiles", null, "customTemplates")))
+ .transform(new FileUrlMapper()),
+ firstNonNull(config.getString("gitiles", null, "siteTitle"), "Gitiles"));
}
}
private void setDefaultUrls() throws ServletException {
if (urls == null) {
try {
- urls = new DefaultUrls(
- config.getString("gitiles", null, "canonicalHostName"),
- getBaseGitUrl(config),
- config.getString("gitiles", null, "gerritUrl"));
+ urls =
+ new DefaultUrls(
+ config.getString("gitiles", null, "canonicalHostName"),
+ getBaseGitUrl(config),
+ config.getString("gitiles", null, "gerritUrl"));
} catch (UnknownHostException e) {
throw new ServletException(e);
}
@@ -351,11 +361,9 @@
if (accessFactory == null) {
checkState(fileResolver != null, "need a FileResolver when GitilesAccess.Factory not set");
try {
- accessFactory = new DefaultAccess.Factory(
- new File(basePath),
- getBaseGitUrl(config),
- config,
- fileResolver);
+ accessFactory =
+ new DefaultAccess.Factory(
+ new File(basePath), getBaseGitUrl(config), config, fileResolver);
} catch (IOException e) {
throw new ServletException(e);
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java
index a3c15b3..7a14ba2 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java
@@ -56,9 +56,17 @@
@Nullable TimeCache timeCache,
@Nullable BlameCache blameCache,
@Nullable GitwebRedirectFilter gitwebRedirect) {
- super(new GitilesFilter(
- config, renderer, urls, accessFactory, resolver, visibilityCache, timeCache, blameCache,
- gitwebRedirect));
+ super(
+ new GitilesFilter(
+ config,
+ renderer,
+ urls,
+ accessFactory,
+ resolver,
+ visibilityCache,
+ timeCache,
+ blameCache,
+ gitwebRedirect));
}
public GitilesServlet() {
@@ -72,28 +80,30 @@
@Override
public void init(final ServletConfig config) throws ServletException {
- getDelegateFilter().init(new FilterConfig() {
- @Override
- public String getFilterName() {
- return getDelegateFilter().getClass().getName();
- }
+ getDelegateFilter()
+ .init(
+ new FilterConfig() {
+ @Override
+ public String getFilterName() {
+ return getDelegateFilter().getClass().getName();
+ }
- @Override
- public String getInitParameter(String name) {
- return config.getInitParameter(name);
- }
+ @Override
+ public String getInitParameter(String name) {
+ return config.getInitParameter(name);
+ }
- @SuppressWarnings("rawtypes")
- @Override
- public Enumeration getInitParameterNames() {
- return config.getInitParameterNames();
- }
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Enumeration getInitParameterNames() {
+ return config.getInitParameterNames();
+ }
- @Override
- public ServletContext getServletContext() {
- return config.getServletContext();
- }
- });
+ @Override
+ public ServletContext getServletContext() {
+ return config.getServletContext();
+ }
+ });
}
/**
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
index fdf577d..6308a76 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
@@ -35,21 +35,22 @@
* should not be encoded, while almost any other non-alpha, non-numeric
* character will be encoded using URL style encoding.
*/
- public static final Function<String, String> NAME_ESCAPER = new Function<String, String>() {
- @Override
- public String apply(String s) {
- try {
- return URLEncoder.encode(s, UTF_8.name())
- .replace("%2F", "/")
- .replace("%2f", "/")
- .replace("+", "%20")
- .replace("%2B", "+")
- .replace("%2b", "+");
- } catch (UnsupportedEncodingException e) {
- throw new IllegalStateException(e);
- }
- }
- };
+ public static final Function<String, String> NAME_ESCAPER =
+ new Function<String, String>() {
+ @Override
+ public String apply(String s) {
+ try {
+ return URLEncoder.encode(s, UTF_8.name())
+ .replace("%2F", "/")
+ .replace("%2f", "/")
+ .replace("+", "%20")
+ .replace("%2B", "+")
+ .replace("%2b", "+");
+ } catch (UnsupportedEncodingException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ };
/**
* Return the name of the host from the request.
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
index 0e7dc59..0a76b7d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
@@ -171,9 +171,8 @@
public Builder setRepositoryPrefix(String prefix) {
switch (type) {
case HOST_INDEX:
- this.repositoryPrefix = prefix != null
- ? Strings.emptyToNull(maybeTrimLeadingAndTrailingSlash(prefix))
- : null;
+ this.repositoryPrefix =
+ prefix != null ? Strings.emptyToNull(maybeTrimLeadingAndTrailingSlash(prefix)) : null;
return this;
default:
throw new IllegalStateException(
@@ -184,8 +183,8 @@
public Builder setRepositoryName(String repositoryName) {
switch (type) {
case HOST_INDEX:
- throw new IllegalStateException(String.format(
- "cannot set repository name on %s view", type));
+ throw new IllegalStateException(
+ String.format("cannot set repository name on %s view", type));
default:
this.repositoryName = checkNotNull(repositoryName);
return this;
@@ -362,8 +361,17 @@
checkRootedDoc();
break;
}
- return new GitilesView(type, hostName, servletPath, repositoryPrefix,
- repositoryName, revision, oldRevision, path, extension, params,
+ return new GitilesView(
+ type,
+ hostName,
+ servletPath,
+ repositoryPrefix,
+ repositoryName,
+ revision,
+ oldRevision,
+ path,
+ extension,
+ params,
anchor);
}
@@ -500,7 +508,8 @@
private final ListMultimap<String, String> params;
private final String anchor;
- private GitilesView(Type type,
+ private GitilesView(
+ Type type,
String hostName,
String servletPath,
String repositoryPrefix,
@@ -598,16 +607,17 @@
@Override
public String toString() {
- ToStringHelper b = toStringHelper(type.toString())
- .omitNullValues()
- .add("host", hostName)
- .add("servlet", servletPath)
- .add("prefix", repositoryPrefix)
- .add("repo", repositoryName)
- .add("rev", revision)
- .add("old", oldRevision)
- .add("path", path)
- .add("extension", extension);
+ ToStringHelper b =
+ toStringHelper(type.toString())
+ .omitNullValues()
+ .add("host", hostName)
+ .add("servlet", servletPath)
+ .add("prefix", repositoryPrefix)
+ .add("repo", repositoryName)
+ .add("rev", revision)
+ .add("old", oldRevision)
+ .add("path", path)
+ .add("extension", extension);
if (!params.isEmpty()) {
b.add("params", params);
}
@@ -650,12 +660,18 @@
url.append(firstNonNull(extension, DEFAULT_ARCHIVE_EXTENSION));
break;
case PATH:
- url.append(repositoryName).append("/+/").append(revision.getName()).append('/')
+ url.append(repositoryName)
+ .append("/+/")
+ .append(revision.getName())
+ .append('/')
.append(path);
break;
case SHOW:
- url.append(repositoryName).append("/+show/").append(revision.getName())
- .append('/').append(path);
+ url.append(repositoryName)
+ .append("/+show/")
+ .append(revision.getName())
+ .append('/')
+ .append(path);
break;
case DIFF:
url.append(repositoryName).append("/+/");
@@ -680,7 +696,10 @@
}
break;
case BLAME:
- url.append(repositoryName).append("/+blame/").append(revision.getName()).append('/')
+ url.append(repositoryName)
+ .append("/+blame/")
+ .append(revision.getName())
+ .append('/')
.append(path);
break;
case DOC:
@@ -736,12 +755,12 @@
* auto-diving into one-entry subtrees.
*/
public List<Map<String, String>> getBreadcrumbs(List<Boolean> hasSingleTree) {
- checkArgument(!NON_HTML_TYPES.contains(type),
- "breadcrumbs for %s view not supported", type);
- checkArgument(type != Type.REFS || Strings.isNullOrEmpty(path),
+ checkArgument(!NON_HTML_TYPES.contains(type), "breadcrumbs for %s view not supported", type);
+ checkArgument(
+ type != Type.REFS || Strings.isNullOrEmpty(path),
"breadcrumbs for REFS view with path not supported");
- checkArgument(hasSingleTree == null || type == Type.PATH,
- "hasSingleTree must be null for %s view", type);
+ checkArgument(
+ hasSingleTree == null || type == Type.PATH, "hasSingleTree must be null for %s view", type);
String path = this.path;
ImmutableList.Builder<Map<String, String>> breadcrumbs = ImmutableList.builder();
breadcrumbs.add(breadcrumb(hostName, hostIndex().copyFrom(this).setRepositoryPrefix(null)));
@@ -777,9 +796,10 @@
}
StringBuilder cur = new StringBuilder();
List<String> parts = PathUtil.SPLITTER.omitEmptyStrings().splitToList(path);
- checkArgument(hasSingleTree == null
- || (parts.isEmpty() && hasSingleTree.isEmpty())
- || hasSingleTree.size() == parts.size() - 1,
+ checkArgument(
+ hasSingleTree == null
+ || (parts.isEmpty() && hasSingleTree.isEmpty())
+ || hasSingleTree.size() == parts.size() - 1,
"hasSingleTree has wrong number of entries");
for (int i = 0; i < parts.size(); i++) {
String part = parts.get(i);
@@ -801,9 +821,7 @@
List<Map<String, String>> r = new ArrayList<>(parts.size());
for (int i = 0; i < parts.size(); i++) {
String prefix = Joiner.on('/').join(parts.subList(0, i + 1));
- r.add(breadcrumb(
- parts.get(i),
- hostIndex().copyFrom(this).setRepositoryPrefix(prefix)));
+ r.add(breadcrumb(parts.get(i), hostIndex().copyFrom(this).setRepositoryPrefix(prefix)));
}
return r;
}
@@ -840,21 +858,20 @@
@VisibleForTesting
static String paramsToString(ListMultimap<String, String> params) {
try {
- StringBuilder sb = new StringBuilder();
- boolean first = true;
- for (Map.Entry<String, String> e : params.entries()) {
- if (!first) {
- sb.append('&');
- } else {
- first = false;
+ StringBuilder sb = new StringBuilder();
+ boolean first = true;
+ for (Map.Entry<String, String> e : params.entries()) {
+ if (!first) {
+ sb.append('&');
+ } else {
+ first = false;
+ }
+ sb.append(URLEncoder.encode(e.getKey(), UTF_8.name()));
+ if (!"".equals(e.getValue())) {
+ sb.append('=').append(URLEncoder.encode(e.getValue(), UTF_8.name()));
+ }
}
- sb.append(URLEncoder.encode(e.getKey(), UTF_8.name()));
- if (!"".equals(e.getValue())) {
- sb.append('=')
- .append(URLEncoder.encode(e.getValue(), UTF_8.name()));
- }
- }
- return sb.toString();
+ return sb.toString();
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(e);
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
index ddf65b4..6578891 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitwebRedirectFilter.java
@@ -97,29 +97,26 @@
} else if ("log".equals(action) || "shortlog".equals(action)) {
view = GitilesView.log().setRevision(firstNonNull(hash, Revision.HEAD));
} else if ("tree".equals(action)) {
- view = GitilesView.path()
- .setRevision(firstNonNull(hashBase, Revision.HEAD))
- .setPathPart(path);
+ view =
+ GitilesView.path().setRevision(firstNonNull(hashBase, Revision.HEAD)).setPathPart(path);
} else if (("blob".equals(action) || "blob_plain".equals(action))
- && hashBase != null && !path.isEmpty()) {
- view = GitilesView.path()
- .setRevision(hashBase)
- .setPathPart(path);
+ && hashBase != null
+ && !path.isEmpty()) {
+ view = GitilesView.path().setRevision(hashBase).setPathPart(path);
} else if ("commitdiff".equals(action) && hash != null) {
- view = GitilesView.diff()
- .setOldRevision(firstNonNull(hashParent, Revision.NULL))
- .setRevision(hash)
- .setPathPart("");
- } else if ("blobdiff".equals(action) && !path.isEmpty()
- && hashParentBase != null && hashBase != null) {
- view = GitilesView.diff()
- .setOldRevision(hashParentBase)
- .setRevision(hashBase)
- .setPathPart(path);
+ view =
+ GitilesView.diff()
+ .setOldRevision(firstNonNull(hashParent, Revision.NULL))
+ .setRevision(hash)
+ .setPathPart("");
+ } else if ("blobdiff".equals(action)
+ && !path.isEmpty()
+ && hashParentBase != null
+ && hashBase != null) {
+ view =
+ GitilesView.diff().setOldRevision(hashParentBase).setRevision(hashBase).setPathPart(path);
} else if ("history".equals(action) && !path.isEmpty()) {
- view = GitilesView.log()
- .setRevision(firstNonNull(hashBase, Revision.HEAD))
- .setPathPart(path);
+ view = GitilesView.log().setRevision(firstNonNull(hashBase, Revision.HEAD)).setPathPart(path);
} else {
// Gitiles does not provide an RSS feed (a=rss,atom,opml)
// Any other URL is out of date and not valid anymore.
@@ -133,9 +130,10 @@
String url;
try {
- url = view.setHostName(gitwebView.getHostName())
- .setServletPath(gitwebView.getServletPath())
- .toUrl();
+ url =
+ view.setHostName(gitwebView.getHostName())
+ .setServletPath(gitwebView.getServletPath())
+ .toUrl();
} catch (InvalidViewException e) {
res.setStatus(SC_GONE);
return;
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java
index 2cc1351..c1f10e6 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/HostIndexServlet.java
@@ -56,15 +56,15 @@
protected final GitilesUrls urls;
- public HostIndexServlet(GitilesAccess.Factory accessFactory, Renderer renderer,
- GitilesUrls urls) {
+ public HostIndexServlet(
+ GitilesAccess.Factory accessFactory, Renderer renderer, GitilesUrls urls) {
super(renderer, accessFactory);
this.urls = checkNotNull(urls, "urls");
}
private Map<String, RepositoryDescription> list(
- HttpServletRequest req, HttpServletResponse res, String prefix,
- Set<String> branches) throws IOException {
+ HttpServletRequest req, HttpServletResponse res, String prefix, Set<String> branches)
+ throws IOException {
Map<String, RepositoryDescription> descs;
try {
descs = getAccess(req).listRepositories(prefix, branches);
@@ -94,20 +94,16 @@
return descs;
}
- private SoyMapData toSoyMapData(RepositoryDescription desc,
- @Nullable String prefix, GitilesView view) {
+ private SoyMapData toSoyMapData(
+ RepositoryDescription desc, @Nullable String prefix, GitilesView view) {
return new SoyMapData(
"name", stripPrefix(prefix, desc.name),
"description", Strings.nullToEmpty(desc.description),
- "url", GitilesView.repositoryIndex()
- .copyFrom(view)
- .setRepositoryName(desc.name)
- .toUrl());
+ "url", GitilesView.repositoryIndex().copyFrom(view).setRepositoryName(desc.name).toUrl());
}
@Override
- protected void doHead(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doHead(HttpServletRequest req, HttpServletResponse res) throws IOException {
Optional<FormatType> format = getFormat(req);
if (!format.isPresent()) {
res.sendError(SC_BAD_REQUEST);
@@ -118,7 +114,7 @@
String prefix = view.getRepositoryPrefix();
if (prefix != null) {
Map<String, RepositoryDescription> descs =
- list(req, res, prefix, Collections.<String> emptySet());
+ list(req, res, prefix, Collections.<String>emptySet());
if (descs == null) {
return;
}
@@ -158,11 +154,19 @@
hostName = hostName + '/' + prefix;
breadcrumbs = view.getBreadcrumbs();
}
- renderHtml(req, res, "gitiles.hostIndex", ImmutableMap.of(
- "hostName", hostName,
- "breadcrumbs", SoyData.createFromExistingData(breadcrumbs),
- "prefix", prefix != null ? prefix + '/' : "",
- "repositories", repos));
+ renderHtml(
+ req,
+ res,
+ "gitiles.hostIndex",
+ ImmutableMap.of(
+ "hostName",
+ hostName,
+ "breadcrumbs",
+ SoyData.createFromExistingData(breadcrumbs),
+ "prefix",
+ prefix != null ? prefix + '/' : "",
+ "repositories",
+ repos));
}
@Override
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java b/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java
index efccc4a..4998f94 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/HtmlDiffFormatter.java
@@ -68,8 +68,7 @@
}
@Override
- public void format(FileHeader hdr, RawText a, RawText b)
- throws IOException {
+ public void format(FileHeader hdr, RawText a, RawText b) throws IOException {
int start = hdr.getStartOffset();
int end = hdr.getEndOffset();
if (!hdr.getHunks().isEmpty()) {
@@ -84,35 +83,37 @@
}
}
- private void renderHeader(String header)
- throws IOException {
+ private void renderHeader(String header) throws IOException {
int lf = header.indexOf('\n');
- String rest = 0 <= lf ? header.substring(lf + 1) : "";
+ String rest = 0 <= lf ? header.substring(lf + 1) : "";
// Based on DiffFormatter.formatGitDiffFirstHeaderLine.
List<Map<String, String>> parts = Lists.newArrayListWithCapacity(3);
parts.add(ImmutableMap.of("text", "diff --git"));
if (entry.getChangeType() != ChangeType.ADD) {
- parts.add(ImmutableMap.of(
- "text", GIT_PATH.quote(getOldPrefix() + entry.getOldPath()),
- "url", revisionUrl(view.getOldRevision(), entry.getOldPath())));
+ parts.add(
+ ImmutableMap.of(
+ "text", GIT_PATH.quote(getOldPrefix() + entry.getOldPath()),
+ "url", revisionUrl(view.getOldRevision(), entry.getOldPath())));
} else {
- parts.add(ImmutableMap.of(
- "text", GIT_PATH.quote(getOldPrefix() + entry.getNewPath())));
+ parts.add(ImmutableMap.of("text", GIT_PATH.quote(getOldPrefix() + entry.getNewPath())));
}
if (entry.getChangeType() != ChangeType.DELETE) {
- parts.add(ImmutableMap.of(
- "text", GIT_PATH.quote(getNewPrefix() + entry.getNewPath()),
- "url", revisionUrl(view.getRevision(), entry.getNewPath())));
+ parts.add(
+ ImmutableMap.of(
+ "text", GIT_PATH.quote(getNewPrefix() + entry.getNewPath()),
+ "url", revisionUrl(view.getRevision(), entry.getNewPath())));
} else {
- parts.add(ImmutableMap.of(
- "text", GIT_PATH.quote(getNewPrefix() + entry.getOldPath())));
+ parts.add(ImmutableMap.of("text", GIT_PATH.quote(getNewPrefix() + entry.getOldPath())));
}
- getOutputStream().write(renderer.newRenderer("gitiles.diffHeader")
- .setData(ImmutableMap.of("firstParts", parts, "rest", rest, "fileIndex", fileIndex))
- .render()
- .getBytes(UTF_8));
+ getOutputStream()
+ .write(
+ renderer
+ .newRenderer("gitiles.diffHeader")
+ .setData(ImmutableMap.of("firstParts", parts, "rest", rest, "fileIndex", fileIndex))
+ .render()
+ .getBytes(UTF_8));
}
private String revisionUrl(Revision rev, String path) {
@@ -125,8 +126,8 @@
}
@Override
- protected void writeHunkHeader(int aStartLine, int aEndLine,
- int bStartLine, int bEndLine) throws IOException {
+ protected void writeHunkHeader(int aStartLine, int aEndLine, int bStartLine, int bEndLine)
+ throws IOException {
getOutputStream().write(HUNK_BEGIN);
// TODO(sop): If hunk header starts including method names, escape it.
super.writeHunkHeader(aStartLine, aEndLine, bStartLine, bEndLine);
@@ -134,8 +135,7 @@
}
@Override
- protected void writeLine(char prefix, RawText text, int cur)
- throws IOException {
+ protected void writeLine(char prefix, RawText text, int cur) throws IOException {
// Manually render each line, rather than invoke a Soy template. This method
// can be called thousands of times in a single request. Avoid unnecessary
// overheads by formatting as-is.
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/IdentRevFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/IdentRevFilter.java
index eb0905b..5493452 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/IdentRevFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/IdentRevFilter.java
@@ -43,8 +43,8 @@
}
@Override
- public boolean include(RevWalk walker, RevCommit commit) throws StopWalkException,
- MissingObjectException, IncorrectObjectTypeException, IOException {
+ public boolean include(RevWalk walker, RevCommit commit)
+ throws StopWalkException, MissingObjectException, IncorrectObjectTypeException, IOException {
return matchesPerson(getIdent(commit));
}
@@ -59,8 +59,7 @@
// Equivalent to --fixed-strings, to avoid pathological performance of Java
// regex matching.
// TODO(kalman): Find/use a port of re2.
- return person.getName().contains(pattern)
- || person.getEmailAddress().contains(pattern);
+ return person.getName().contains(pattern) || person.getEmailAddress().contains(pattern);
}
protected abstract PersonIdent getIdent(RevCommit commit);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java b/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java
index 8225278..e513ec4 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Linkifier.java
@@ -45,14 +45,8 @@
static {
// HTTP URL regex adapted from com.google.gwtexpui.safehtml.client.SafeHtml.
- String part = "(?:" +
- "[a-zA-Z0-9$_.+!*',%;:@=?#/~<>-]" +
- "|&(?!lt;|gt;)" +
- ")";
- String httpUrl = "https?://" +
- part + "{2,}" +
- "(?:[(]" + part + "*" + "[)])*" +
- part + "*";
+ String part = "(?:" + "[a-zA-Z0-9$_.+!*',%;:@=?#/~<>-]" + "|&(?!lt;|gt;)" + ")";
+ String httpUrl = "https?://" + part + "{2,}" + "(?:[(]" + part + "*" + "[)])*" + part + "*";
HTTP_URL_PATTERN = Pattern.compile(httpUrl);
CHANGE_ID_PATTERN = Pattern.compile("(\\bI[0-9a-f]{8,40}\\b)");
}
@@ -76,8 +70,9 @@
String link = config.getString("commentlink", subsection, "link");
String html = config.getString("commentlink", subsection, "html");
if (html != null) {
- log.warn("Beware: html in commentlinks is unsupported in gitiles; "
- + "Did you copy it from a gerrit config?");
+ log.warn(
+ "Beware: html in commentlinks is unsupported in gitiles; "
+ + "Did you copy it from a gerrit config?");
}
if (Strings.isNullOrEmpty(match)) {
log.warn("invalid commentlink.%s.match", subsection);
@@ -86,7 +81,7 @@
Pattern pattern;
try {
pattern = Pattern.compile(match);
- } catch(PatternSyntaxException ex) {
+ } catch (PatternSyntaxException ex) {
log.warn("invalid commentlink." + subsection + ".match", ex);
continue;
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
index ae6219f..4408c1e 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -131,8 +131,7 @@
try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.logDetail", data)) {
Writer w = newWriter(out, res);
- new LogSoyData(req, access, pretty)
- .renderStreaming(paginator, null, renderer, w, df);
+ new LogSoyData(req, access, pretty).renderStreaming(paginator, null, renderer, w, df);
w.flush();
}
} catch (RevWalkException e) {
@@ -169,8 +168,8 @@
List<CommitJsonData.Commit> entries = Lists.newArrayListWithCapacity(paginator.getLimit());
for (RevCommit c : paginator) {
paginator.getWalk().parseBody(c);
- entries.add(new CommitJsonData().setRevWalk(paginator.getWalk())
- .toJsonData(req, c, fs, df));
+ entries.add(
+ new CommitJsonData().setRevWalk(paginator.getWalk()).toJsonData(req, c, fs, df));
}
result.log = entries;
if (paginator.getPreviousStart() != null) {
@@ -198,14 +197,14 @@
}
try (RevWalk walk = new RevWalk(repo)) {
return GitilesView.log()
- .copyFrom(view)
- .setRevision(Revision.peel(Constants.HEAD, walk.parseAny(headRef.getObjectId()), walk))
- .build();
+ .copyFrom(view)
+ .setRevision(Revision.peel(Constants.HEAD, walk.parseAny(headRef.getObjectId()), walk))
+ .build();
}
}
- private static Optional<ObjectId> getStart(ListMultimap<String, String> params,
- ObjectReader reader) throws IOException {
+ private static Optional<ObjectId> getStart(
+ ListMultimap<String, String> params, ObjectReader reader) throws IOException {
List<String> values = params.get(START_PARAM);
switch (values.size()) {
case 0:
@@ -258,15 +257,15 @@
String path = view.getPathPart();
List<String> followParams = view.getParameters().get(FOLLOW_PARAM);
- boolean follow = !followParams.isEmpty()
- ? isTrue(followParams.get(0))
- : access.getConfig().getBoolean("log", null, "follow", true);
+ boolean follow =
+ !followParams.isEmpty()
+ ? isTrue(followParams.get(0))
+ : access.getConfig().getBoolean("log", null, "follow", true);
if (follow) {
walk.setTreeFilter(FollowFilter.create(path, access.getConfig().get(DiffConfig.KEY)));
} else {
- walk.setTreeFilter(AndTreeFilter.create(
- PathFilterGroup.createFromStrings(path),
- TreeFilter.ANY_DIFF));
+ walk.setTreeFilter(
+ AndTreeFilter.create(PathFilterGroup.createFromStrings(path), TreeFilter.ANY_DIFF));
}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java
index 97fe1ce..6d1a1c8 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogSoyData.java
@@ -39,9 +39,17 @@
import javax.servlet.http.HttpServletRequest;
public class LogSoyData {
- private static final ImmutableSet<Field> FIELDS = Sets.immutableEnumSet(Field.ABBREV_SHA,
- Field.SHA, Field.URL, Field.SHORT_MESSAGE, Field.MESSAGE, Field.AUTHOR, Field.COMMITTER,
- Field.BRANCHES, Field.TAGS);
+ private static final ImmutableSet<Field> FIELDS =
+ Sets.immutableEnumSet(
+ Field.ABBREV_SHA,
+ Field.SHA,
+ Field.URL,
+ Field.SHORT_MESSAGE,
+ Field.MESSAGE,
+ Field.AUTHOR,
+ Field.COMMITTER,
+ Field.BRANCHES,
+ Field.TAGS);
private static final ImmutableSet<Field> VERBOSE_FIELDS = Field.setOf(FIELDS, Field.DIFF_TREE);
private final HttpServletRequest req;
@@ -60,9 +68,15 @@
variant = firstNonNull(config.getString("logFormat", pretty, "variant"), pretty);
}
- public void renderStreaming(Paginator paginator, @Nullable String revision, Renderer renderer,
- Writer out, DateFormatter df) throws IOException {
- renderer.newRenderer("gitiles.logEntriesHeader")
+ public void renderStreaming(
+ Paginator paginator,
+ @Nullable String revision,
+ Renderer renderer,
+ Writer out,
+ DateFormatter df)
+ throws IOException {
+ renderer
+ .newRenderer("gitiles.logEntriesHeader")
.setData(toHeaderSoyData(paginator, revision))
.render(out);
out.flush();
@@ -78,7 +92,8 @@
renderer.newRenderer("gitiles.emptyLog").render(out);
}
- renderer.newRenderer("gitiles.logEntriesFooter")
+ renderer
+ .newRenderer("gitiles.logEntriesFooter")
.setData(toFooterSoyData(paginator, revision))
.render(out);
}
@@ -120,7 +135,7 @@
if (type != ChangeType.RENAME && type != ChangeType.COPY) {
return null;
}
- return ImmutableMap.<String, Object> of(
+ return ImmutableMap.<String, Object>of(
"changeType", type.toString(),
"oldPath", entry.getOldPath(),
"newPath", entry.getNewPath(),
@@ -131,9 +146,11 @@
Map<String, Object> data = Maps.newHashMapWithExpectedSize(1);
ObjectId next = paginator.getNextStart();
if (next != null) {
- data.put("nextUrl", copyAndCanonicalizeView(revision)
- .replaceParam(LogServlet.START_PARAM, next.name())
- .toUrl());
+ data.put(
+ "nextUrl",
+ copyAndCanonicalizeView(revision)
+ .replaceParam(LogServlet.START_PARAM, next.name())
+ .toUrl());
}
return data;
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Paginator.java b/gitiles-servlet/src/main/java/com/google/gitiles/Paginator.java
index 1a1a053..019d33c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Paginator.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Paginator.java
@@ -85,8 +85,8 @@
* @param start commit at which to start the walk, or null to start at the
* beginning.
*/
- Paginator(RevWalk walk, int limit, @Nullable ObjectId start) throws MissingObjectException,
- IncorrectObjectTypeException, IOException {
+ Paginator(RevWalk walk, int limit, @Nullable ObjectId start)
+ throws MissingObjectException, IncorrectObjectTypeException, IOException {
this.walk = checkNotNull(walk, "walk");
checkArgument(limit > 0, "limit must be positive: %s", limit);
this.limit = limit;
@@ -127,8 +127,7 @@
* @throws IncorrectObjectTypeException See {@link RevWalk#next()}.
* @throws IOException See {@link RevWalk#next()}.
*/
- public RevCommit next() throws MissingObjectException, IncorrectObjectTypeException,
- IOException {
+ public RevCommit next() throws MissingObjectException, IncorrectObjectTypeException, IOException {
if (done) {
return null;
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
index d08062f..4837671 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
@@ -80,11 +80,16 @@
* repository URL verbatim in a web browser.
*/
private static final Pattern VERBATIM_SUBMODULE_URL_PATTERN =
- Pattern.compile("^(" + Joiner.on('|').join(
- "https?://[^.]+.googlesource.com/.*",
- "https?://[^.]+.googlecode.com/.*",
- "https?://code.google.com/p/.*",
- "https?://github.com/.*") + ")$", Pattern.CASE_INSENSITIVE);
+ Pattern.compile(
+ "^("
+ + Joiner.on('|')
+ .join(
+ "https?://[^.]+.googlesource.com/.*",
+ "https?://[^.]+.googlecode.com/.*",
+ "https?://code.google.com/p/.*",
+ "https?://github.com/.*")
+ + ")$",
+ Pattern.CASE_INSENSITIVE);
static final String AUTODIVE_PARAM = "autodive";
static final String NO_AUTODIVE_VALUE = "0";
@@ -279,8 +284,8 @@
}
@Override
- public boolean include(TreeWalk tw) throws MissingObjectException,
- IncorrectObjectTypeException, IOException {
+ public boolean include(TreeWalk tw)
+ throws MissingObjectException, IncorrectObjectTypeException, IOException {
count++;
int cmp = tw.isPathPrefix(pathRaw, pathRaw.length);
if (cmp > 0) {
@@ -313,7 +318,7 @@
@Override
public boolean shouldBeRecursive() {
- return Bytes.indexOf(pathRaw, (byte)'/') >= 0;
+ return Bytes.indexOf(pathRaw, (byte) '/') >= 0;
}
@Override
@@ -344,7 +349,7 @@
tw.addTree(root);
tw.setRecursive(false);
if (path.isEmpty()) {
- return new WalkResult(tw, path, root, root, FileType.TREE, ImmutableList.<Boolean> of());
+ return new WalkResult(tw, path, root, root, FileType.TREE, ImmutableList.<Boolean>of());
}
AutoDiveFilter f = new AutoDiveFilter(path);
tw.setFilter(f);
@@ -375,7 +380,12 @@
private final FileType type;
private final List<Boolean> hasSingleTree;
- private WalkResult(TreeWalk tw, String path, RevTree root, ObjectId objectId, FileType type,
+ private WalkResult(
+ TreeWalk tw,
+ String path,
+ RevTree root,
+ ObjectId objectId,
+ FileType type,
List<Boolean> hasSingleTree) {
this.tw = tw;
this.path = path;
@@ -414,21 +424,28 @@
}
child = next;
}
- res.sendRedirect(GitilesView.path().copyFrom(view)
- .setPathPart(
- RawParseUtils.decode(child.getEntryPathBuffer(), 0, child.getEntryPathLength()))
- .toUrl());
+ res.sendRedirect(
+ GitilesView.path()
+ .copyFrom(view)
+ .setPathPart(
+ RawParseUtils.decode(child.getEntryPathBuffer(), 0, child.getEntryPathLength()))
+ .toUrl());
return;
}
}
// TODO(sop): Allow caching trees by SHA-1 when no S cookie is sent.
- renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
- "title", !view.getPathPart().isEmpty() ? view.getPathPart() : "/",
- "breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
- "type", FileType.TREE.toString(),
- "data", new TreeSoyData(wr.getObjectReader(), view, cfg, wr.root)
- .setArchiveFormat(getArchiveFormat(getAccess(req)))
- .toSoyData(wr.id, wr.tw)));
+ renderHtml(
+ req,
+ res,
+ "gitiles.pathDetail",
+ ImmutableMap.of(
+ "title", !view.getPathPart().isEmpty() ? view.getPathPart() : "/",
+ "breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
+ "type", FileType.TREE.toString(),
+ "data",
+ new TreeSoyData(wr.getObjectReader(), view, cfg, wr.root)
+ .setArchiveFormat(getArchiveFormat(getAccess(req)))
+ .toSoyData(wr.id, wr.tw)));
}
private CanonicalTreeParser getOnlyChildSubtree(ObjectReader reader, ObjectId id, byte[] prefix)
@@ -444,14 +461,17 @@
private void showFile(HttpServletRequest req, HttpServletResponse res, WalkResult wr)
throws IOException {
GitilesView view = ViewFilter.getView(req);
- Map<String, ?> data = new BlobSoyData(wr.getObjectReader(), view)
- .toSoyData(wr.path, wr.id);
+ Map<String, ?> data = new BlobSoyData(wr.getObjectReader(), view).toSoyData(wr.path, wr.id);
// TODO(sop): Allow caching files by SHA-1 when no S cookie is sent.
- renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
- "title", ViewFilter.getView(req).getPathPart(),
- "breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
- "type", wr.type.toString(),
- "data", data));
+ renderHtml(
+ req,
+ res,
+ "gitiles.pathDetail",
+ ImmutableMap.of(
+ "title", ViewFilter.getView(req).getPathPart(),
+ "breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
+ "type", wr.type.toString(),
+ "data", data));
}
private void showSymlink(HttpServletRequest req, HttpServletResponse res, WalkResult wr)
@@ -469,20 +489,22 @@
data.put("sha", ObjectId.toString(wr.id));
data.put("data", null);
data.put("size", Long.toString(loader.getSize()));
- renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
- "title", ViewFilter.getView(req).getPathPart(),
- "breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
- "type", FileType.REGULAR_FILE.toString(),
- "data", data));
+ renderHtml(
+ req,
+ res,
+ "gitiles.pathDetail",
+ 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);
+ 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) {
@@ -490,11 +512,15 @@
}
// TODO(sop): Allow caching files by SHA-1 when no S cookie is sent.
- renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
- "title", ViewFilter.getView(req).getPathPart(),
- "breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
- "type", FileType.SYMLINK.toString(),
- "data", data));
+ renderHtml(
+ req,
+ res,
+ "gitiles.pathDetail",
+ ImmutableMap.of(
+ "title", ViewFilter.getView(req).getPathPart(),
+ "breadcrumbs", view.getBreadcrumbs(wr.hasSingleTree),
+ "type", FileType.SYMLINK.toString(),
+ "data", data));
}
private static String dirname(String path) {
@@ -517,10 +543,8 @@
String modulesUrl;
String remoteUrl = null;
- try (SubmoduleWalk sw = SubmoduleWalk.forPath(
- ServletUtils.getRepository(req),
- wr.root,
- view.getPathPart())) {
+ try (SubmoduleWalk sw =
+ SubmoduleWalk.forPath(ServletUtils.getRepository(req), wr.root, view.getPathPart())) {
modulesUrl = sw.getModulesUrl();
if (modulesUrl != null && (modulesUrl.startsWith("./") || modulesUrl.startsWith("../"))) {
String moduleRepo = PathUtil.simplifyPathUpToRoot(modulesUrl, view.getRepositoryName());
@@ -545,10 +569,14 @@
}
// TODO(sop): Allow caching links by SHA-1 when no S cookie is sent.
- renderHtml(req, res, "gitiles.pathDetail", ImmutableMap.of(
- "title", view.getPathPart(),
- "type", FileType.GITLINK.toString(),
- "data", data));
+ renderHtml(
+ req,
+ res,
+ "gitiles.pathDetail",
+ ImmutableMap.of(
+ "title", view.getPathPart(),
+ "type", FileType.GITLINK.toString(),
+ "data", data));
}
private static String resolveHttpUrl(String remoteUrl) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathUtil.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathUtil.java
index e55b77d..e67223f 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/PathUtil.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathUtil.java
@@ -59,6 +59,5 @@
return path.substring(slash + 1);
}
- private PathUtil() {
- }
+ private PathUtil() {}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java b/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java
index 91795bb..6bf0feb 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ReadmeHelper.java
@@ -50,8 +50,7 @@
private String readmePath;
private ObjectId readmeId;
- ReadmeHelper(ObjectReader reader, GitilesView view, Config cfg,
- RevTree rootTree) {
+ ReadmeHelper(ObjectReader reader, GitilesView view, Config cfg, RevTree rootTree) {
this.reader = reader;
this.view = view;
this.cfg = cfg;
@@ -59,8 +58,9 @@
render = cfg.getBoolean("markdown", "render", true);
}
- void scanTree(RevTree tree) throws MissingObjectException,
- IncorrectObjectTypeException, CorruptObjectException, IOException {
+ void scanTree(RevTree tree)
+ throws MissingObjectException, IncorrectObjectTypeException, CorruptObjectException,
+ IOException {
if (render) {
TreeWalk tw = new TreeWalk(reader);
tw.setRecursive(false);
@@ -90,13 +90,13 @@
SanitizedContent render() {
try {
- Duration parseTimeout = ConfigUtil.getDuration(cfg, "markdown", null,
- "parseTimeout", Duration.standardSeconds(2));
+ Duration parseTimeout =
+ ConfigUtil.getDuration(
+ cfg, "markdown", null, "parseTimeout", Duration.standardSeconds(2));
int inputLimit = cfg.getInt("markdown", "inputLimit", 5 << 20);
byte[] raw = reader.open(readmeId, Constants.OBJ_BLOB).getCachedBytes(inputLimit);
String md = RawParseUtils.decode(raw);
- RootNode root =
- GitilesMarkdown.parseFile(parseTimeout, view, readmePath, md);
+ RootNode root = GitilesMarkdown.parseFile(parseTimeout, view, readmePath, md);
if (root == null) {
return null;
}
@@ -107,13 +107,9 @@
img = new ImageLoader(reader, view, rootTree, readmePath, imageLimit);
}
- return new MarkdownToHtml(view, cfg)
- .setImageLoader(img)
- .setReadme(true)
- .toSoyHtml(root);
+ return new MarkdownToHtml(view, cfg).setImageLoader(img).setReadme(true).toSoyHtml(root);
} catch (LargeObjectException | IOException e) {
- log.error(String.format("error rendering %s/%s",
- view.getRepositoryName(), readmePath), e);
+ log.error(String.format("error rendering %s/%s", view.getRepositoryName(), readmePath), e);
return null;
}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
index ff48d4d..0d74b46 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -52,15 +52,14 @@
private final TimeCache timeCache;
- protected RefServlet(GitilesAccess.Factory accessFactory, Renderer renderer,
- TimeCache timeCache) {
+ protected RefServlet(
+ GitilesAccess.Factory accessFactory, Renderer renderer, TimeCache timeCache) {
super(renderer, accessFactory);
this.timeCache = checkNotNull(timeCache, "timeCache");
}
@Override
- protected void doGetHtml(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws IOException {
if (!ViewFilter.getView(req).getPathPart().isEmpty()) {
res.setStatus(SC_NOT_FOUND);
return;
@@ -69,16 +68,18 @@
try (RevWalk walk = new RevWalk(ServletUtils.getRepository(req))) {
tags = getTagsSoyData(req, timeCache, walk, 0);
}
- renderHtml(req, res, "gitiles.refsDetail",
+ renderHtml(
+ req,
+ res,
+ "gitiles.refsDetail",
ImmutableMap.of("branches", getBranchesSoyData(req, 0), "tags", tags));
}
@Override
- protected void doGetText(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetText(HttpServletRequest req, HttpServletResponse res) throws IOException {
GitilesView view = ViewFilter.getView(req);
- Map<String, Ref> refs = getRefs(ServletUtils.getRepository(req).getRefDatabase(),
- view.getPathPart());
+ Map<String, Ref> refs =
+ getRefs(ServletUtils.getRepository(req).getRefDatabase(), view.getPathPart());
TextRefAdvertiser adv = new TextRefAdvertiser(startRenderText(req, res));
adv.setDerefTags(true);
adv.send(refs);
@@ -86,11 +87,10 @@
}
@Override
- protected void doGetJson(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetJson(HttpServletRequest req, HttpServletResponse res) throws IOException {
GitilesView view = ViewFilter.getView(req);
- Map<String, Ref> refs = getRefs(ServletUtils.getRepository(req).getRefDatabase(),
- view.getPathPart());
+ Map<String, Ref> refs =
+ getRefs(ServletUtils.getRepository(req).getRefDatabase(), view.getPathPart());
Map<String, RefJsonData> jsonRefs = new LinkedHashMap<>();
for (Map.Entry<String, Ref> ref : refs.entrySet()) {
jsonRefs.put(ref.getKey(), new RefJsonData(ref.getValue()));
@@ -131,8 +131,8 @@
}.compound(RefComparator.INSTANCE);
}
- static List<Map<String, Object>> getTagsSoyData(HttpServletRequest req,
- TimeCache timeCache, RevWalk walk, int limit) throws IOException {
+ static List<Map<String, Object>> getTagsSoyData(
+ HttpServletRequest req, TimeCache timeCache, RevWalk walk, int limit) throws IOException {
return getRefsSoyData(
ServletUtils.getRepository(req).getRefDatabase(),
ViewFilter.getView(req),
@@ -143,16 +143,20 @@
}
private static Ordering<Ref> tagComparator(final TimeCache timeCache, final RevWalk walk) {
- return Ordering.natural().onResultOf(new Function<Ref, Long>() {
- @Override
- public Long apply(Ref ref) {
- try {
- return timeCache.getTime(walk, ref.getObjectId());
- } catch (IOException e) {
- throw new UncheckedExecutionException(e);
- }
- }
- }).reverse().compound(RefComparator.INSTANCE);
+ return Ordering.natural()
+ .onResultOf(
+ new Function<Ref, Long>() {
+ @Override
+ public Long apply(Ref ref) {
+ try {
+ return timeCache.getTime(walk, ref.getObjectId());
+ } catch (IOException e) {
+ throw new UncheckedExecutionException(e);
+ }
+ }
+ })
+ .reverse()
+ .compound(RefComparator.INSTANCE);
}
private static List<Map<String, Object>> getRefsSoyData(
@@ -161,7 +165,8 @@
String prefix,
Ordering<Ref> ordering,
@Nullable Ref headLeaf,
- int limit) throws IOException {
+ int limit)
+ throws IOException {
Collection<Ref> refs = refdb.getRefs(prefix).values();
refs = ordering.leastOf(refs, limit > 0 ? Ints.saturatedCast(limit + 1L) : refs.size());
List<Map<String, Object>> result = Lists.newArrayListWithCapacity(refs.size());
@@ -172,8 +177,13 @@
if (refForName != null) {
boolean needPrefix = !ref.getName().equals(refForName.getName());
Map<String, Object> value = Maps.newHashMapWithExpectedSize(3);
- value.put("url", GitilesView.revision().copyFrom(view).setRevision(
- Revision.unpeeled(needPrefix ? ref.getName() : name, ref.getObjectId())).toUrl());
+ value.put(
+ "url",
+ GitilesView.revision()
+ .copyFrom(view)
+ .setRevision(
+ Revision.unpeeled(needPrefix ? ref.getName() : name, ref.getObjectId()))
+ .toUrl());
value.put("name", name);
if (headLeaf != null) {
value.put("isHead", headLeaf.equals(ref));
@@ -185,9 +195,7 @@
}
static String sanitizeRefForText(String refName) {
- return refName.replace("&", "&")
- .replace("<", "<")
- .replace(">", ">");
+ return refName.replace("&", "&").replace("<", "<").replace(">", ">");
}
private static Map<String, Ref> getRefs(RefDatabase refdb, String path) throws IOException {
@@ -229,7 +237,7 @@
static class RefJsonData {
RefJsonData(Ref ref) {
value = ref.getObjectId().getName();
- if(ref.getPeeledObjectId() != null) {
+ if (ref.getPeeledObjectId() != null) {
peeled = ref.getPeeledObjectId().getName();
}
if (ref.isSymbolic()) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java b/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
index 9defb71..8d04578 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Renderer.java
@@ -55,23 +55,25 @@
// Must match .streamingPlaceholder.
private static final String PLACEHOLDER = "id=\"STREAMED_OUTPUT_BLOCK\"";
- private static final List<String> SOY_FILENAMES = ImmutableList.of(
- "BlameDetail.soy",
- "Common.soy",
- "DiffDetail.soy",
- "Doc.soy",
- "HostIndex.soy",
- "LogDetail.soy",
- "ObjectDetail.soy",
- "PathDetail.soy",
- "RefList.soy",
- "RevisionDetail.soy",
- "RepositoryIndex.soy");
+ private static final List<String> SOY_FILENAMES =
+ ImmutableList.of(
+ "BlameDetail.soy",
+ "Common.soy",
+ "DiffDetail.soy",
+ "Doc.soy",
+ "HostIndex.soy",
+ "LogDetail.soy",
+ "ObjectDetail.soy",
+ "PathDetail.soy",
+ "RefList.soy",
+ "RevisionDetail.soy",
+ "RepositoryIndex.soy");
- public static final Map<String, String> STATIC_URL_GLOBALS = ImmutableMap.of(
- "gitiles.BASE_CSS_URL", "base.css",
- "gitiles.DOC_CSS_URL", "doc.css",
- "gitiles.PRETTIFY_CSS_URL", "prettify/prettify.css");
+ public static final Map<String, String> STATIC_URL_GLOBALS =
+ ImmutableMap.of(
+ "gitiles.BASE_CSS_URL", "base.css",
+ "gitiles.DOC_CSS_URL", "doc.css",
+ "gitiles.PRETTIFY_CSS_URL", "prettify/prettify.css");
protected static class FileUrlMapper implements Function<String, URL> {
private final String prefix;
@@ -99,13 +101,15 @@
protected ImmutableMap<String, URL> templates;
protected ImmutableMap<String, String> globals;
- private final ConcurrentMap<String, HashCode> hashes = new MapMaker()
- .initialCapacity(SOY_FILENAMES.size())
- .concurrencyLevel(1)
- .makeMap();
+ private final ConcurrentMap<String, HashCode> hashes =
+ new MapMaker().initialCapacity(SOY_FILENAMES.size()).concurrencyLevel(1).makeMap();
- protected Renderer(Function<String, URL> resourceMapper, Map<String, String> globals,
- String staticPrefix, Iterable<URL> customTemplates, String siteTitle) {
+ protected Renderer(
+ Function<String, URL> resourceMapper,
+ Map<String, String> globals,
+ String staticPrefix,
+ Iterable<URL> customTemplates,
+ String siteTitle) {
checkNotNull(staticPrefix, "staticPrefix");
ImmutableMap.Builder<String, URL> b = ImmutableMap.builder();
@@ -153,8 +157,9 @@
return newRenderer(templateName).setData(soyData).render();
}
- void render(HttpServletRequest req, HttpServletResponse res,
- String templateName, Map<String, ?> soyData) throws IOException {
+ void render(
+ HttpServletRequest req, HttpServletResponse res, String templateName, Map<String, ?> soyData)
+ throws IOException {
res.setContentType("text/html");
res.setCharacterEncoding("UTF-8");
byte[] data = newRenderer(templateName).setData(soyData).render().getBytes(UTF_8);
@@ -168,9 +173,7 @@
OutputStream renderStreaming(HttpServletResponse res, String templateName, Map<String, ?> soyData)
throws IOException {
- final String html = newRenderer(templateName)
- .setData(soyData)
- .render();
+ final String html = newRenderer(templateName).setData(soyData).render();
int id = html.indexOf(PLACEHOLDER);
checkArgument(id >= 0, "Template must contain %s", PLACEHOLDER);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryFilter.java
index 6eb5033..bbaabc5 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryFilter.java
@@ -43,8 +43,8 @@
}
@Override
- public void doFilter(HttpServletRequest req, HttpServletResponse res,
- FilterChain chain) throws IOException, ServletException {
+ public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain)
+ throws IOException, ServletException {
try {
String repo = ViewFilter.trimLeadingSlash(getRegexGroup(req, 1));
try (Repository git = resolver.open(req, repo)) {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
index d1dfbd8..c45e0e6 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -55,15 +55,14 @@
private final TimeCache timeCache;
- public RepositoryIndexServlet(GitilesAccess.Factory accessFactory, Renderer renderer,
- TimeCache timeCache) {
+ public RepositoryIndexServlet(
+ GitilesAccess.Factory accessFactory, Renderer renderer, TimeCache timeCache) {
super(renderer, accessFactory);
this.timeCache = checkNotNull(timeCache, "timeCache");
}
@Override
- protected void doHead(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doHead(HttpServletRequest req, HttpServletResponse res) throws IOException {
// If the repository didn't exist a prior filter would have 404 replied.
Optional<FormatType> format = getFormat(req);
if (!format.isPresent()) {
@@ -77,7 +76,7 @@
res.setContentType(format.get().getMimeType());
break;
case TEXT:
- default:
+ default:
res.sendError(SC_BAD_REQUEST);
break;
}
@@ -155,8 +154,8 @@
return list.size() > REF_LIMIT ? list.subList(0, REF_LIMIT) : list;
}
- private static Map<String, Object> renderReadme(RevWalk walk,
- GitilesView view, Config cfg, RevObject head) throws IOException {
+ private static Map<String, Object> renderReadme(
+ RevWalk walk, GitilesView view, Config cfg, RevObject head) throws IOException {
RevTree rootTree;
try {
rootTree = walk.parseTree(head);
@@ -164,13 +163,15 @@
return null;
}
- ReadmeHelper readme = new ReadmeHelper(
- walk.getObjectReader(),
- GitilesView.path().copyFrom(view).setRevision(Revision.HEAD).setPathPart("/").build(),
- cfg, rootTree);
+ ReadmeHelper readme =
+ new ReadmeHelper(
+ walk.getObjectReader(),
+ GitilesView.path().copyFrom(view).setRevision(Revision.HEAD).setPathPart("/").build(),
+ cfg,
+ rootTree);
readme.scanTree(rootTree);
if (readme.isPresent()) {
- return ImmutableMap.<String, Object> of("readmeHtml", readme.render());
+ return ImmutableMap.<String, Object>of("readmeHtml", readme.render());
}
return null;
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java b/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java
index 00d5763..356fbc7 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/Revision.java
@@ -46,8 +46,7 @@
public static final Revision HEAD = named("HEAD");
public static Revision normalizeParentExpressions(Revision rev) {
- if (rev == null
- || (rev.name.indexOf('~') < 0 && rev.name.indexOf('^') < 0)) {
+ if (rev == null || (rev.name.indexOf('~') < 0 && rev.name.indexOf('^') < 0)) {
return rev;
}
return new Revision(rev.id.name(), rev.id, rev.type, rev.peeledId, rev.peeledType);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
index 9f234d1..59112d0 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionParser.java
@@ -167,8 +167,9 @@
} else {
oldRevision = Revision.NULL;
}
- Result result = new Result(Revision.peeled(name, c), oldRevision,
- path.substring(name.length() + 2));
+ Result result =
+ new Result(
+ Revision.peeled(name, c), oldRevision, path.substring(name.length() + 2));
return isVisible(walk, result) ? result : null;
}
}
@@ -212,9 +213,7 @@
private static boolean isValidRevision(String revision) {
// Disallow some uncommon but valid revision expressions that either we
// don't support or we represent differently in our URLs.
- return !revision.contains(":")
- && !revision.contains("^{")
- && !revision.contains("@");
+ return !revision.contains(":") && !revision.contains("^{") && !revision.contains("@");
}
private boolean isVisible(RevWalk walk, Result result) throws IOException {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
index 9887195..9c7fdb0 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
@@ -67,8 +67,8 @@
private final Linkifier linkifier;
- public RevisionServlet(GitilesAccess.Factory accessFactory, Renderer renderer,
- Linkifier linkifier) {
+ public RevisionServlet(
+ GitilesAccess.Factory accessFactory, Renderer renderer, Linkifier linkifier) {
super(renderer, accessFactory);
this.linkifier = checkNotNull(linkifier, "linkifier");
}
@@ -92,33 +92,39 @@
try {
switch (obj.getType()) {
case OBJ_COMMIT:
- soyObjects.add(ImmutableMap.of(
- "type", Constants.TYPE_COMMIT,
- "data", new CommitSoyData()
- .setLinkifier(linkifier)
- .setRevWalk(walk)
- .setArchiveFormat(getArchiveFormat(access))
- .toSoyData(req, (RevCommit) obj, COMMIT_SOY_FIELDS, df)));
+ soyObjects.add(
+ ImmutableMap.of(
+ "type",
+ Constants.TYPE_COMMIT,
+ "data",
+ new CommitSoyData()
+ .setLinkifier(linkifier)
+ .setRevWalk(walk)
+ .setArchiveFormat(getArchiveFormat(access))
+ .toSoyData(req, (RevCommit) obj, COMMIT_SOY_FIELDS, df)));
break;
case OBJ_TREE:
Map<String, Object> tree =
- new TreeSoyData(walk.getObjectReader(), view, cfg, (RevTree) obj)
- .toSoyData(obj);
- soyObjects.add(ImmutableMap.of(
- "type", Constants.TYPE_TREE,
- "data", tree));
+ new TreeSoyData(walk.getObjectReader(), view, cfg, (RevTree) obj).toSoyData(obj);
+ soyObjects.add(ImmutableMap.of("type", Constants.TYPE_TREE, "data", tree));
hasReadme = tree.containsKey("readmeHtml");
break;
case OBJ_BLOB:
- soyObjects.add(ImmutableMap.of(
- "type", Constants.TYPE_BLOB,
- "data", new BlobSoyData(walk.getObjectReader(), view).toSoyData(obj)));
+ soyObjects.add(
+ ImmutableMap.of(
+ "type",
+ Constants.TYPE_BLOB,
+ "data",
+ new BlobSoyData(walk.getObjectReader(), view).toSoyData(obj)));
hasBlob = true;
break;
case OBJ_TAG:
- soyObjects.add(ImmutableMap.of(
- "type", Constants.TYPE_TAG,
- "data", new TagSoyData(linkifier, req).toSoyData((RevTag) obj, df)));
+ soyObjects.add(
+ ImmutableMap.of(
+ "type",
+ Constants.TYPE_TAG,
+ "data",
+ new TagSoyData(linkifier, req).toSoyData((RevTag) obj, df)));
break;
default:
log.warn("Bad object type for {}: {}", ObjectId.toString(obj.getId()), obj.getType());
@@ -136,11 +142,15 @@
}
}
- renderHtml(req, res, "gitiles.revisionDetail", ImmutableMap.of(
- "title", view.getRevision().getName(),
- "objects", soyObjects,
- "hasBlob", hasBlob,
- "hasReadme", hasReadme));
+ renderHtml(
+ req,
+ res,
+ "gitiles.revisionDetail",
+ ImmutableMap.of(
+ "title", view.getRevision().getName(),
+ "objects", soyObjects,
+ "hasBlob", hasBlob,
+ "hasReadme", hasReadme));
}
}
@@ -149,16 +159,16 @@
GitilesView view = ViewFilter.getView(req);
Repository repo = ServletUtils.getRepository(req);
try (ObjectReader reader = repo.newObjectReader()) {
- ObjectLoader loader = reader.open(view.getRevision().getId());
- if (loader.getType() != OBJ_COMMIT) {
- res.setStatus(SC_NOT_FOUND);
- } else {
- PathServlet.setTypeHeader(res, loader.getType());
- try (Writer writer = startRenderText(req, res);
- OutputStream out = BaseEncoding.base64().encodingStream(writer)) {
- loader.copyTo(out);
- }
+ ObjectLoader loader = reader.open(view.getRevision().getId());
+ if (loader.getType() != OBJ_COMMIT) {
+ res.setStatus(SC_NOT_FOUND);
+ } else {
+ PathServlet.setTypeHeader(res, loader.getType());
+ try (Writer writer = startRenderText(req, res);
+ OutputStream out = BaseEncoding.base64().encodingStream(writer)) {
+ loader.copyTo(out);
}
+ }
}
}
@@ -172,9 +182,12 @@
RevObject obj = walk.parseAny(view.getRevision().getId());
switch (obj.getType()) {
case OBJ_COMMIT:
- renderJson(req, res, new CommitJsonData()
- .setRevWalk(walk)
- .toJsonData(req, (RevCommit) obj, COMMIT_JSON_FIELDS, df),
+ renderJson(
+ req,
+ res,
+ new CommitJsonData()
+ .setRevWalk(walk)
+ .toJsonData(req, (RevCommit) obj, COMMIT_JSON_FIELDS, df),
Commit.class);
break;
default:
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RootedDocServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RootedDocServlet.java
index bdf4aa9..057aba8 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RootedDocServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RootedDocServlet.java
@@ -47,8 +47,10 @@
private final RepositoryResolver<HttpServletRequest> resolver;
private final DocServlet docServlet;
- public RootedDocServlet(RepositoryResolver<HttpServletRequest> resolver,
- GitilesAccess.Factory accessFactory, Renderer renderer) {
+ public RootedDocServlet(
+ RepositoryResolver<HttpServletRequest> resolver,
+ GitilesAccess.Factory accessFactory,
+ Renderer renderer) {
this.resolver = resolver;
docServlet = new DocServlet(accessFactory, renderer);
}
@@ -77,15 +79,18 @@
}
req.setAttribute(ATTRIBUTE_REPOSITORY, repo);
- ViewFilter.setView(req, GitilesView.rootedDoc()
- .setHostName(req.getServerName())
- .setServletPath(req.getContextPath() + req.getServletPath())
- .setRevision(BRANCH, obj)
- .setPathPart(req.getPathInfo())
- .build());
+ ViewFilter.setView(
+ req,
+ GitilesView.rootedDoc()
+ .setHostName(req.getServerName())
+ .setServletPath(req.getContextPath() + req.getServletPath())
+ .setRevision(BRANCH, obj)
+ .setPathPart(req.getPathInfo())
+ .build());
docServlet.service(req, res);
- } catch (RepositoryNotFoundException | ServiceNotAuthorizedException
+ } catch (RepositoryNotFoundException
+ | ServiceNotAuthorizedException
| ServiceNotEnabledException e) {
log.error(String.format("cannot open repository for %s", req.getServerName()), e);
res.sendError(HttpServletResponse.SC_NOT_FOUND);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ThreadSafePrettifyParser.java b/gitiles-servlet/src/main/java/com/google/gitiles/ThreadSafePrettifyParser.java
index f5881d4..36646aa 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ThreadSafePrettifyParser.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ThreadSafePrettifyParser.java
@@ -20,15 +20,15 @@
import prettify.parser.Prettify;
public class ThreadSafePrettifyParser extends PrettifyParser {
- public static final ThreadSafePrettifyParser INSTANCE =
- new ThreadSafePrettifyParser();
+ public static final ThreadSafePrettifyParser INSTANCE = new ThreadSafePrettifyParser();
private ThreadSafePrettifyParser() {
// Prettify is not thread safe ... unless we do this.
- prettify = new Prettify() {
- {
- langHandlerRegistry = Collections.synchronizedMap(langHandlerRegistry);
- }
- };
+ prettify =
+ new Prettify() {
+ {
+ langHandlerRegistry = Collections.synchronizedMap(langHandlerRegistry);
+ }
+ };
}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/TimeCache.java b/gitiles-servlet/src/main/java/com/google/gitiles/TimeCache.java
index efdff6e..7021733 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/TimeCache.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/TimeCache.java
@@ -58,25 +58,27 @@
Long getTime(final RevWalk walk, final ObjectId id) throws IOException {
try {
- return cache.get(id, new Callable<Long>() {
- @Override
- public Long call() throws IOException {
- RevObject o = walk.parseAny(id);
- while (o instanceof RevTag) {
- RevTag tag = (RevTag) o;
- PersonIdent ident = tag.getTaggerIdent();
- if (ident != null) {
- return ident.getWhen().getTime() / 1000;
+ return cache.get(
+ id,
+ new Callable<Long>() {
+ @Override
+ public Long call() throws IOException {
+ RevObject o = walk.parseAny(id);
+ while (o instanceof RevTag) {
+ RevTag tag = (RevTag) o;
+ PersonIdent ident = tag.getTaggerIdent();
+ if (ident != null) {
+ return ident.getWhen().getTime() / 1000;
+ }
+ o = tag.getObject();
+ walk.parseHeaders(o);
+ }
+ if (o.getType() == Constants.OBJ_COMMIT) {
+ return Long.valueOf(((RevCommit) o).getCommitTime());
+ }
+ return Long.MIN_VALUE;
}
- o = tag.getObject();
- walk.parseHeaders(o);
- }
- if (o.getType() == Constants.OBJ_COMMIT) {
- return Long.valueOf(((RevCommit) o).getCommitTime());
- }
- return Long.MIN_VALUE;
- }
- });
+ });
} catch (ExecutionException e) {
Throwables.propagateIfInstanceOf(e.getCause(), IOException.class);
throw new IOException(e);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/TreeJsonData.java b/gitiles-servlet/src/main/java/com/google/gitiles/TreeJsonData.java
index 4ad6562..b525453 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/TreeJsonData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/TreeJsonData.java
@@ -53,6 +53,5 @@
return tree;
}
- private TreeJsonData() {
- }
+ private TreeJsonData() {}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
index 6967c65..f1366ad 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
@@ -54,10 +54,7 @@
if (resolved == null) {
return null;
}
- return GitilesView.path()
- .copyFrom(view)
- .setPathPart(resolved)
- .toUrl();
+ return GitilesView.path().copyFrom(view).setPathPart(resolved).toUrl();
}
@VisibleForTesting
@@ -77,8 +74,7 @@
private final RevTree rootTree;
private ArchiveFormat archiveFormat;
- public TreeSoyData(ObjectReader reader, GitilesView view, Config cfg,
- RevTree rootTree) {
+ public TreeSoyData(ObjectReader reader, GitilesView view, Config cfg, RevTree rootTree) {
this.reader = reader;
this.view = view;
this.cfg = cfg;
@@ -90,8 +86,8 @@
return this;
}
- public Map<String, Object> toSoyData(ObjectId treeId, TreeWalk tw) throws MissingObjectException,
- IOException {
+ public Map<String, Object> toSoyData(ObjectId treeId, TreeWalk tw)
+ throws MissingObjectException, IOException {
ReadmeHelper readme = new ReadmeHelper(reader, view, cfg, rootTree);
List<Object> entries = Lists.newArrayList();
GitilesView.Builder urlBuilder = GitilesView.path().copyFrom(view);
@@ -108,8 +104,8 @@
urlBuilder.setPathPart(name);
break;
default:
- throw new IllegalStateException(String.format(
- "Cannot render TreeSoyData from %s view", view.getType()));
+ throw new IllegalStateException(
+ String.format("Cannot render TreeSoyData from %s view", view.getType()));
}
String url = urlBuilder.toUrl();
@@ -122,9 +118,7 @@
entry.put("name", name);
entry.put("url", url);
if (type == FileType.SYMLINK) {
- String target = new String(
- reader.open(tw.getObjectId(0)).getCachedBytes(),
- UTF_8);
+ String target = new String(reader.open(tw.getObjectId(0)).getCachedBytes(), UTF_8);
entry.put("targetName", getTargetDisplayName(target));
String targetUrl = resolveTargetUrl(view, target);
if (targetUrl != null) {
@@ -143,11 +137,13 @@
if (view.getType() == GitilesView.Type.PATH
&& view.getRevision().getPeeledType() == OBJ_COMMIT) {
data.put("logUrl", GitilesView.log().copyFrom(view).toUrl());
- data.put("archiveUrl", GitilesView.archive()
- .copyFrom(view)
- .setPathPart(Strings.emptyToNull(view.getPathPart()))
- .setExtension(archiveFormat.getDefaultSuffix())
- .toUrl());
+ data.put(
+ "archiveUrl",
+ GitilesView.archive()
+ .copyFrom(view)
+ .setPathPart(Strings.emptyToNull(view.getPathPart()))
+ .setExtension(archiveFormat.getDefaultSuffix())
+ .toUrl());
data.put("archiveType", archiveFormat.getShortName());
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
index 3bd5e09..131a353 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ViewFilter.java
@@ -93,8 +93,8 @@
private final GitilesAccess.Factory accessFactory;
private final VisibilityCache visibilityCache;
- public ViewFilter(GitilesAccess.Factory accessFactory, GitilesUrls urls,
- VisibilityCache visibilityCache) {
+ public ViewFilter(
+ GitilesAccess.Factory accessFactory, GitilesUrls urls, VisibilityCache visibilityCache) {
this.urls = checkNotNull(urls, "urls");
this.accessFactory = checkNotNull(accessFactory, "accessFactory");
this.visibilityCache = checkNotNull(visibilityCache, "visibilityCache");
@@ -134,8 +134,7 @@
}
}
- private boolean normalize(GitilesView.Builder view, HttpServletResponse res)
- throws IOException {
+ private boolean normalize(GitilesView.Builder view, HttpServletResponse res) throws IOException {
if (view.getOldRevision() != Revision.NULL) {
return false;
}
@@ -185,8 +184,7 @@
}
}
- private GitilesView.Builder parseNoCommand(HttpServletRequest req,
- String repoName) {
+ private GitilesView.Builder parseNoCommand(HttpServletRequest req, String repoName) {
if (!hasRepository(req)) {
return GitilesView.hostIndex().setRepositoryPrefix(repoName);
}
@@ -217,8 +215,8 @@
.setExtension(ext);
}
- private GitilesView.Builder parseAutoCommand(
- HttpServletRequest req, String repoName, String path) throws IOException {
+ private GitilesView.Builder parseAutoCommand(HttpServletRequest req, String repoName, String path)
+ throws IOException {
// Note: if you change the mapping for +, make sure to change
// GitilesView.toUrl() correspondingly.
if (path.isEmpty()) {
@@ -234,9 +232,9 @@
GitilesView.Builder b = parseShowCommand(repoName, result);
if (b != null && b.getPathPart() != null && b.getPathPart().endsWith(".md")) {
return GitilesView.doc()
- .setRepositoryName(repoName)
- .setRevision(result.getRevision())
- .setPathPart(result.getPath());
+ .setRepositoryName(repoName)
+ .setRevision(result.getRevision())
+ .setPathPart(result.getPath());
}
return b;
}
@@ -260,18 +258,15 @@
if (isEmptyOrSlash(path)) {
return null;
}
- return GitilesView.describe()
- .setRepositoryName(repoName)
- .setPathPart(path);
+ return GitilesView.describe().setRepositoryName(repoName).setPathPart(path);
}
- private GitilesView.Builder parseDiffCommand(
- HttpServletRequest req, String repoName, String path) throws IOException {
+ private GitilesView.Builder parseDiffCommand(HttpServletRequest req, String repoName, String path)
+ throws IOException {
return parseDiffCommand(repoName, parseRevision(req, path));
}
- private GitilesView.Builder parseDiffCommand(
- String repoName, RevisionParser.Result result) {
+ private GitilesView.Builder parseDiffCommand(String repoName, RevisionParser.Result result) {
if (result == null) {
return null;
}
@@ -282,8 +277,8 @@
.setPathPart(result.getPath());
}
- private GitilesView.Builder parseLogCommand(
- HttpServletRequest req, String repoName, String path) throws IOException {
+ private GitilesView.Builder parseLogCommand(HttpServletRequest req, String repoName, String path)
+ throws IOException {
if (isEmptyOrSlash(path)) {
return GitilesView.log().setRepositoryName(repoName);
}
@@ -299,46 +294,39 @@
}
private GitilesView.Builder parseRefsCommand(String repoName, String path) {
- return GitilesView.refs()
- .setRepositoryName(repoName)
- .setPathPart(path);
+ return GitilesView.refs().setRepositoryName(repoName).setPathPart(path);
}
- private GitilesView.Builder parseShowCommand(
- HttpServletRequest req, String repoName, String path) throws IOException {
+ private GitilesView.Builder parseShowCommand(HttpServletRequest req, String repoName, String path)
+ throws IOException {
return parseShowCommand(repoName, parseRevision(req, path));
}
- private GitilesView.Builder parseShowCommand(
- String repoName, RevisionParser.Result result) {
+ private GitilesView.Builder parseShowCommand(String repoName, RevisionParser.Result result) {
if (result == null || result.getOldRevision() != null) {
return null;
}
if (result.getPath().isEmpty()) {
- return GitilesView.revision()
- .setRepositoryName(repoName)
- .setRevision(result.getRevision());
+ return GitilesView.revision().setRepositoryName(repoName).setRevision(result.getRevision());
} else {
return GitilesView.path()
- .setRepositoryName(repoName)
- .setRevision(result.getRevision())
- .setPathPart(result.getPath());
+ .setRepositoryName(repoName)
+ .setRevision(result.getRevision())
+ .setPathPart(result.getPath());
}
}
- private GitilesView.Builder parseDocCommand(
- HttpServletRequest req, String repoName, String path) throws IOException {
+ private GitilesView.Builder parseDocCommand(HttpServletRequest req, String repoName, String path)
+ throws IOException {
return parseDocCommand(repoName, parseRevision(req, path));
}
- private GitilesView.Builder parseDocCommand(
- String repoName, RevisionParser.Result result) {
+ private GitilesView.Builder parseDocCommand(String repoName, RevisionParser.Result result) {
if (result == null || result.getOldRevision() != null) {
return null;
}
- GitilesView.Builder b = GitilesView.doc()
- .setRepositoryName(repoName)
- .setRevision(result.getRevision());
+ GitilesView.Builder b =
+ GitilesView.doc().setRepositoryName(repoName).setRevision(result.getRevision());
if (!result.getPath().isEmpty()) {
b.setPathPart(result.getPath());
}
@@ -347,8 +335,9 @@
private RevisionParser.Result parseRevision(HttpServletRequest req, String path)
throws IOException {
- RevisionParser revParser = new RevisionParser(
- ServletUtils.getRepository(req), accessFactory.forRequest(req), visibilityCache);
+ RevisionParser revParser =
+ new RevisionParser(
+ ServletUtils.getRepository(req), accessFactory.forRequest(req), visibilityCache);
return revParser.parse(checkLeadingSlash(path));
}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java b/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
index cc36da8..2c0385d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
@@ -81,10 +81,10 @@
@Override
public String toString() {
return toStringHelper(this)
- .add("user", user)
- .add("repositoryName", repositoryName)
- .add("objectId", objectId)
- .toString();
+ .add("user", user)
+ .add("repositoryName", repositoryName)
+ .add("objectId", objectId)
+ .toString();
}
}
@@ -92,9 +92,7 @@
private final boolean topoSort;
public static CacheBuilder<Object, Object> defaultBuilder() {
- return CacheBuilder.newBuilder()
- .maximumSize(1 << 10)
- .expireAfterWrite(30, TimeUnit.MINUTES);
+ return CacheBuilder.newBuilder().maximumSize(1 << 10).expireAfterWrite(30, TimeUnit.MINUTES);
}
public VisibilityCache(boolean topoSort) {
@@ -110,8 +108,13 @@
return cache;
}
- boolean isVisible(final Repository repo, final RevWalk walk, GitilesAccess access,
- final ObjectId id, final ObjectId... knownReachable) throws IOException {
+ boolean isVisible(
+ final Repository repo,
+ final RevWalk walk,
+ GitilesAccess access,
+ final ObjectId id,
+ final ObjectId... knownReachable)
+ throws IOException {
try {
return cache.get(
new Key(access.getUserKey(), access.getRepositoryName(), id),
@@ -135,8 +138,9 @@
}
}
- private boolean isVisible(Repository repo, RevWalk walk, ObjectId id,
- Collection<ObjectId> knownReachable) throws IOException {
+ private boolean isVisible(
+ Repository repo, RevWalk walk, ObjectId id, Collection<ObjectId> knownReachable)
+ throws IOException {
RevCommit commit;
try {
commit = walk.parseCommit(id);
@@ -175,23 +179,28 @@
@SuppressWarnings("unchecked")
private static Predicate<Ref> otherRefs() {
- return not(Predicates.<Ref> or(
- refStartsWith(R_HEADS), refStartsWith(R_TAGS), refStartsWith("refs/changes/")));
+ return not(
+ Predicates.<Ref>or(
+ refStartsWith(R_HEADS), refStartsWith(R_TAGS), refStartsWith("refs/changes/")));
}
- private boolean isReachableFromRefs(RevWalk walk, RevCommit commit,
- Collection<Ref> refs) throws IOException {
- return isReachableFrom(walk, commit,
- Collections2.transform(refs, new Function<Ref, ObjectId>() {
- @Override
- public ObjectId apply(Ref ref) {
- if (ref.getPeeledObjectId() != null) {
- return ref.getPeeledObjectId();
- } else {
- return ref.getObjectId();
- }
- }
- }));
+ private boolean isReachableFromRefs(RevWalk walk, RevCommit commit, Collection<Ref> refs)
+ throws IOException {
+ return isReachableFrom(
+ walk,
+ commit,
+ Collections2.transform(
+ refs,
+ new Function<Ref, ObjectId>() {
+ @Override
+ public ObjectId apply(Ref ref) {
+ if (ref.getPeeledObjectId() != null) {
+ return ref.getPeeledObjectId();
+ } else {
+ return ref.getObjectId();
+ }
+ }
+ }));
}
private boolean isReachableFrom(RevWalk walk, RevCommit commit, Collection<ObjectId> ids)
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
index 9c5edbd..daae821 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
@@ -69,8 +69,7 @@
}
@Override
- protected void doGetHtml(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws IOException {
GitilesView view = ViewFilter.getView(req);
Repository repo = ServletUtils.getRepository(req);
@@ -82,20 +81,32 @@
}
String title = "Blame - " + view.getPathPart();
- Map<String, ?> blobData = new BlobSoyData(rw.getObjectReader(), view)
- .toSoyData(view.getPathPart(), result.blobId);
+ Map<String, ?> blobData =
+ new BlobSoyData(rw.getObjectReader(), view).toSoyData(view.getPathPart(), result.blobId);
if (blobData.get("lines") != null) {
DateFormatter df = new DateFormatter(access, Format.ISO);
- renderHtml(req, res, "gitiles.blameDetail", ImmutableMap.of(
- "title", title,
- "breadcrumbs", view.getBreadcrumbs(),
- "data", blobData,
- "regions", toSoyData(view, rw.getObjectReader(), result.regions, df)));
+ renderHtml(
+ req,
+ res,
+ "gitiles.blameDetail",
+ ImmutableMap.of(
+ "title",
+ title,
+ "breadcrumbs",
+ view.getBreadcrumbs(),
+ "data",
+ blobData,
+ "regions",
+ toSoyData(view, rw.getObjectReader(), result.regions, df)));
} else {
- renderHtml(req, res, "gitiles.blameDetail", ImmutableMap.of(
- "title", title,
- "breadcrumbs", view.getBreadcrumbs(),
- "data", blobData));
+ renderHtml(
+ req,
+ res,
+ "gitiles.blameDetail",
+ ImmutableMap.of(
+ "title", title,
+ "breadcrumbs", view.getBreadcrumbs(),
+ "data", blobData));
}
}
}
@@ -118,15 +129,19 @@
r.setStart(start);
start += r.getCount();
}
- renderJson(req, res, ImmutableMap.of("regions", result.regions),
+ renderJson(
+ req,
+ res,
+ ImmutableMap.of("regions", result.regions),
new TypeToken<Map<String, List<Region>>>() {}.getType());
}
}
@Override
protected GsonBuilder newGsonBuilder(HttpServletRequest req) throws IOException {
- return super.newGsonBuilder(req).registerTypeAdapter(Region.class,
- new RegionAdapter(new DateFormatter(getAccess(req), Format.ISO)));
+ return super.newGsonBuilder(req)
+ .registerTypeAdapter(
+ Region.class, new RegionAdapter(new DateFormatter(getAccess(req), Format.ISO)));
}
private static class RegionResult {
@@ -139,8 +154,9 @@
}
}
- private RegionResult getRegions(GitilesView view, GitilesAccess access, Repository repo,
- RevWalk rw, HttpServletResponse res) throws IOException {
+ private RegionResult getRegions(
+ GitilesView view, GitilesAccess access, Repository repo, RevWalk rw, HttpServletResponse res)
+ throws IOException {
RevCommit currCommit = rw.parseCommit(view.getRevision().getId());
ObjectId currCommitBlobId = resolveBlob(view, rw, currCommit);
if (currCommitBlobId == null) {
@@ -152,13 +168,15 @@
ObjectId lastCommitBlobId = resolveBlob(view, rw, lastCommit);
if (!Objects.equals(currCommitBlobId, lastCommitBlobId)) {
- log.warn(String.format("Blob %s in last modified commit %s for repo %s starting from %s"
- + " does not match original blob %s",
- ObjectId.toString(lastCommitBlobId),
- ObjectId.toString(lastCommit),
- access.getRepositoryName(),
- ObjectId.toString(currCommit),
- ObjectId.toString(currCommitBlobId)));
+ log.warn(
+ String.format(
+ "Blob %s in last modified commit %s for repo %s starting from %s"
+ + " does not match original blob %s",
+ ObjectId.toString(lastCommitBlobId),
+ ObjectId.toString(lastCommit),
+ access.getRepositoryName(),
+ ObjectId.toString(currCommit),
+ ObjectId.toString(currCommitBlobId)));
lastCommitBlobId = currCommitBlobId;
lastCommit = currCommit;
}
@@ -191,6 +209,7 @@
private static final ImmutableList<String> CLASSES =
ImmutableList.of("Blame-region--bg1", "Blame-region--bg2");
private static final ImmutableList<SoyMapData> NULLS;
+
static {
ImmutableList.Builder<SoyMapData> nulls = ImmutableList.builder();
for (String clazz : CLASSES) {
@@ -199,8 +218,9 @@
NULLS = nulls.build();
}
- private static SoyListData toSoyData(GitilesView view, ObjectReader reader,
- List<Region> regions, DateFormatter df) throws IOException {
+ private static SoyListData toSoyData(
+ GitilesView view, ObjectReader reader, List<Region> regions, DateFormatter df)
+ throws IOException {
Map<ObjectId, String> abbrevShas = Maps.newHashMap();
SoyListData result = new SoyListData();
@@ -225,18 +245,24 @@
blameParent = "^";
blameText = "blame^";
}
- e.put("blameUrl", GitilesView.blame().copyFrom(view)
- .setRevision(r.getSourceCommit().name() + blameParent)
- .setPathPart(r.getSourcePath())
- .toUrl());
+ e.put(
+ "blameUrl",
+ GitilesView.blame()
+ .copyFrom(view)
+ .setRevision(r.getSourceCommit().name() + blameParent)
+ .setPathPart(r.getSourcePath())
+ .toUrl());
e.put("blameText", blameText);
- e.put("commitUrl", GitilesView.revision().copyFrom(view)
- .setRevision(r.getSourceCommit().name())
- .toUrl());
- e.put("diffUrl", GitilesView.diff().copyFrom(view)
- .setRevision(r.getSourceCommit().name())
- .setPathPart(r.getSourcePath())
- .toUrl());
+ e.put(
+ "commitUrl",
+ GitilesView.revision().copyFrom(view).setRevision(r.getSourceCommit().name()).toUrl());
+ e.put(
+ "diffUrl",
+ GitilesView.diff()
+ .copyFrom(view)
+ .setRevision(r.getSourceCommit().name())
+ .setPathPart(r.getSourcePath())
+ .toUrl());
e.put("author", CommitSoyData.toSoyData(r.getSourceAuthor(), df));
e.put("class", CLASSES.get(c));
result.add(e);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/blame/RegionAdapter.java b/gitiles-servlet/src/main/java/com/google/gitiles/blame/RegionAdapter.java
index a9710ae..eed270f 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/blame/RegionAdapter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/blame/RegionAdapter.java
@@ -35,15 +35,23 @@
@Override
public void write(JsonWriter out, Region value) throws IOException {
out.beginObject()
- .name("start").value(value.getStart() + 1)
- .name("count").value(value.getCount())
- .name("path").value(value.getSourcePath())
- .name("commit").value(ObjectId.toString(value.getSourceCommit()))
- .name("author").beginObject()
+ .name("start")
+ .value(value.getStart() + 1)
+ .name("count")
+ .value(value.getCount())
+ .name("path")
+ .value(value.getSourcePath())
+ .name("commit")
+ .value(ObjectId.toString(value.getSourceCommit()))
+ .name("author")
+ .beginObject()
// TODO(dborowitz): Use an adapter from CommitJsonData instead.
- .name("name").value(value.getSourceAuthor().getName())
- .name("email").value(value.getSourceAuthor().getEmailAddress())
- .name("time").value(df.format(value.getSourceAuthor()))
+ .name("name")
+ .value(value.getSourceAuthor().getName())
+ .name("email")
+ .value(value.getSourceAuthor().getEmailAddress())
+ .name("time")
+ .value(df.format(value.getSourceAuthor()))
.endObject()
.endObject();
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/ColsNode.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/ColsNode.java
index 7c31b0f..502c39f 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/ColsNode.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/ColsNode.java
@@ -57,10 +57,8 @@
int idx = 0;
Column col = null;
for (Node n : children) {
- if (col == null
- || n instanceof HeaderNode
- || n instanceof DivNode) {
- for (;;) {
+ if (col == null || n instanceof HeaderNode || n instanceof DivNode) {
+ for (; ; ) {
if (idx < columns.size()) {
col = columns.get(idx);
} else {
@@ -78,9 +76,7 @@
}
private static <T> ArrayList<T> copyOf(List<T> in) {
- return in != null && !in.isEmpty()
- ? new ArrayList<>(in)
- : new ArrayList<T>();
+ return in != null && !in.isEmpty() ? new ArrayList<>(in) : new ArrayList<T>();
}
@SuppressWarnings("unchecked")
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DivNode.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DivNode.java
index f3389de..9bdb926 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DivNode.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DivNode.java
@@ -25,9 +25,10 @@
private final String style;
DivNode(String style, List<Node> list) {
- super(list.size() == 1 && list.get(0) instanceof ParaNode
- ? ((ParaNode) list.get(0)).getChildren()
- : list);
+ super(
+ list.size() == 1 && list.get(0) instanceof ParaNode
+ ? ((ParaNode) list.get(0)).getChildren()
+ : list);
this.style = style;
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
index 59b8b5c..4b774a5 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/DocServlet.java
@@ -76,8 +76,7 @@
}
@Override
- protected void doGetHtml(HttpServletRequest req, HttpServletResponse res)
- throws IOException {
+ protected void doGetHtml(HttpServletRequest req, HttpServletResponse res) throws IOException {
Config cfg = getAccess(req).getConfig();
if (!cfg.getBoolean("markdown", "render", true)) {
res.setStatus(SC_NOT_FOUND);
@@ -110,13 +109,14 @@
return;
}
- Duration parseTimeout = ConfigUtil.getDuration(cfg, "markdown", null,
- "parseTimeout", Duration.standardSeconds(2));
+ Duration parseTimeout =
+ ConfigUtil.getDuration(
+ cfg, "markdown", null, "parseTimeout", Duration.standardSeconds(2));
view = view.toBuilder().setPathPart(srcmd.path).build();
int inputLimit = cfg.getInt("markdown", "inputLimit", 5 << 20);
- RootNode doc = GitilesMarkdown.parseFile(
- parseTimeout, view, srcmd.path,
- srcmd.read(rw.getObjectReader(), inputLimit));
+ RootNode doc =
+ GitilesMarkdown.parseFile(
+ parseTimeout, view, srcmd.path, srcmd.read(rw.getObjectReader(), inputLimit));
if (doc == null) {
res.sendRedirect(GitilesView.show().copyFrom(view).toUrl());
return;
@@ -124,9 +124,9 @@
RootNode nav = null;
if (navmd != null) {
- nav = GitilesMarkdown.parseFile(
- parseTimeout, view, navmd.path,
- navmd.read(rw.getObjectReader(), inputLimit));
+ nav =
+ GitilesMarkdown.parseFile(
+ parseTimeout, view, navmd.path, navmd.read(rw.getObjectReader(), inputLimit));
if (nav == null) {
res.setStatus(SC_INTERNAL_SERVER_ERROR);
return;
@@ -136,8 +136,7 @@
int imageLimit = cfg.getInt("markdown", "imageLimit", 256 << 10);
ImageLoader img = null;
if (imageLimit > 0) {
- img = new ImageLoader(rw.getObjectReader(), view,
- root, srcmd.path, imageLimit);
+ img = new ImageLoader(rw.getObjectReader(), view, root, srcmd.path, imageLimit);
}
res.setHeader(HttpHeaders.ETAG, curEtag);
@@ -171,23 +170,25 @@
res.setHeader(HttpHeaders.CACHE_CONTROL, "private, max-age=0, must-revalidate");
}
- private void showDoc(HttpServletRequest req, HttpServletResponse res,
- GitilesView view, Config cfg, ImageLoader img,
- RootNode nav, RootNode doc) throws IOException {
+ private void showDoc(
+ HttpServletRequest req,
+ HttpServletResponse res,
+ GitilesView view,
+ Config cfg,
+ ImageLoader img,
+ RootNode nav,
+ RootNode doc)
+ throws IOException {
Map<String, Object> data = new HashMap<>();
data.putAll(Navbar.bannerSoyData(view, img, nav));
- data.put("pageTitle", MoreObjects.firstNonNull(
- MarkdownUtil.getTitle(doc),
- view.getPathPart()));
+ data.put("pageTitle", MoreObjects.firstNonNull(MarkdownUtil.getTitle(doc), view.getPathPart()));
if (view.getType() != GitilesView.Type.ROOTED_DOC) {
data.put("sourceUrl", GitilesView.show().copyFrom(view).toUrl());
data.put("logUrl", GitilesView.log().copyFrom(view).toUrl());
data.put("blameUrl", GitilesView.blame().copyFrom(view).toUrl());
}
data.put("navbarHtml", new MarkdownToHtml(view, cfg).toSoyHtml(nav));
- data.put("bodyHtml", new MarkdownToHtml(view, cfg)
- .setImageLoader(img)
- .toSoyHtml(doc));
+ data.put("bodyHtml", new MarkdownToHtml(view, cfg).setImageLoader(img).toSoyHtml(doc));
String analyticsId = cfg.getString("google", null, "analyticsId");
if (!Strings.isNullOrEmpty(analyticsId)) {
@@ -237,8 +238,7 @@
private static boolean findIndexFile(TreeWalk tw) throws IOException {
tw.enterSubtree();
while (tw.next()) {
- if ((tw.getRawMode(0) & TYPE_MASK) == TYPE_FILE
- && INDEX_MD.equals(tw.getNameString())) {
+ if ((tw.getRawMode(0) & TYPE_MASK) == TYPE_FILE && INDEX_MD.equals(tw.getNameString())) {
return true;
}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java
index 91168b8..c417932 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/GitilesMarkdown.java
@@ -39,8 +39,7 @@
import java.util.List;
/** Parses Gitiles extensions to markdown. */
-public class GitilesMarkdown extends Parser
- implements BlockPluginParser, InlinePluginParser {
+public class GitilesMarkdown extends Parser implements BlockPluginParser, InlinePluginParser {
private static final Logger log = LoggerFactory.getLogger(MarkdownUtil.class);
// SUPPRESS_ALL_HTML is enabled to permit hosting arbitrary user content
@@ -51,8 +50,8 @@
// this impacting the rendered formatting.
private static final int MD_OPTIONS = (ALL | SUPPRESS_ALL_HTML) & ~(HARDWRAPS);
- public static RootNode parseFile(Duration parseTimeout, GitilesView view,
- String path, String md) {
+ public static RootNode parseFile(
+ Duration parseTimeout, GitilesView view, String path, String md) {
if (md == null) {
return null;
}
@@ -65,7 +64,8 @@
throw e;
}
} catch (ParsingTimeoutException e) {
- log.error("timeout {} ms rendering {}/{} at {}",
+ log.error(
+ "timeout {} ms rendering {}/{} at {}",
parseTimeout.getMillis(),
view.getRepositoryName(),
path,
@@ -75,9 +75,8 @@
}
private static PegDownProcessor newParser(Duration parseDeadline) {
- PegDownPlugins plugins = new PegDownPlugins.Builder()
- .withPlugin(GitilesMarkdown.class, parseDeadline)
- .build();
+ PegDownPlugins plugins =
+ new PegDownPlugins.Builder().withPlugin(GitilesMarkdown.class, parseDeadline).build();
return new PegDownProcessor(MD_OPTIONS, parseDeadline.getMillis(), plugins);
}
@@ -92,32 +91,28 @@
@Override
public Rule[] blockPluginRules() {
return new Rule[] {
- cols(),
- hr(),
- iframe(),
- note(),
- toc(),
+ cols(), hr(), iframe(), note(), toc(),
};
}
@Override
public Rule[] inlinePluginRules() {
- return new Rule[]{
- namedAnchorHtmlStyle(),
- namedAnchorMarkdownExtensionStyle(),
+ return new Rule[] {
+ namedAnchorHtmlStyle(), namedAnchorMarkdownExtensionStyle(),
};
}
public Rule toc() {
- return NodeSequence(
- string("[TOC]"),
- push(new TocNode()));
+ return NodeSequence(string("[TOC]"), push(new TocNode()));
}
public Rule hr() {
// GitHub flavor markdown recognizes "--" as a rule.
return NodeSequence(
- NonindentSpace(), string("--"), zeroOrMore('-'), Newline(),
+ NonindentSpace(),
+ string("--"),
+ zeroOrMore('-'),
+ Newline(),
oneOrMore(BlankLine()),
push(new SimpleNode(SimpleNode.Type.HRule)));
}
@@ -125,19 +120,21 @@
public Rule namedAnchorHtmlStyle() {
StringBuilderVar name = new StringBuilderVar();
return NodeSequence(
- Sp(), string("<a"),
+ Sp(),
+ string("<a"),
Spn1(),
sequence(string("name="), attribute(name)),
- Spn1(), '>',
- Spn1(), string("</a>"),
+ Spn1(),
+ '>',
+ Spn1(),
+ string("</a>"),
push(new NamedAnchorNode(name.getString())));
}
public Rule namedAnchorMarkdownExtensionStyle() {
StringBuilderVar name = new StringBuilderVar();
return NodeSequence(
- Sp(), string("{#"), anchorId(name), '}',
- push(new NamedAnchorNode(name.getString())));
+ Sp(), string("{#"), anchorId(name), '}', push(new NamedAnchorNode(name.getString())));
}
public Rule anchorId(StringBuilderVar name) {
@@ -152,35 +149,36 @@
return NodeSequence(
string("<iframe"),
oneOrMore(
- sequence(
- Spn1(),
- firstOf(
- sequence(string("src="), attribute(src)),
- sequence(string("height="), attribute(h)),
- sequence(string("width="), attribute(w)),
- sequence(string("frameborder="), attribute(b))
- ))),
- Spn1(), '>',
- Spn1(), string("</iframe>"),
- push(new IframeNode(src.getString(),
- h.getString(), w.getString(),
- b.getString())));
+ sequence(
+ Spn1(),
+ firstOf(
+ sequence(string("src="), attribute(src)),
+ sequence(string("height="), attribute(h)),
+ sequence(string("width="), attribute(w)),
+ sequence(string("frameborder="), attribute(b))))),
+ Spn1(),
+ '>',
+ Spn1(),
+ string("</iframe>"),
+ push(new IframeNode(src.getString(), h.getString(), w.getString(), b.getString())));
}
public Rule attribute(StringBuilderVar var) {
return firstOf(
- sequence('"', zeroOrMore(testNot('"'), ANY), var.append(match()), '"'),
- sequence('\'', zeroOrMore(testNot('\''), ANY), var.append(match()), '\''));
+ sequence('"', zeroOrMore(testNot('"'), ANY), var.append(match()), '"'),
+ sequence('\'', zeroOrMore(testNot('\''), ANY), var.append(match()), '\''));
}
public Rule note() {
StringBuilderVar body = new StringBuilderVar();
return NodeSequence(
- string("***"), Sp(), typeOfNote(), Newline(),
- oneOrMore(
- testNot(string("***"), Newline()),
- Line(body)),
- string("***"), Newline(),
+ string("***"),
+ Sp(),
+ typeOfNote(),
+ Newline(),
+ oneOrMore(testNot(string("***"), Newline()), Line(body)),
+ string("***"),
+ Newline(),
push(new DivNode(popAsString(), parse(body))));
}
@@ -195,11 +193,12 @@
public Rule cols() {
StringBuilderVar body = new StringBuilderVar();
return NodeSequence(
- colsTag(), columnWidths(), Newline(),
- oneOrMore(
- testNot(colsTag(), Newline()),
- Line(body)),
- colsTag(), Newline(),
+ colsTag(),
+ columnWidths(),
+ Newline(),
+ oneOrMore(testNot(colsTag(), Newline()), Line(body)),
+ colsTag(),
+ Newline(),
push(new ColsNode((List<ColsNode.Column>) pop(), parse(body))));
}
@@ -210,19 +209,17 @@
public Rule columnWidths() {
ListVar widths = new ListVar();
return sequence(
- zeroOrMore(
- sequence(
- Sp(), optional(ch(',')), Sp(),
- columnWidth(widths))),
- push(widths.get()));
+ zeroOrMore(sequence(Sp(), optional(ch(',')), Sp(), columnWidth(widths))),
+ push(widths.get()));
}
public Rule columnWidth(ListVar widths) {
StringBuilderVar s = new StringBuilderVar();
return sequence(
- optional(sequence(ch(':'), s.append(':'))),
- oneOrMore(digit()), s.append(match()),
- widths.get().add(parse(s.get().toString())));
+ optional(sequence(ch(':'), s.append(':'))),
+ oneOrMore(digit()),
+ s.append(match()),
+ widths.get().add(parse(s.get().toString())));
}
static ColsNode.Column parse(String spec) {
@@ -248,12 +245,13 @@
public static class ListVar extends Var<List<Object>> {
@SuppressWarnings({"rawtypes", "unchecked"})
public ListVar() {
- super(new Factory() {
- @Override
- public Object create() {
- return new ArrayList<>();
- }
- });
+ super(
+ new Factory() {
+ @Override
+ public Object create() {
+ return new ArrayList<>();
+ }
+ });
}
}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/ImageLoader.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/ImageLoader.java
index 11c5e2f..b381616 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/ImageLoader.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/ImageLoader.java
@@ -41,8 +41,8 @@
private final String path;
private final int imageLimit;
- public ImageLoader(ObjectReader reader, GitilesView view,
- RevTree root, String path, int maxImageSize) {
+ public ImageLoader(
+ ObjectReader reader, GitilesView view, RevTree root, String path, int maxImageSize) {
this.reader = reader;
this.view = view;
this.root = root;
@@ -97,17 +97,20 @@
} catch (LargeObjectException.ExceedsLimit e) {
return FilterImageDataUri.INSTANCE.getInnocuousOutput();
} catch (IOException e) {
- log.error(String.format("cannot read repo %s image %s from %s",
- view.getRepositoryName(), path, root.name()), e);
+ log.error(
+ String.format(
+ "cannot read repo %s image %s from %s", view.getRepositoryName(), path, root.name()),
+ e);
return FilterImageDataUri.INSTANCE.getInnocuousOutput();
}
}
- private static final ImmutableMap<String, String> TYPES = ImmutableMap.of(
- "png", "image/png",
- "gif", "image/gif",
- "jpg", "image/jpeg",
- "jpeg", "image/jpeg");
+ private static final ImmutableMap<String, String> TYPES =
+ ImmutableMap.of(
+ "png", "image/png",
+ "gif", "image/gif",
+ "jpg", "image/jpeg",
+ "jpeg", "image/jpeg");
private static String getMimeType(String path) {
int d = path.lastIndexOf('.');
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
index eb602ea..7d0d4e1 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownToHtml.java
@@ -188,7 +188,8 @@
.attribute("class", "h")
.attribute("name", id)
.attribute("href", "#" + id)
- .open("span").close("span")
+ .open("span")
+ .close("span")
.close("a");
}
visitChildren(node);
@@ -322,33 +323,25 @@
@Override
public void visit(AutoLinkNode node) {
String url = node.getText();
- html.open("a").attribute("href", href(url))
- .appendAndEscape(url)
- .close("a");
+ html.open("a").attribute("href", href(url)).appendAndEscape(url).close("a");
}
@Override
public void visit(MailLinkNode node) {
String addr = node.getText();
- html.open("a").attribute("href", "mailto:" + addr)
- .appendAndEscape(addr)
- .close("a");
+ html.open("a").attribute("href", "mailto:" + addr).appendAndEscape(addr).close("a");
}
@Override
public void visit(WikiLinkNode node) {
String text = node.getText();
String path = text.replace(' ', '-') + ".md";
- html.open("a").attribute("href", href(path))
- .appendAndEscape(text)
- .close("a");
+ html.open("a").attribute("href", href(path)).appendAndEscape(text).close("a");
}
@Override
public void visit(ExpLinkNode node) {
- html.open("a")
- .attribute("href", href(node.url))
- .attribute("title", node.title);
+ html.open("a").attribute("href", href(node.url)).attribute("title", node.title);
visitChildren(node);
html.close("a");
}
@@ -357,9 +350,7 @@
public void visit(RefLinkNode node) {
ReferenceNode ref = references.get(node.referenceKey, getInnerText(node));
if (ref != null) {
- html.open("a")
- .attribute("href", href(ref.getUrl()))
- .attribute("title", ref.getTitle());
+ html.open("a").attribute("href", href(ref.getUrl())).attribute("title", ref.getTitle());
visitChildren(node);
html.close("a");
} else {
@@ -411,9 +402,7 @@
return FilterNormalizeUri.INSTANCE.getInnocuousOutput();
}
- GitilesView.Builder dest = url.endsWith(".md")
- ? GitilesView.doc()
- : GitilesView.show();
+ GitilesView.Builder dest = url.endsWith(".md") ? GitilesView.doc() : GitilesView.show();
return dest.copyFrom(view).setPathPart(dir + url).build().toUrl();
}
@@ -437,15 +426,13 @@
// If reference is missing, insert a broken image.
url = FilterImageDataUri.INSTANCE.getInnocuousOutput();
}
- html.open("img")
- .attribute("src", url)
- .attribute("title", title)
- .attribute("alt", alt);
+ html.open("img").attribute("src", url).attribute("title", title).attribute("alt", alt);
}
private String resolveImageUrl(String url) {
if (imageLoader == null
- || url.startsWith("https://") || url.startsWith("http://")
+ || url.startsWith("https://")
+ || url.startsWith("http://")
|| url.startsWith("data:")) {
return url;
}
@@ -492,8 +479,7 @@
public void visit(TableCellNode node) {
mustBeInsideTable(node);
String tag = table.inHeader ? "th" : "td";
- html.open(tag)
- .attribute("align", table.getAlign());
+ html.open(tag).attribute("align", table.getAlign());
if (node.getColSpan() > 1) {
html.attribute("colspan", Integer.toString(node.getColSpan()));
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownUtil.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownUtil.java
index e6a0f00..5130216 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownUtil.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/MarkdownUtil.java
@@ -23,9 +23,7 @@
class MarkdownUtil {
/** Check if anchor URL is like {@code /top.md}. */
static boolean isAbsolutePathToMarkdown(String url) {
- return url.length() >= 5
- && url.charAt(0) == '/' && url.charAt(1) != '/'
- && url.endsWith(".md");
+ return url.length() >= 5 && url.charAt(0) == '/' && url.charAt(1) != '/' && url.endsWith(".md");
}
/** Combine child nodes as string; this must be escaped for HTML. */
@@ -66,6 +64,5 @@
return null;
}
- private MarkdownUtil() {
- }
+ private MarkdownUtil() {}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/Navbar.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/Navbar.java
index 548a252..aa8e0eb 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/Navbar.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/Navbar.java
@@ -29,9 +29,7 @@
import java.util.Map;
class Navbar {
- static Map<String, Object> bannerSoyData(
- GitilesView view, ImageLoader img,
- RootNode nav) {
+ static Map<String, Object> bannerSoyData(GitilesView view, ImageLoader img, RootNode nav) {
Map<String, Object> data = new HashMap<>();
data.put("siteTitle", null);
data.put("logoUrl", null);
@@ -41,7 +39,7 @@
return data;
}
- for (Iterator<Node> i = nav.getChildren().iterator(); i.hasNext();) {
+ for (Iterator<Node> i = nav.getChildren().iterator(); i.hasNext(); ) {
Node n = i.next();
if (n instanceof HeaderNode) {
HeaderNode h = (HeaderNode) n;
@@ -78,6 +76,5 @@
return data;
}
- private Navbar() {
- }
+ private Navbar() {}
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/TableState.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/TableState.java
index 80276d2..396a86b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/TableState.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/TableState.java
@@ -47,13 +47,12 @@
case Center:
return "center";
default:
- throw new IllegalStateException(String.format(
- "unsupported alignment %s on column %d",
- c.getAlignment(), pos));
+ throw new IllegalStateException(
+ String.format("unsupported alignment %s on column %d", c.getAlignment(), pos));
}
}
void done(TableCellNode cell) {
column += cell.getColSpan();
}
-}
\ No newline at end of file
+}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/TocFormatter.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/TocFormatter.java
index ed5315c..cb82f54 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/TocFormatter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/TocFormatter.java
@@ -73,9 +73,12 @@
html.open("div")
.attribute("class", "toc")
.attribute("role", "navigation")
- .open("h2").appendAndEscape("Contents").close("h2")
- .open("div").attribute("class", "toc-aux")
- .open("ul");
+ .open("h2")
+ .appendAndEscape("Contents")
+ .close("h2")
+ .open("div")
+ .attribute("class", "toc-aux")
+ .open("ul");
for (HeaderNode header : outline) {
outline(header);
}
@@ -106,15 +109,14 @@
}
html.open("li")
- .open("a").attribute("href", "#" + id)
- .appendAndEscape(MarkdownUtil.getInnerText(h))
- .close("a")
- .close("li");
+ .open("a")
+ .attribute("href", "#" + id)
+ .appendAndEscape(MarkdownUtil.getInnerText(h))
+ .close("a")
+ .close("li");
}
- private void scan(Node node,
- Multimap<String, TocEntry> entries,
- Deque<HeaderNode> stack) {
+ private void scan(Node node, Multimap<String, TocEntry> entries, Deque<HeaderNode> stack) {
if (node instanceof HeaderNode) {
scan((HeaderNode) node, entries, stack);
} else {
@@ -124,9 +126,8 @@
}
}
- private void scan(HeaderNode header,
- Multimap<String, TocEntry> entries,
- Deque<HeaderNode> stack) {
+ private void scan(
+ HeaderNode header, Multimap<String, TocEntry> entries, Deque<HeaderNode> stack) {
if (header.getLevel() == 1) {
countH1++;
}
@@ -227,14 +228,10 @@
private static String idFromTitle(String title) {
StringBuilder b = new StringBuilder(title.length());
for (char c : StringUtils.stripAccents(title).toCharArray()) {
- if (('a' <= c && c <= 'z')
- || ('A' <= c && c <= 'Z')
- || ('0' <= c && c <= '9')) {
+ if (('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9')) {
b.append(c);
} else if (c == ' ') {
- if (b.length() > 0
- && b.charAt(b.length() - 1) != '-'
- && b.charAt(b.length() - 1) != '_') {
+ if (b.length() > 0 && b.charAt(b.length() - 1) != '-' && b.charAt(b.length() - 1) != '_') {
b.append('-');
}
} else if (b.length() > 0
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/Visitor.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/Visitor.java
index 5562be2..6c9f2f6 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/Visitor.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/Visitor.java
@@ -16,9 +16,14 @@
public interface Visitor extends org.pegdown.ast.Visitor {
void visit(ColsNode node);
+
void visit(ColsNode.Column node);
+
void visit(DivNode node);
+
void visit(IframeNode node);
+
void visit(TocNode node);
+
void visit(NamedAnchorNode node);
}
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/doc/html/HtmlBuilder.java b/gitiles-servlet/src/main/java/com/google/gitiles/doc/html/HtmlBuilder.java
index 5b74c35..89611da 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/doc/html/HtmlBuilder.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/doc/html/HtmlBuilder.java
@@ -41,20 +41,46 @@
* {@code https://}, and for image src {@code data:image/*;base64,...}.
*/
public final class HtmlBuilder {
- private static final ImmutableSet<String> ALLOWED_TAGS = ImmutableSet.of(
- "h1", "h2", "h3", "h4", "h5", "h6",
- "a", "div", "img", "p", "blockquote", "pre",
- "ol", "ul", "li", "dl", "dd", "dt",
- "del", "em", "strong", "code", "br", "hr",
- "table", "thead", "tbody", "caption", "tr", "th", "td",
- "iframe", "span"
- );
+ private static final ImmutableSet<String> ALLOWED_TAGS =
+ ImmutableSet.of(
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "a",
+ "div",
+ "img",
+ "p",
+ "blockquote",
+ "pre",
+ "ol",
+ "ul",
+ "li",
+ "dl",
+ "dd",
+ "dt",
+ "del",
+ "em",
+ "strong",
+ "code",
+ "br",
+ "hr",
+ "table",
+ "thead",
+ "tbody",
+ "caption",
+ "tr",
+ "th",
+ "td",
+ "iframe",
+ "span");
- private static final ImmutableSet<String> ALLOWED_ATTRIBUTES = ImmutableSet.of(
- "id", "class", "role");
+ private static final ImmutableSet<String> ALLOWED_ATTRIBUTES =
+ ImmutableSet.of("id", "class", "role");
- private static final ImmutableSet<String> SELF_CLOSING_TAGS = ImmutableSet.of(
- "img", "br", "hr");
+ private static final ImmutableSet<String> SELF_CLOSING_TAGS = ImmutableSet.of("img", "br", "hr");
private static final FilterNormalizeUri URI = FilterNormalizeUri.INSTANCE;
private static final FilterImageDataUri IMAGE_DATA = FilterImageDataUri.INSTANCE;
@@ -64,9 +90,7 @@
}
public static boolean isValidHttpUri(String val) {
- return (val.startsWith("https://")
- || val.startsWith("http://")
- || val.startsWith("//"))
+ return (val.startsWith("https://") || val.startsWith("http://") || val.startsWith("//"))
&& URI.getValueFilter().matcher(val).find();
}
@@ -163,8 +187,7 @@
/** Close an open tag with {@code </tag>} */
public HtmlBuilder close(String tag) {
checkArgument(
- ALLOWED_TAGS.contains(tag) && !SELF_CLOSING_TAGS.contains(tag),
- "invalid HTML tag %s", tag);
+ ALLOWED_TAGS.contains(tag) && !SELF_CLOSING_TAGS.contains(tag), "invalid HTML tag %s", tag);
finishActiveTag();
htmlBuf.append("</").append(tag).append('>');
@@ -194,8 +217,6 @@
/** Bless the current content as HTML. */
public SanitizedContent toSoy() {
finishActiveTag();
- return UnsafeSanitizedContentOrdainer.ordainAsSafe(
- htmlBuf.toString(),
- ContentKind.HTML);
+ return UnsafeSanitizedContentOrdainer.ordainAsSafe(htmlBuf.toString(), ContentKind.HTML);
}
}