Merge "Update soy to 2016-08-09 and icu4j to 57.1"
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 fd3f3f9..30d37f5 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -44,6 +44,7 @@
import org.eclipse.jgit.revwalk.FollowFilter;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevObject;
+import org.eclipse.jgit.revwalk.RevSort;
import org.eclipse.jgit.revwalk.RevTag;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.revwalk.filter.AndRevFilter;
@@ -97,7 +98,7 @@
Paginator paginator = null;
try {
GitilesAccess access = getAccess(req);
- paginator = newPaginator(repo, view, getAccess(req));
+ paginator = newPaginator(repo, view, access);
if (paginator == null) {
res.setStatus(SC_NOT_FOUND);
return;
@@ -158,12 +159,13 @@
Paginator paginator = null;
try {
- paginator = newPaginator(repo, view, getAccess(req));
+ GitilesAccess access = getAccess(req);
+ paginator = newPaginator(repo, view, access);
if (paginator == null) {
res.setStatus(SC_NOT_FOUND);
return;
}
- DateFormatter df = new DateFormatter(getAccess(req), Format.DEFAULT);
+ DateFormatter df = new DateFormatter(access, Format.DEFAULT);
CommitJsonData.Log result = new CommitJsonData.Log();
List<CommitJsonData.Commit> entries = Lists.newArrayListWithCapacity(paginator.getLimit());
for (RevCommit c : paginator) {
@@ -236,24 +238,37 @@
return null;
}
setTreeFilter(walk, view, access);
+ setRevFilter(walk, view);
+ if (isTrue(view, "topo-order")) {
+ walk.sort(RevSort.TOPO, true);
+ }
+ if (isTrue(view, "reverse")) {
+ walk.sort(RevSort.REVERSE, true);
+ }
+ return walk;
+ }
+
+ private static void setRevFilter(RevWalk walk, GitilesView view) {
List<RevFilter> filters = new ArrayList<>(3);
- if (isTrue(Iterables.getFirst(view.getParameters().get("no-merges"), null))) {
+ if (isTrue(view, "no-merges")) {
filters.add(RevFilter.NO_MERGES);
}
+
String author = Iterables.getFirst(view.getParameters().get("author"), null);
if (author != null) {
filters.add(IdentRevFilter.author(author));
}
+
String committer = Iterables.getFirst(view.getParameters().get("committer"), null);
if (committer != null) {
filters.add(IdentRevFilter.committer(committer));
}
+
if (filters.size() > 1) {
walk.setRevFilter(AndRevFilter.create(filters));
} else if (filters.size() == 1) {
walk.setRevFilter(filters.get(0));
}
- return walk;
}
private static void setTreeFilter(RevWalk walk, GitilesView view, GitilesAccess access)
@@ -277,6 +292,10 @@
}
}
+ private static boolean isTrue(GitilesView view, String param) {
+ return isTrue(Iterables.getFirst(view.getParameters().get(param), null));
+ }
+
private static boolean isTrue(String v) {
if (v == null) {
return false;