InternalGroupUpdate: Use named types for modification functions

This saves significant boilerplate in callers that need to store/return
values of these types. There are none yet; all callers use lambdas, so
don't need to be converted.

Change-Id: Ieae57be795a521a22353efc67e059774b823c7d9
This commit is contained in:
Dave Borowitz
2017-11-10 13:49:30 -05:00
parent 7a700abf35
commit eda010a7eb

View File

@@ -20,11 +20,20 @@ import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.AccountGroup;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
// TODO(aliceks): Add Javadoc descriptions to this file.
@AutoValue
public abstract class InternalGroupUpdate {
@FunctionalInterface
public interface MemberModification {
Set<Account.Id> apply(ImmutableSet<Account.Id> in);
}
@FunctionalInterface
public interface SubgroupModification {
Set<AccountGroup.UUID> apply(ImmutableSet<AccountGroup.UUID> in);
}
public abstract Optional<AccountGroup.NameKey> getName();
// TODO(aliceks): Mention empty string (not null!) -> unset value in Javadoc.
@@ -34,16 +43,14 @@ public abstract class InternalGroupUpdate {
public abstract Optional<Boolean> getVisibleToAll();
public abstract Function<ImmutableSet<Account.Id>, ? extends Set<Account.Id>>
getMemberModification();
public abstract MemberModification getMemberModification();
public abstract Function<ImmutableSet<AccountGroup.UUID>, ? extends Set<AccountGroup.UUID>>
getSubgroupModification();
public abstract SubgroupModification getSubgroupModification();
public static Builder builder() {
return new AutoValue_InternalGroupUpdate.Builder()
.setMemberModification(Function.identity())
.setSubgroupModification(Function.identity());
.setMemberModification(in -> in)
.setSubgroupModification(in -> in);
}
@AutoValue.Builder
@@ -56,12 +63,9 @@ public abstract class InternalGroupUpdate {
public abstract Builder setVisibleToAll(boolean visibleToAll);
public abstract Builder setMemberModification(
Function<ImmutableSet<Account.Id>, ? extends Set<Account.Id>> memberModification);
public abstract Builder setMemberModification(MemberModification memberModification);
public abstract Builder setSubgroupModification(
Function<ImmutableSet<AccountGroup.UUID>, ? extends Set<AccountGroup.UUID>>
subgroupModification);
public abstract Builder setSubgroupModification(SubgroupModification subgroupModification);
public abstract InternalGroupUpdate build();
}