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