Index change status in the secondary index
Change-Id: I4dd8a815c1886be4e955267b0d9d2e23d0e41a4b
This commit is contained in:
@@ -28,6 +28,7 @@ import com.google.gerrit.server.ApprovalsUtil;
|
||||
import com.google.gerrit.server.ChangeUtil;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.change.Abandon.Input;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.mail.AbandonedSender;
|
||||
import com.google.gerrit.server.mail.ReplyToChangeSender;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
@@ -48,6 +49,7 @@ public class Abandon implements RestModifyView<ChangeResource, Input> {
|
||||
private final AbandonedSender.Factory abandonedSenderFactory;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final ChangeJson json;
|
||||
private final ChangeIndexer indexer;
|
||||
|
||||
public static class Input {
|
||||
@DefaultInput
|
||||
@@ -58,11 +60,13 @@ public class Abandon implements RestModifyView<ChangeResource, Input> {
|
||||
Abandon(ChangeHooks hooks,
|
||||
AbandonedSender.Factory abandonedSenderFactory,
|
||||
Provider<ReviewDb> dbProvider,
|
||||
ChangeJson json) {
|
||||
ChangeJson json,
|
||||
ChangeIndexer indexer) {
|
||||
this.hooks = hooks;
|
||||
this.abandonedSenderFactory = abandonedSenderFactory;
|
||||
this.dbProvider = dbProvider;
|
||||
this.json = json;
|
||||
this.indexer = indexer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -107,6 +111,7 @@ public class Abandon implements RestModifyView<ChangeResource, Input> {
|
||||
db.rollback();
|
||||
}
|
||||
|
||||
indexer.index(change);
|
||||
try {
|
||||
ReplyToChangeSender cm = abandonedSenderFactory.create(change);
|
||||
cm.setFrom(caller.getAccountId());
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.google.gerrit.server.ApprovalsUtil;
|
||||
import com.google.gerrit.server.ChangeUtil;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.change.Restore.Input;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.mail.ReplyToChangeSender;
|
||||
import com.google.gerrit.server.mail.RestoredSender;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
@@ -48,6 +49,7 @@ public class Restore implements RestModifyView<ChangeResource, Input> {
|
||||
private final RestoredSender.Factory restoredSenderFactory;
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final ChangeJson json;
|
||||
private final ChangeIndexer indexer;
|
||||
|
||||
public static class Input {
|
||||
@DefaultInput
|
||||
@@ -58,11 +60,13 @@ public class Restore implements RestModifyView<ChangeResource, Input> {
|
||||
Restore(ChangeHooks hooks,
|
||||
RestoredSender.Factory restoredSenderFactory,
|
||||
Provider<ReviewDb> dbProvider,
|
||||
ChangeJson json) {
|
||||
ChangeJson json,
|
||||
ChangeIndexer indexer) {
|
||||
this.hooks = hooks;
|
||||
this.restoredSenderFactory = restoredSenderFactory;
|
||||
this.dbProvider = dbProvider;
|
||||
this.json = json;
|
||||
this.indexer = indexer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -98,6 +102,7 @@ public class Restore implements RestModifyView<ChangeResource, Input> {
|
||||
throw new ResourceConflictException("change is "
|
||||
+ status(db.changes().get(req.getChange().getId())));
|
||||
}
|
||||
indexer.index(change);
|
||||
message = newMessage(input, caller, change);
|
||||
db.changeMessages().insert(Collections.singleton(message));
|
||||
new ApprovalsUtil(db).syncChangeStatus(change);
|
||||
|
||||
@@ -36,6 +36,7 @@ import com.google.gerrit.server.ProjectUtil;
|
||||
import com.google.gerrit.server.change.Submit.Input;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.MergeQueue;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gwtorm.server.AtomicUpdate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
@@ -72,14 +73,17 @@ public class Submit implements RestModifyView<RevisionResource, Input> {
|
||||
private final Provider<ReviewDb> dbProvider;
|
||||
private final GitRepositoryManager repoManager;
|
||||
private final MergeQueue mergeQueue;
|
||||
private final ChangeIndexer indexer;
|
||||
|
||||
@Inject
|
||||
Submit(Provider<ReviewDb> dbProvider,
|
||||
GitRepositoryManager repoManager,
|
||||
MergeQueue mergeQueue) {
|
||||
MergeQueue mergeQueue,
|
||||
ChangeIndexer indexer) {
|
||||
this.dbProvider = dbProvider;
|
||||
this.repoManager = repoManager;
|
||||
this.mergeQueue = mergeQueue;
|
||||
this.indexer = indexer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -187,6 +191,7 @@ public class Submit implements RestModifyView<RevisionResource, Input> {
|
||||
} finally {
|
||||
db.rollback();
|
||||
}
|
||||
indexer.index(change);
|
||||
return change;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ import com.google.gerrit.server.ChangeUtil;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.account.AccountResolver;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.mail.CreateChangeSender;
|
||||
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
|
||||
import com.google.gerrit.server.mail.ReplacePatchSetSender;
|
||||
@@ -40,6 +41,7 @@ import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||
import com.google.gerrit.server.patch.PatchSetInfoNotAvailableException;
|
||||
import com.google.gerrit.server.project.ChangeControl;
|
||||
import com.google.gerrit.server.project.NoSuchChangeException;
|
||||
import com.google.gerrit.server.util.RequestScopePropagator;
|
||||
import com.google.gwtorm.server.AtomicUpdate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.inject.Inject;
|
||||
@@ -75,6 +77,8 @@ public class PublishDraft implements Callable<ReviewResult> {
|
||||
private final AccountResolver accountResolver;
|
||||
private final CreateChangeSender.Factory createChangeSenderFactory;
|
||||
private final ReplacePatchSetSender.Factory replacePatchSetFactory;
|
||||
private final ChangeIndexer indexer;
|
||||
private final RequestScopePropagator requestScopePropagator;
|
||||
|
||||
private final PatchSet.Id patchSetId;
|
||||
|
||||
@@ -87,6 +91,8 @@ public class PublishDraft implements Callable<ReviewResult> {
|
||||
final AccountResolver accountResolver,
|
||||
final CreateChangeSender.Factory createChangeSenderFactory,
|
||||
final ReplacePatchSetSender.Factory replacePatchSetFactory,
|
||||
final ChangeIndexer indexer,
|
||||
final RequestScopePropagator requestScopePropagator,
|
||||
@Assisted final PatchSet.Id patchSetId) {
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.db = db;
|
||||
@@ -97,6 +103,8 @@ public class PublishDraft implements Callable<ReviewResult> {
|
||||
this.accountResolver = accountResolver;
|
||||
this.createChangeSenderFactory = createChangeSenderFactory;
|
||||
this.replacePatchSetFactory = replacePatchSetFactory;
|
||||
this.indexer = indexer;
|
||||
this.requestScopePropagator = requestScopePropagator;
|
||||
|
||||
this.patchSetId = patchSetId;
|
||||
}
|
||||
@@ -146,6 +154,7 @@ public class PublishDraft implements Callable<ReviewResult> {
|
||||
});
|
||||
|
||||
if (!updatedPatchSet.isDraft() || updatedChange.getStatus() == Change.Status.NEW) {
|
||||
indexer.index(updatedChange, requestScopePropagator);
|
||||
hooks.doDraftPublishedHook(updatedChange, updatedPatchSet, db);
|
||||
|
||||
sendNotifications(control.getChange().getStatus() == Change.Status.DRAFT,
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||
import com.google.gerrit.server.git.GitRepositoryManager;
|
||||
import com.google.gerrit.server.git.MergeUtil;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.mail.RebasedPatchSetSender;
|
||||
import com.google.gerrit.server.mail.ReplacePatchSetSender;
|
||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||
@@ -75,6 +76,7 @@ public class RebaseChange {
|
||||
private final ChangeHookRunner hooks;
|
||||
private final MergeUtil.Factory mergeUtilFactory;
|
||||
private final ProjectCache projectCache;
|
||||
private final ChangeIndexer indexer;
|
||||
|
||||
@Inject
|
||||
RebaseChange(final ChangeControl.GenericFactory changeControlFactory,
|
||||
@@ -85,7 +87,8 @@ public class RebaseChange {
|
||||
final RebasedPatchSetSender.Factory rebasedPatchSetSenderFactory,
|
||||
final ChangeHookRunner hooks,
|
||||
final MergeUtil.Factory mergeUtilFactory,
|
||||
final ProjectCache projectCache) {
|
||||
final ProjectCache projectCache,
|
||||
final ChangeIndexer changeIndexer) {
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||
this.db = db;
|
||||
@@ -96,6 +99,7 @@ public class RebaseChange {
|
||||
this.hooks = hooks;
|
||||
this.mergeUtilFactory = mergeUtilFactory;
|
||||
this.projectCache = projectCache;
|
||||
this.indexer = changeIndexer;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -156,10 +160,10 @@ public class RebaseChange {
|
||||
uploader.newCommitterIdent(myIdent.getWhen(),
|
||||
myIdent.getTimeZone());
|
||||
|
||||
final PatchSet newPatchSet =
|
||||
rebase(git, rw, inserter, patchSetId, change, uploader.getAccountId(), baseCommit,
|
||||
mergeUtilFactory.create(
|
||||
changeControl.getProjectControl().getProjectState(), true), committerIdent);
|
||||
final PatchSet newPatchSet = rebase(git, rw, inserter, patchSetId, change,
|
||||
uploader.getAccountId(), baseCommit, mergeUtilFactory.create(
|
||||
changeControl.getProjectControl().getProjectState(), true),
|
||||
committerIdent, indexer);
|
||||
|
||||
final Set<Account.Id> oldReviewers = Sets.newHashSet();
|
||||
final Set<Account.Id> oldCC = Sets.newHashSet();
|
||||
@@ -301,6 +305,7 @@ public class RebaseChange {
|
||||
* @param uploader the user that creates the rebased patch set
|
||||
* @param baseCommit the commit that should be the new base
|
||||
* @param mergeUtil merge utilities for the destination project
|
||||
* @param indexer helper for indexing the change
|
||||
* @return the new patch set which is based on the given base commit
|
||||
* @throws NoSuchChangeException thrown if the change to which the patch set
|
||||
* belongs does not exist or is not visible to the user
|
||||
@@ -311,7 +316,8 @@ public class RebaseChange {
|
||||
public PatchSet rebase(final Repository git, final RevWalk revWalk,
|
||||
final ObjectInserter inserter, final PatchSet.Id patchSetId,
|
||||
final Change chg, final Account.Id uploader, final RevCommit baseCommit,
|
||||
final MergeUtil mergeUtil, PersonIdent committerIdent) throws NoSuchChangeException,
|
||||
final MergeUtil mergeUtil, PersonIdent committerIdent,
|
||||
final ChangeIndexer indexer) throws NoSuchChangeException,
|
||||
OrmException, IOException, InvalidChangeOperationException,
|
||||
PathConflictException {
|
||||
Change change = chg;
|
||||
@@ -383,6 +389,7 @@ public class RebaseChange {
|
||||
"Change %s was modified", change.getId()));
|
||||
}
|
||||
|
||||
indexer.index(change);
|
||||
ApprovalsUtil.copyLabels(db, projectCache.get(change.getProject())
|
||||
.getLabelTypes(), patchSetId, change.currentPatchSetId());
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
package com.google.gerrit.server.git;
|
||||
|
||||
import static com.google.gerrit.server.git.MergeUtil.getSubmitter;
|
||||
|
||||
import static java.util.concurrent.TimeUnit.DAYS;
|
||||
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
@@ -43,6 +44,7 @@ import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.account.AccountCache;
|
||||
import com.google.gerrit.server.config.AllProjectsName;
|
||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.mail.MergeFailSender;
|
||||
import com.google.gerrit.server.mail.MergedSender;
|
||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||
@@ -153,6 +155,7 @@ public class MergeOp {
|
||||
private final WorkQueue workQueue;
|
||||
private final RequestScopePropagator requestScopePropagator;
|
||||
private final AllProjectsName allProjectsName;
|
||||
private final ChangeIndexer indexer;
|
||||
|
||||
@Inject
|
||||
MergeOp(final GitRepositoryManager grm, final SchemaFactory<ReviewDb> sf,
|
||||
@@ -168,7 +171,8 @@ public class MergeOp {
|
||||
final SubmoduleOp.Factory subOpFactory,
|
||||
final WorkQueue workQueue,
|
||||
final RequestScopePropagator requestScopePropagator,
|
||||
final AllProjectsName allProjectsName) {
|
||||
final AllProjectsName allProjectsName,
|
||||
final ChangeIndexer indexer) {
|
||||
repoManager = grm;
|
||||
schemaFactory = sf;
|
||||
labelNormalizer = fs;
|
||||
@@ -188,6 +192,7 @@ public class MergeOp {
|
||||
this.workQueue = workQueue;
|
||||
this.requestScopePropagator = requestScopePropagator;
|
||||
this.allProjectsName = allProjectsName;
|
||||
this.indexer = indexer;
|
||||
destBranch = branch;
|
||||
toMerge = ArrayListMultimap.create();
|
||||
potentiallyStillSubmittable = new ArrayList<CodeReviewCommit>();
|
||||
@@ -758,6 +763,7 @@ public class MergeOp {
|
||||
} catch (OrmException err) {
|
||||
log.warn("Error updating change status for " + c.getId(), err);
|
||||
}
|
||||
indexer.index(c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ public class RebaseIfNecessary extends SubmitStrategy {
|
||||
rebaseChange.rebase(args.repo, args.rw, args.inserter,
|
||||
n.patchsetId, n.change,
|
||||
args.mergeUtil.getSubmitter(n.patchsetId).getAccountId(),
|
||||
newMergeTip, args.mergeUtil, committerIdent);
|
||||
newMergeTip, args.mergeUtil, committerIdent, args.indexer);
|
||||
List<PatchSetApproval> approvals = Lists.newArrayList();
|
||||
for (PatchSetApproval a : args.mergeUtil.getApprovalsForCommit(n)) {
|
||||
approvals.add(new PatchSetApproval(newPatchSet.getId(), a));
|
||||
|
||||
@@ -74,6 +74,7 @@ import com.google.gerrit.server.git.MultiProgressMonitor.Task;
|
||||
import com.google.gerrit.server.git.validators.CommitValidationException;
|
||||
import com.google.gerrit.server.git.validators.CommitValidationMessage;
|
||||
import com.google.gerrit.server.git.validators.CommitValidators;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.mail.CreateChangeSender;
|
||||
import com.google.gerrit.server.mail.MailUtil.MailRecipients;
|
||||
import com.google.gerrit.server.mail.MergedSender;
|
||||
@@ -263,6 +264,7 @@ public class ReceiveCommits {
|
||||
private final WorkQueue workQueue;
|
||||
private final ListeningExecutorService changeUpdateExector;
|
||||
private final RequestScopePropagator requestScopePropagator;
|
||||
private final ChangeIndexer indexer;
|
||||
private final SshInfo sshInfo;
|
||||
private final AllProjectsName allProjectsName;
|
||||
private final ReceiveConfig receiveConfig;
|
||||
@@ -323,6 +325,7 @@ public class ReceiveCommits {
|
||||
final WorkQueue workQueue,
|
||||
@ChangeUpdateExecutor ListeningExecutorService changeUpdateExector,
|
||||
final RequestScopePropagator requestScopePropagator,
|
||||
final ChangeIndexer indexer,
|
||||
final SshInfo sshInfo,
|
||||
final AllProjectsName allProjectsName,
|
||||
ReceiveConfig config,
|
||||
@@ -353,6 +356,7 @@ public class ReceiveCommits {
|
||||
this.workQueue = workQueue;
|
||||
this.changeUpdateExector = changeUpdateExector;
|
||||
this.requestScopePropagator = requestScopePropagator;
|
||||
this.indexer = indexer;
|
||||
this.sshInfo = sshInfo;
|
||||
this.allProjectsName = allProjectsName;
|
||||
this.receiveConfig = config;
|
||||
@@ -1905,6 +1909,7 @@ public class ReceiveCommits {
|
||||
if (cmd.getResult() == NOT_ATTEMPTED) {
|
||||
cmd.execute(rp);
|
||||
}
|
||||
indexer.index(change, requestScopePropagator);
|
||||
gitRefUpdated.fire(project.getNameKey(), newPatchSet.getRefName(),
|
||||
ObjectId.zeroId(), newCommit);
|
||||
hooks.doPatchsetCreatedHook(change, newPatchSet, db);
|
||||
@@ -2207,7 +2212,7 @@ public class ReceiveCommits {
|
||||
|
||||
private void markChangeMergedByPush(final ReviewDb db,
|
||||
final ReplaceRequest result) throws OrmException {
|
||||
final Change change = result.change;
|
||||
Change change = result.change;
|
||||
final String mergedIntoRef = result.mergedIntoRef;
|
||||
|
||||
change.setCurrentPatchSet(result.info);
|
||||
@@ -2235,7 +2240,8 @@ public class ReceiveCommits {
|
||||
|
||||
db.changeMessages().insert(Collections.singleton(msg));
|
||||
|
||||
db.changes().atomicUpdate(change.getId(), new AtomicUpdate<Change>() {
|
||||
change = db.changes().atomicUpdate(
|
||||
change.getId(), new AtomicUpdate<Change>() {
|
||||
@Override
|
||||
public Change update(Change change) {
|
||||
if (change.getStatus().isOpen()) {
|
||||
@@ -2246,6 +2252,7 @@ public class ReceiveCommits {
|
||||
return change;
|
||||
}
|
||||
});
|
||||
indexer.index(change, requestScopePropagator);
|
||||
}
|
||||
|
||||
private void sendMergedEmail(final ReplaceRequest result) {
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.google.gerrit.reviewdb.client.PatchSetApproval;
|
||||
import com.google.gerrit.reviewdb.client.Project.SubmitType;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
@@ -55,13 +56,15 @@ public abstract class SubmitStrategy {
|
||||
protected final Set<RevCommit> alreadyAccepted;
|
||||
protected final Branch.NameKey destBranch;
|
||||
protected final MergeUtil mergeUtil;
|
||||
protected final ChangeIndexer indexer;
|
||||
protected final MergeSorter mergeSorter;
|
||||
|
||||
Arguments(final IdentifiedUser.GenericFactory identifiedUserFactory,
|
||||
final PersonIdent myIdent, final ReviewDb db, final Repository repo,
|
||||
final RevWalk rw, final ObjectInserter inserter,
|
||||
final RevFlag canMergeFlag, final Set<RevCommit> alreadyAccepted,
|
||||
final Branch.NameKey destBranch, final MergeUtil mergeUtil) {
|
||||
final Branch.NameKey destBranch, final MergeUtil mergeUtil,
|
||||
final ChangeIndexer indexer) {
|
||||
this.identifiedUserFactory = identifiedUserFactory;
|
||||
this.myIdent = myIdent;
|
||||
this.db = db;
|
||||
@@ -73,6 +76,7 @@ public abstract class SubmitStrategy {
|
||||
this.alreadyAccepted = alreadyAccepted;
|
||||
this.destBranch = destBranch;
|
||||
this.mergeUtil = mergeUtil;
|
||||
this.indexer = indexer;
|
||||
this.mergeSorter = new MergeSorter(rw, alreadyAccepted, canMergeFlag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.changedetail.RebaseChange;
|
||||
import com.google.gerrit.server.config.CanonicalWebUrl;
|
||||
import com.google.gerrit.server.extensions.events.GitReferenceUpdated;
|
||||
import com.google.gerrit.server.index.ChangeIndexer;
|
||||
import com.google.gerrit.server.patch.PatchSetInfoFactory;
|
||||
import com.google.gerrit.server.project.NoSuchProjectException;
|
||||
import com.google.gerrit.server.project.ProjectCache;
|
||||
@@ -54,6 +55,7 @@ public class SubmitStrategyFactory {
|
||||
private final RebaseChange rebaseChange;
|
||||
private final ProjectCache projectCache;
|
||||
private final MergeUtil.Factory mergeUtilFactory;
|
||||
private final ChangeIndexer indexer;
|
||||
|
||||
@Inject
|
||||
SubmitStrategyFactory(
|
||||
@@ -63,7 +65,8 @@ public class SubmitStrategyFactory {
|
||||
@CanonicalWebUrl @Nullable final Provider<String> urlProvider,
|
||||
final GitReferenceUpdated gitRefUpdated, final RebaseChange rebaseChange,
|
||||
final ProjectCache projectCache,
|
||||
final MergeUtil.Factory mergeUtilFactory) {
|
||||
final MergeUtil.Factory mergeUtilFactory,
|
||||
final ChangeIndexer indexer) {
|
||||
this.identifiedUserFactory = identifiedUserFactory;
|
||||
this.myIdent = myIdent;
|
||||
this.patchSetInfoFactory = patchSetInfoFactory;
|
||||
@@ -71,6 +74,7 @@ public class SubmitStrategyFactory {
|
||||
this.rebaseChange = rebaseChange;
|
||||
this.projectCache = projectCache;
|
||||
this.mergeUtilFactory = mergeUtilFactory;
|
||||
this.indexer = indexer;
|
||||
}
|
||||
|
||||
public SubmitStrategy create(final SubmitType submitType, final ReviewDb db,
|
||||
@@ -82,7 +86,7 @@ public class SubmitStrategyFactory {
|
||||
final SubmitStrategy.Arguments args =
|
||||
new SubmitStrategy.Arguments(identifiedUserFactory, myIdent, db, repo,
|
||||
rw, inserter, canMergeFlag, alreadyAccepted, destBranch,
|
||||
mergeUtilFactory.create(project));
|
||||
mergeUtilFactory.create(project), indexer);
|
||||
switch (submitType) {
|
||||
case CHERRY_PICK:
|
||||
return new CherryPick(args, patchSetInfoFactory, gitRefUpdated);
|
||||
|
||||
@@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gerrit.server.query.change.ChangeQueryBuilder;
|
||||
import com.google.gerrit.server.query.change.ChangeStatusPredicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
@@ -49,6 +50,18 @@ public class ChangeField {
|
||||
}
|
||||
};
|
||||
|
||||
/** Change status string, in the same format as {@code status:}. */
|
||||
public static final FieldDef<ChangeData, String> STATUS =
|
||||
new FieldDef.Single<ChangeData, String>(ChangeQueryBuilder.FIELD_STATUS,
|
||||
FieldType.EXACT, false) {
|
||||
@Override
|
||||
public String get(ChangeData input, FillArgs args)
|
||||
throws OrmException {
|
||||
return ChangeStatusPredicate.VALUES.get(
|
||||
input.change(args.db).getStatus());
|
||||
}
|
||||
};
|
||||
|
||||
/** List of filenames modified in the current patch set. */
|
||||
public static final FieldDef<ChangeData, Iterable<String>> FILE =
|
||||
new FieldDef.Repeatable<ChangeData, String>(
|
||||
|
||||
@@ -19,7 +19,8 @@ import static com.google.common.base.Preconditions.checkArgument;
|
||||
import com.google.common.collect.ImmutableBiMap;
|
||||
import com.google.gerrit.reviewdb.client.Change;
|
||||
import com.google.gerrit.reviewdb.server.ReviewDb;
|
||||
import com.google.gerrit.server.query.OperatorPredicate;
|
||||
import com.google.gerrit.server.index.ChangeField;
|
||||
import com.google.gerrit.server.index.IndexPredicate;
|
||||
import com.google.gerrit.server.query.Predicate;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.google.inject.Provider;
|
||||
@@ -34,8 +35,8 @@ import java.util.List;
|
||||
* status:} but may also be {@code is:} to help do-what-i-meanery for end-users
|
||||
* searching for changes. Either operator name has the same meaning.
|
||||
*/
|
||||
final class ChangeStatusPredicate extends OperatorPredicate<ChangeData> {
|
||||
private static final ImmutableBiMap<Change.Status, String> VALUES;
|
||||
public final class ChangeStatusPredicate extends IndexPredicate<ChangeData> {
|
||||
public static final ImmutableBiMap<Change.Status, String> VALUES;
|
||||
|
||||
static {
|
||||
ImmutableBiMap.Builder<Change.Status, String> values =
|
||||
@@ -70,14 +71,14 @@ final class ChangeStatusPredicate extends OperatorPredicate<ChangeData> {
|
||||
private final Change.Status status;
|
||||
|
||||
ChangeStatusPredicate(Provider<ReviewDb> dbProvider, String value) {
|
||||
super(ChangeQueryBuilder.FIELD_STATUS, value);
|
||||
super(ChangeField.STATUS, value);
|
||||
this.dbProvider = dbProvider;
|
||||
status = VALUES.inverse().get(value);
|
||||
checkArgument(status != null, "invalid change status: %s", value);
|
||||
}
|
||||
|
||||
ChangeStatusPredicate(Provider<ReviewDb> dbProvider, Change.Status status) {
|
||||
super(ChangeQueryBuilder.FIELD_STATUS, VALUES.get(status));
|
||||
super(ChangeField.STATUS, VALUES.get(status));
|
||||
this.dbProvider = dbProvider;
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user