Delete unused RemoveReviewer
Change-Id: I457afe4bb95ba9cbc8d959dead0519a5f64ee2f8
This commit is contained in:
@@ -21,7 +21,6 @@ import com.google.gerrit.server.RequestCleanup;
|
|||||||
import com.google.gerrit.server.git.BanCommit;
|
import com.google.gerrit.server.git.BanCommit;
|
||||||
import com.google.gerrit.server.git.MergeOp;
|
import com.google.gerrit.server.git.MergeOp;
|
||||||
import com.google.gerrit.server.git.SubmoduleOp;
|
import com.google.gerrit.server.git.SubmoduleOp;
|
||||||
import com.google.gerrit.server.patch.RemoveReviewer;
|
|
||||||
import com.google.gerrit.server.project.ChangeControl;
|
import com.google.gerrit.server.project.ChangeControl;
|
||||||
import com.google.gerrit.server.project.PerRequestProjectControlCache;
|
import com.google.gerrit.server.project.PerRequestProjectControlCache;
|
||||||
import com.google.gerrit.server.project.ProjectControl;
|
import com.google.gerrit.server.project.ProjectControl;
|
||||||
@@ -46,7 +45,6 @@ public class GerritRequestModule extends FactoryModule {
|
|||||||
// Not really per-request, but dammit, I don't know where else to
|
// Not really per-request, but dammit, I don't know where else to
|
||||||
// easily park this stuff.
|
// easily park this stuff.
|
||||||
//
|
//
|
||||||
factory(RemoveReviewer.Factory.class);
|
|
||||||
factory(SuggestParentCandidates.Factory.class);
|
factory(SuggestParentCandidates.Factory.class);
|
||||||
factory(BanCommit.Factory.class);
|
factory(BanCommit.Factory.class);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,130 +0,0 @@
|
|||||||
// Copyright (C) 2009 The Android Open Source Project
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
|
|
||||||
package com.google.gerrit.server.patch;
|
|
||||||
|
|
||||||
import com.google.gerrit.common.data.ReviewerResult;
|
|
||||||
import com.google.gerrit.reviewdb.client.Account;
|
|
||||||
import com.google.gerrit.reviewdb.client.Change;
|
|
||||||
import com.google.gerrit.reviewdb.client.PatchSetApproval;
|
|
||||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
|
||||||
import com.google.gerrit.server.account.AccountCache;
|
|
||||||
import com.google.gerrit.server.account.AccountState;
|
|
||||||
import com.google.gerrit.server.project.ChangeControl;
|
|
||||||
import com.google.gwtorm.server.OrmException;
|
|
||||||
import com.google.inject.Inject;
|
|
||||||
import com.google.inject.assistedinject.Assisted;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
|
|
||||||
public class RemoveReviewer implements Callable<ReviewerResult> {
|
|
||||||
private static final Logger log =
|
|
||||||
LoggerFactory.getLogger(RemoveReviewer.class);
|
|
||||||
|
|
||||||
public interface Factory {
|
|
||||||
RemoveReviewer create(Change.Id changeId, Set<Account.Id> reviewerId);
|
|
||||||
}
|
|
||||||
|
|
||||||
private final ChangeControl.Factory changeControlFactory;
|
|
||||||
private final ReviewDb db;
|
|
||||||
private final AccountCache accountCache;
|
|
||||||
private final Change.Id changeId;
|
|
||||||
private final Set<Account.Id> ids;
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
RemoveReviewer(ReviewDb db, ChangeControl.Factory changeControlFactory,
|
|
||||||
AccountCache accountCache, @Assisted Change.Id changeId,
|
|
||||||
@Assisted Set<Account.Id> ids) {
|
|
||||||
this.db = db;
|
|
||||||
this.changeControlFactory = changeControlFactory;
|
|
||||||
this.accountCache = accountCache;
|
|
||||||
this.changeId = changeId;
|
|
||||||
this.ids = ids;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ReviewerResult call() throws Exception {
|
|
||||||
ReviewerResult result = new ReviewerResult();
|
|
||||||
ChangeControl ctl = changeControlFactory.validateFor(changeId);
|
|
||||||
Set<Account.Id> rejected = new HashSet<Account.Id>();
|
|
||||||
|
|
||||||
List<PatchSetApproval> current = db.patchSetApprovals().byChange(changeId).toList();
|
|
||||||
for (PatchSetApproval psa : current) {
|
|
||||||
Account.Id who = psa.getAccountId();
|
|
||||||
if (ids.contains(who) && !ctl.canRemoveReviewer(psa) && rejected.add(who)) {
|
|
||||||
result.addError(new ReviewerResult.Error(
|
|
||||||
ReviewerResult.Error.Type.REMOVE_NOT_PERMITTED,
|
|
||||||
formatUser(who)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<PatchSetApproval> toDelete = new ArrayList<PatchSetApproval>();
|
|
||||||
for (PatchSetApproval psa : current) {
|
|
||||||
Account.Id who = psa.getAccountId();
|
|
||||||
if (ids.contains(who) && !rejected.contains(who)) {
|
|
||||||
toDelete.add(psa);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
db.patchSetApprovals().delete(toDelete);
|
|
||||||
} catch (OrmException err) {
|
|
||||||
log.warn("Cannot remove reviewers from change "+changeId, err);
|
|
||||||
Set<Account.Id> failed = new HashSet<Account.Id>();
|
|
||||||
for (PatchSetApproval psa : toDelete) {
|
|
||||||
failed.add(psa.getAccountId());
|
|
||||||
}
|
|
||||||
for (Account.Id who : failed) {
|
|
||||||
result.addError(new ReviewerResult.Error(
|
|
||||||
ReviewerResult.Error.Type.COULD_NOT_REMOVE,
|
|
||||||
formatUser(who)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
private String formatUser(Account.Id who) {
|
|
||||||
AccountState state = accountCache.get(who);
|
|
||||||
if (state != null) {
|
|
||||||
return formatUser(state.getAccount(), who);
|
|
||||||
} else {
|
|
||||||
return who.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static String formatUser(Account a, Object fallback) {
|
|
||||||
if (a.getFullName() != null && !a.getFullName().isEmpty()) {
|
|
||||||
return a.getFullName();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (a.getPreferredEmail() != null && !a.getPreferredEmail().isEmpty()) {
|
|
||||||
return a.getPreferredEmail();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (a.getUserName() != null && a.getUserName().isEmpty()) {
|
|
||||||
return a.getUserName();
|
|
||||||
}
|
|
||||||
|
|
||||||
return fallback.toString();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user