Merge branch 'stable-2.9' * stable-2.9: Recheck change mergeability status on restore Add missing documentation of changes REST API index endpoint Update plugin owned capabilities documentation Populate CodeReviewCommit before passing to MergeValidators Change-Id: Ia65a58b137f29b4c21b4c8cc44fb3b12033fc62c
diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt index fdec110..eb378f7 100644 --- a/Documentation/dev-plugins.txt +++ b/Documentation/dev-plugins.txt
@@ -853,7 +853,7 @@ == Plugin Owned Capabilities Plugins may provide their own capabilities and restrict usage of SSH -commands to the users who are granted those capabilities. +commands or `UiAction` to the users who are granted those capabilities. Plugins define the capabilities by overriding the `CapabilityDefinition` abstract class: @@ -868,7 +868,7 @@ } ---- -If no Guice modules are declared in the manifest, UI actions may +If no Guice modules are declared in the manifest, capability may use auto-registration by providing an `@Export` annotation: [source,java]
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt index 24c1012..407ec7b 100644 --- a/Documentation/rest-api-changes.txt +++ b/Documentation/rest-api-changes.txt
@@ -1119,6 +1119,25 @@ } ---- +[[index-change]] +=== Index Change +-- +'POST /changes/link:#change-id[\{change-id\}]/index' +-- + +Adds or updates the change in the secondary index. + +.Request +---- + POST /changes/myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940/index HTTP/1.0 +---- + +.Response +---- + HTTP/1.1 204 No Content +---- + + [[reviewer-endpoints]] == Reviewer Endpoints
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java index 9055036..083de08 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/Restore.java
@@ -29,7 +29,6 @@ import com.google.gerrit.server.ChangeUtil; import com.google.gerrit.server.IdentifiedUser; import com.google.gerrit.server.change.ChangeJson.ChangeInfo; -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; @@ -54,19 +53,19 @@ private final RestoredSender.Factory restoredSenderFactory; private final Provider<ReviewDb> dbProvider; private final ChangeJson json; - private final ChangeIndexer indexer; + private final MergeabilityChecker mergeabilityChecker; @Inject Restore(ChangeHooks hooks, RestoredSender.Factory restoredSenderFactory, Provider<ReviewDb> dbProvider, ChangeJson json, - ChangeIndexer indexer) { + MergeabilityChecker mergeabilityChecker) { this.hooks = hooks; this.restoredSenderFactory = restoredSenderFactory; this.dbProvider = dbProvider; this.json = json; - this.indexer = indexer; + this.mergeabilityChecker = mergeabilityChecker; } @Override @@ -110,8 +109,11 @@ db.rollback(); } - CheckedFuture<?, IOException> indexFuture = - indexer.indexAsync(change.getId()); + CheckedFuture<?, IOException> f = mergeabilityChecker.newCheck() + .addChange(change) + .reindex() + .runAsync(); + try { ReplyToChangeSender cm = restoredSenderFactory.create(change); cm.setFrom(caller.getAccountId()); @@ -126,7 +128,7 @@ Strings.emptyToNull(input.message), dbProvider.get()); ChangeInfo result = json.format(change); - indexFuture.checkedGet(); + f.checkedGet(); return result; }
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java index 4324d1a..74056ab 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
@@ -520,6 +520,15 @@ continue; } + try { + commit.setControl(changeControlFactory.controlFor(chg, + identifiedUserFactory.create(chg.getOwner()))); + } catch (NoSuchChangeException e) { + throw new MergeException("Failed to validate changes", e); + } + commit.setPatchsetId(ps.getId()); + commit.originalOrder = commitOrder++; + MergeValidators mergeValidators = mergeValidatorsFactory.create(); try { mergeValidators.validatePreMerge(repo, commit, destProject, destBranch, ps.getId()); @@ -529,14 +538,6 @@ continue; } - try { - commit.setControl(changeControlFactory.controlFor(chg, - identifiedUserFactory.create(chg.getOwner()))); - } catch (NoSuchChangeException e) { - throw new MergeException("Failed to validate changes", e); - } - commit.setPatchsetId(ps.getId()); - commit.originalOrder = commitOrder++; commits.put(changeId, commit); if (branchTip != null) {