Return a List from ChangeData.currentFilePaths()
Change-Id: I44049d27f4e62870997671f273b1e06d40b2656f
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java
index b16ab2a..716a22b 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/CommentSender.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.mail;
+import com.google.common.collect.Ordering;
import com.google.gerrit.common.errors.EmailException;
import com.google.gerrit.reviewdb.client.AccountProjectWatch.NotifyType;
import com.google.gerrit.reviewdb.client.Change;
@@ -29,7 +30,6 @@
import org.eclipse.jgit.lib.Repository;
import java.io.IOException;
-import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
@@ -62,9 +62,7 @@
paths.add(p.getFileName());
}
}
- String[] names = paths.toArray(new String[paths.size()]);
- Arrays.sort(names);
- changeData.setCurrentFilePaths(names);
+ changeData.setCurrentFilePaths(Ordering.natural().sortedCopy(paths));
}
@Override
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java
index bf3b605..d1fe4ec 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/ChangeData.java
@@ -51,7 +51,6 @@
import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -141,7 +140,7 @@
private ListMultimap<PatchSet.Id, PatchSetApproval> limitedApprovals;
private ListMultimap<PatchSet.Id, PatchSetApproval> allApprovals;
private List<PatchSetApproval> currentApprovals;
- private String[] currentFiles;
+ private List<String> currentFiles;
private Collection<PatchLineComment> comments;
private Collection<TrackingId> trackingIds;
private CurrentUser visibleTo;
@@ -180,11 +179,11 @@
return limitedIds;
}
- public void setCurrentFilePaths(String[] filePaths) {
+ public void setCurrentFilePaths(List<String> filePaths) {
currentFiles = filePaths;
}
- public String[] currentFilePaths(Provider<ReviewDb> db,
+ public List<String> currentFilePaths(Provider<ReviewDb> db,
PatchListCache cache) throws OrmException {
if (currentFiles == null) {
Change c = change(db);
@@ -200,7 +199,7 @@
try {
p = cache.get(c, ps);
} catch (PatchListNotAvailableException e) {
- currentFiles = new String[0];
+ currentFiles = Collections.emptyList();
return currentFiles;
}
@@ -226,8 +225,8 @@
break;
}
}
- currentFiles = r.toArray(new String[r.size()]);
- Arrays.sort(currentFiles);
+ Collections.sort(r);
+ currentFiles = Collections.unmodifiableList(r);
}
return currentFiles;
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/RegexFilePredicate.java b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/RegexFilePredicate.java
index 11856e4..e642860 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/query/change/RegexFilePredicate.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/query/change/RegexFilePredicate.java
@@ -24,7 +24,8 @@
import dk.brics.automaton.RegExp;
import dk.brics.automaton.RunAutomaton;
-import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
class RegexFilePredicate extends OperatorPredicate<ChangeData> {
private final Provider<ReviewDb> db;
@@ -67,7 +68,7 @@
@Override
public boolean match(ChangeData object) throws OrmException {
- String[] files = object.currentFilePaths(db, cache);
+ List<String> files = object.currentFilePaths(db, cache);
if (files != null) {
int begin, end;
@@ -76,7 +77,7 @@
end = find(files, prefixEnd);
} else {
begin = 0;
- end = files.length;
+ end = files.size();
}
if (prefixOnly) {
@@ -84,7 +85,7 @@
}
while (begin < end) {
- if (pattern.run(files[begin++])) {
+ if (pattern.run(files.get(begin++))) {
return true;
}
}
@@ -100,8 +101,8 @@
}
}
- private static int find(String[] files, String p) {
- int r = Arrays.binarySearch(files, p);
+ private static int find(List<String> files, String p) {
+ int r = Collections.binarySearch(files, p);
return r < 0 ? -(r + 1) : r;
}
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/RegexFilePredicateTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/RegexFilePredicateTest.java
index ce7b25c..1500272 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/query/change/RegexFilePredicateTest.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/query/change/RegexFilePredicateTest.java
@@ -76,7 +76,7 @@
private static ChangeData change(String... files) {
Arrays.sort(files);
ChangeData cd = new ChangeData(new Change.Id(1));
- cd.setCurrentFilePaths(files);
+ cd.setCurrentFilePaths(Arrays.asList(files));
return cd;
}
}