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.gerrit.common.data.Permission.isPermission;
 | 
			
		||||
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.Joiner;
 | 
			
		||||
@@ -70,6 +71,7 @@ import java.util.List;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Map.Entry;
 | 
			
		||||
import java.util.Objects;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
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) {
 | 
			
		||||
    for (NotifyConfig nc : sort(notifySections.values())) {
 | 
			
		||||
      List<String> email = new ArrayList<>();
 | 
			
		||||
      for (GroupReference gr : nc.getGroups()) {
 | 
			
		||||
        if (gr.getUUID() != null) {
 | 
			
		||||
          keepGroups.add(gr.getUUID());
 | 
			
		||||
        }
 | 
			
		||||
        email.add(new PermissionRule(gr).asString(false));
 | 
			
		||||
      }
 | 
			
		||||
      Collections.sort(email);
 | 
			
		||||
      nc.getGroups()
 | 
			
		||||
          .stream()
 | 
			
		||||
          .map(gr -> gr.getUUID())
 | 
			
		||||
          .filter(Objects::nonNull)
 | 
			
		||||
          .forEach(keepGroups::add);
 | 
			
		||||
      List<String> email =
 | 
			
		||||
          nc.getGroups()
 | 
			
		||||
              .stream()
 | 
			
		||||
              .map(gr -> new PermissionRule(gr).asString(false))
 | 
			
		||||
              .sorted()
 | 
			
		||||
              .collect(toList());
 | 
			
		||||
 | 
			
		||||
      List<String> addrs = new ArrayList<>();
 | 
			
		||||
      for (Address addr : nc.getAddresses()) {
 | 
			
		||||
        addrs.add(addr.toString());
 | 
			
		||||
      }
 | 
			
		||||
      Collections.sort(addrs);
 | 
			
		||||
      email.addAll(addrs);
 | 
			
		||||
      // Separate stream operation so that emails list contains 2 sorted sub-lists.
 | 
			
		||||
      nc.getAddresses().stream().map(Address::toString).sorted().forEach(email::add);
 | 
			
		||||
 | 
			
		||||
      set(rc, NOTIFY, nc.getName(), KEY_HEADER, nc.getHeader(), NotifyConfig.Header.BCC);
 | 
			
		||||
      if (email.isEmpty()) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user