Merge "Remove old RPC to remove groups from a group"
This commit is contained in:
@@ -17,14 +17,11 @@ package com.google.gerrit.common.data;
|
||||
import com.google.gerrit.common.audit.Audit;
|
||||
import com.google.gerrit.common.auth.SignInRequired;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuid;
|
||||
import com.google.gwtjsonrpc.common.AsyncCallback;
|
||||
import com.google.gwtjsonrpc.common.RemoteJsonService;
|
||||
import com.google.gwtjsonrpc.common.RpcImpl;
|
||||
import com.google.gwtjsonrpc.common.VoidResult;
|
||||
import com.google.gwtjsonrpc.common.RpcImpl.Version;
|
||||
|
||||
import java.util.Set;
|
||||
import com.google.gwtjsonrpc.common.VoidResult;
|
||||
|
||||
@RpcImpl(version = Version.V2_0)
|
||||
public interface GroupAdminService extends RemoteJsonService {
|
||||
@@ -52,9 +49,4 @@ public interface GroupAdminService extends RemoteJsonService {
|
||||
@SignInRequired
|
||||
void addGroupInclude(AccountGroup.Id groupId, AccountGroup.UUID incGroupUUID,
|
||||
String incGroupName, AsyncCallback<GroupDetail> callback);
|
||||
|
||||
@Audit
|
||||
@SignInRequired
|
||||
void deleteGroupIncludes(AccountGroup.Id groupId,
|
||||
Set<AccountGroupIncludeByUuid.Key> keys, AsyncCallback<VoidResult> callback);
|
||||
}
|
||||
|
@@ -21,7 +21,6 @@ import com.google.gerrit.common.errors.NameAlreadyUsedException;
|
||||
import com.google.gerrit.common.errors.NoSuchEntityException;
|
||||
import com.google.gerrit.common.errors.NoSuchGroupException;
|
||||
import com.google.gerrit.httpd.rpc.BaseServiceImplementation;
|
||||
import com.google.gerrit.reviewdb.client.Account;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroup;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuid;
|
||||
import com.google.gerrit.reviewdb.client.AccountGroupIncludeByUuidAudit;
|
||||
@@ -37,8 +36,6 @@ import com.google.inject.Inject;
|
||||
import com.google.inject.Provider;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
GroupAdminService {
|
||||
@@ -147,64 +144,6 @@ class GroupAdminServiceImpl extends BaseServiceImplementation implements
|
||||
});
|
||||
}
|
||||
|
||||
public void deleteGroupIncludes(final AccountGroup.Id groupId,
|
||||
final Set<AccountGroupIncludeByUuid.Key> keys,
|
||||
final AsyncCallback<VoidResult> callback) {
|
||||
run(callback, new Action<VoidResult>() {
|
||||
public VoidResult run(final ReviewDb db) throws OrmException,
|
||||
NoSuchGroupException, Failure {
|
||||
final GroupControl control = groupControlFactory.validateFor(groupId);
|
||||
AccountGroup group = groupCache.get(groupId);
|
||||
if (group.getType() != AccountGroup.Type.INTERNAL) {
|
||||
throw new Failure(new NameAlreadyUsedException());
|
||||
}
|
||||
|
||||
for (final AccountGroupIncludeByUuid.Key k : keys) {
|
||||
if (!groupId.equals(k.getGroupId())) {
|
||||
throw new Failure(new NoSuchEntityException());
|
||||
}
|
||||
}
|
||||
|
||||
final Account.Id me = getAccountId();
|
||||
final Set<AccountGroup.UUID> groupsToEvict = new HashSet<AccountGroup.UUID>();
|
||||
for (final AccountGroupIncludeByUuid.Key k : keys) {
|
||||
final AccountGroupIncludeByUuid m =
|
||||
db.accountGroupIncludesByUuid().get(k);
|
||||
if (m != null) {
|
||||
if (!control.canRemoveGroup(m.getIncludeUUID())) {
|
||||
throw new Failure(new NoSuchEntityException());
|
||||
}
|
||||
|
||||
AccountGroupIncludeByUuidAudit audit = null;
|
||||
for (AccountGroupIncludeByUuidAudit a : db
|
||||
.accountGroupIncludesByUuidAudit().byGroupInclude(
|
||||
m.getGroupId(), m.getIncludeUUID())) {
|
||||
if (a.isActive()) {
|
||||
audit = a;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (audit != null) {
|
||||
audit.removed(me);
|
||||
db.accountGroupIncludesByUuidAudit().update(
|
||||
Collections.singleton(audit));
|
||||
}
|
||||
db.accountGroupIncludesByUuid().delete(Collections.singleton(m));
|
||||
groupsToEvict.add(k.getIncludeUUID());
|
||||
}
|
||||
}
|
||||
for (AccountGroup.UUID uuid : groupsToEvict) {
|
||||
groupIncludeCache.evictMemberIn(uuid);
|
||||
}
|
||||
if (!groupsToEvict.isEmpty()) {
|
||||
groupIncludeCache.evictMembersOf(group.getGroupUUID());
|
||||
}
|
||||
return VoidResult.INSTANCE;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void assertAmGroupOwner(final ReviewDb db, final AccountGroup group)
|
||||
throws Failure {
|
||||
try {
|
||||
|
Reference in New Issue
Block a user