ProjectConfig: Use streams for saveNotifySections
Loop over getGroups() twice, since each loop does something different; combining them was a premature optimization that made the code subtler. Change-Id: Ic474ec59cf880ba009aa4a06738aeed4b2dab4bd
This commit is contained in:
@@ -17,6 +17,7 @@ package com.google.gerrit.server.project;
|
|||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static com.google.gerrit.common.data.Permission.isPermission;
|
import static com.google.gerrit.common.data.Permission.isPermission;
|
||||||
import static com.google.gerrit.reviewdb.client.Project.DEFAULT_SUBMIT_TYPE;
|
import static com.google.gerrit.reviewdb.client.Project.DEFAULT_SUBMIT_TYPE;
|
||||||
|
import static java.util.stream.Collectors.toList;
|
||||||
|
|
||||||
import com.google.common.base.CharMatcher;
|
import com.google.common.base.CharMatcher;
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
@@ -70,6 +71,7 @@ import java.util.List;
|
|||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -1162,21 +1164,20 @@ public class ProjectConfig extends VersionedMetaData implements ValidationError.
|
|||||||
|
|
||||||
private void saveNotifySections(Config rc, Set<AccountGroup.UUID> keepGroups) {
|
private void saveNotifySections(Config rc, Set<AccountGroup.UUID> keepGroups) {
|
||||||
for (NotifyConfig nc : sort(notifySections.values())) {
|
for (NotifyConfig nc : sort(notifySections.values())) {
|
||||||
List<String> email = new ArrayList<>();
|
nc.getGroups()
|
||||||
for (GroupReference gr : nc.getGroups()) {
|
.stream()
|
||||||
if (gr.getUUID() != null) {
|
.map(gr -> gr.getUUID())
|
||||||
keepGroups.add(gr.getUUID());
|
.filter(Objects::nonNull)
|
||||||
}
|
.forEach(keepGroups::add);
|
||||||
email.add(new PermissionRule(gr).asString(false));
|
List<String> email =
|
||||||
}
|
nc.getGroups()
|
||||||
Collections.sort(email);
|
.stream()
|
||||||
|
.map(gr -> new PermissionRule(gr).asString(false))
|
||||||
|
.sorted()
|
||||||
|
.collect(toList());
|
||||||
|
|
||||||
List<String> addrs = new ArrayList<>();
|
// Separate stream operation so that emails list contains 2 sorted sub-lists.
|
||||||
for (Address addr : nc.getAddresses()) {
|
nc.getAddresses().stream().map(Address::toString).sorted().forEach(email::add);
|
||||||
addrs.add(addr.toString());
|
|
||||||
}
|
|
||||||
Collections.sort(addrs);
|
|
||||||
email.addAll(addrs);
|
|
||||||
|
|
||||||
set(rc, NOTIFY, nc.getName(), KEY_HEADER, nc.getHeader(), NotifyConfig.Header.BCC);
|
set(rc, NOTIFY, nc.getName(), KEY_HEADER, nc.getHeader(), NotifyConfig.Header.BCC);
|
||||||
if (email.isEmpty()) {
|
if (email.isEmpty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user