Migrate GerritClientPatchSet to direct GerritApi When the change info is requested make sure that ListChangesOption.ALL_REVISIONS option is added so that all reviewisions are returne. Bug: Issue 336577745 Change-Id: Ibf53eeece60ab5062d3f8cb6f97161e7a63db49c
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientPatchSet.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientPatchSet.java index bbb8bfc..6caa8b7 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientPatchSet.java +++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientPatchSet.java
@@ -1,16 +1,16 @@ package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit; -import com.google.gson.JsonObject; +import java.util.Optional; + +import com.google.gerrit.extensions.client.ListChangesOption; +import com.google.gerrit.extensions.common.ChangeInfo; +import com.google.gerrit.server.util.ManualRequestContext; import com.googlesource.gerrit.plugins.chatgpt.config.Configuration; import com.googlesource.gerrit.plugins.chatgpt.data.ChangeSetDataHandler; -import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.UriResourceLocator; import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.data.ChangeSetData; import lombok.Getter; import lombok.extern.slf4j.Slf4j; -import java.net.URI; -import java.util.*; - @Slf4j public class GerritClientPatchSet extends GerritClientAccount { @Getter @@ -21,13 +21,21 @@ } public void retrieveRevisionBase(GerritChange change) { - URI uri = URI.create(config.getGerritAuthBaseUrl() - + UriResourceLocator.gerritPatchSetRevisionsUri(change.getFullChangeId())); - log.debug("Retrieve Revision URI: '{}'", uri); - try { - JsonObject reviews = forwardGetRequestReturnJsonObject(uri); - Set<String> revisions = reviews.get("revisions").getAsJsonObject().keySet(); - revisionBase = revisions.size() -1; + try (ManualRequestContext requestContext = config.openRequestContext()) { + ChangeInfo changeInfo = + config + .getGerritApi() + .changes() + .id( + change.getProjectName(), + change.getBranchNameKey().shortName(), + change.getChangeKey().get()) + .get(ListChangesOption.ALL_REVISIONS); + revisionBase = + Optional.ofNullable(changeInfo) + .map(info -> info.revisions) + .map(revisions -> revisions.size() - 1) + .orElse(-1); } catch (Exception e) { log.error("Could not retrieve revisions for PatchSet with fullChangeId: {}", change.getFullChangeId(), e);