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);