diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt index fdec110575..eb378f7c7d 100644 --- a/Documentation/dev-plugins.txt +++ b/Documentation/dev-plugins.txt @@ -853,7 +853,7 @@ public class MyListener implements GitReferenceUpdatedListener { == 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 @@ public class PrintHelloCapability extends CapabilityDefinition { } ---- -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 24c1012948..407ec7bf71 100644 --- a/Documentation/rest-api-changes.txt +++ b/Documentation/rest-api-changes.txt @@ -1119,6 +1119,25 @@ an link:#included-in-info[IncludedInInfo] entity is returned. } ---- +[[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 9055036210..083de08af1 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.reviewdb.server.ReviewDb; 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 @@ public class Restore implements RestModifyView, private final RestoredSender.Factory restoredSenderFactory; private final Provider dbProvider; private final ChangeJson json; - private final ChangeIndexer indexer; + private final MergeabilityChecker mergeabilityChecker; @Inject Restore(ChangeHooks hooks, RestoredSender.Factory restoredSenderFactory, Provider 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 @@ public class Restore implements RestModifyView, db.rollback(); } - CheckedFuture indexFuture = - indexer.indexAsync(change.getId()); + CheckedFuture f = mergeabilityChecker.newCheck() + .addChange(change) + .reindex() + .runAsync(); + try { ReplyToChangeSender cm = restoredSenderFactory.create(change); cm.setFrom(caller.getAccountId()); @@ -126,7 +128,7 @@ public class Restore implements RestModifyView, 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 4324d1a219..74056ab271 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 @@ public class MergeOp { 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 @@ public class MergeOp { 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) {