Merge "Remove old RPC to remove groups from a group"

This commit is contained in:
Shawn Pearce
2013-01-31 01:58:04 +00:00
committed by Gerrit Code Review
2 changed files with 1 additions and 70 deletions

View File

@@ -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);
}

View File

@@ -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 {