Make GerritClient injectable
This also fixes `ChatGptReviewStatelessTest.gptMentionedInComment`, as
we don't relay on the manually cached `GerritClient` but let Guice
manage that instance for us.
Change-Id: I6d8ec9abb516b18629c5e5d3f3fd0b50a726504a
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java
index fafe16c..229d396 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java
@@ -67,7 +67,6 @@
@VisibleForTesting
public Result execute() {
- gerritClient.initialize(config, change);
Integer gptAccountId = gerritClient.getNotNullAccountId(change, config.getGerritUserName());
ChangeSetData changeSetData = ChangeSetDataHandler.getNewInstance(config, change, gptAccountId);
GitRepoFilesHandler.createNewInstance(gitRepoFiles);
@@ -131,7 +130,6 @@
private void destroy(GerritChange change) {
log.info("destroying {}",change);
- gerritClient.destroy(change);
ChangeSetDataHandler.removeInstance(change);
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java
index 166cca8..dedd320 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java
@@ -1,8 +1,7 @@
package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit;
+import com.google.inject.Inject;
import com.google.inject.Singleton;
-import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
-import com.googlesource.gerrit.plugins.chatgpt.data.singleton.ChangeSetSingletonManager;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.patch.diff.FileDiffProcessed;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.gerrit.GerritPermittedVotingRange;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.data.GerritClientData;
@@ -13,20 +12,14 @@
@Slf4j
@Singleton
public class GerritClient {
- private static final String DEFAULT_CHANGE_ID = "DEFAULT_CHANGE_ID";
- private static GerritClientFacade gerritClientFacade;
+ private final GerritClientFacade gerritClientFacade;
- public void initialize(Configuration config) {
- initialize(config, new GerritChange(DEFAULT_CHANGE_ID));
- }
-
- public void initialize(Configuration config, GerritChange change) {
- log.debug("Initializing client instances for change: {}", change.getFullChangeId());
- gerritClientFacade = ChangeSetSingletonManager.getInstance(GerritClientFacade.class, change, config);
+ @Inject
+ public GerritClient(GerritClientFacade gerritClientFacade) {
+ this.gerritClientFacade = gerritClientFacade;
}
public GerritPermittedVotingRange getPermittedVotingRange(GerritChange change) {
- updateGerritClientFacade(change);
return gerritClientFacade.getPermittedVotingRange(change);
}
@@ -35,7 +28,6 @@
}
public String getPatchSet(GerritChange change) throws Exception {
- updateGerritClientFacade(change);
return gerritClientFacade.getPatchSet(change);
}
@@ -48,42 +40,26 @@
}
public boolean isWorkInProgress(GerritChange change) {
- updateGerritClientFacade(change);
return gerritClientFacade.isWorkInProgress(change);
}
public HashMap<String, FileDiffProcessed> getFileDiffsProcessed(GerritChange change) {
- updateGerritClientFacade(change);
return gerritClientFacade.getFileDiffsProcessed();
}
public Integer getNotNullAccountId(GerritChange change, String authorUsername) {
- updateGerritClientFacade(change);
return gerritClientFacade.getNotNullAccountId(authorUsername);
}
public boolean retrieveLastComments(GerritChange change) {
- updateGerritClientFacade(change);
return gerritClientFacade.retrieveLastComments(change);
}
public void retrievePatchSetInfo(GerritChange change) {
- updateGerritClientFacade(change);
gerritClientFacade.retrievePatchSetInfo(change);
}
public GerritClientData getClientData(GerritChange change) {
- updateGerritClientFacade(change);
return gerritClientFacade.getClientData(change);
}
-
- public void destroy(GerritChange change) {
- log.debug("Destroying GerritClientFacade instance for change: {}", change.getFullChangeId());
- ChangeSetSingletonManager.removeInstance(GerritClientFacade.class, change);
- }
-
- private void updateGerritClientFacade(GerritChange change) {
- gerritClientFacade = ChangeSetSingletonManager.getInstance(GerritClientFacade.class, change);
- }
-
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java
index 5e872d1..0c253c1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java
@@ -1,5 +1,6 @@
package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit;
+import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
import com.googlesource.gerrit.plugins.chatgpt.mode.ModeClassLoader;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.patch.diff.FileDiffProcessed;
@@ -20,6 +21,7 @@
private final IGerritClientPatchSet gerritClientPatchSet;
private final GerritClientComments gerritClientComments;
+ @Inject
public GerritClientFacade(Configuration config) {
gerritClientDetail = new GerritClientDetail(config);
gerritClientPatchSet = (IGerritClientPatchSet) ModeClassLoader.getInstance(
diff --git a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java
index fa94a95..07880e8 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java
@@ -156,8 +156,6 @@
}
@Test
- @Ignore("Instance of GerritClient is unregistered from SingletonManager before we can access it in L#172." +
- "This will be fixed when we migrate to Guice RequestScoped injection.")
public void gptMentionedInComment() {
when(config.getGerritUserName()).thenReturn(GERRIT_GPT_USERNAME);
chatGptPromptStateless.setCommentEvent(true);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
index 55140c8..5f73c4d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
@@ -28,6 +28,7 @@
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.UriResourceLocator;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritClient;
+import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritClientFacade;
import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFiles;
import lombok.NonNull;
import org.apache.http.entity.ContentType;
@@ -231,7 +232,7 @@
}
private void initTest () throws NoSuchProjectException {
- gerritClient = new GerritClient();
+ gerritClient = new GerritClient(new GerritClientFacade(config));
patchSetReviewer = new PatchSetReviewer(gerritClient, config);
mockConfigCreator = mock(ConfigCreator.class);
}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java
index 1268f6b..77baa74 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java
@@ -53,7 +53,6 @@
when(config.getGerritUserName()).thenReturn("Your Gerrit username");
when(config.getGerritPassword()).thenReturn("Your Gerrit password");
- gerritClient.initialize(config);
String patchSet = gerritClient.getPatchSet("${changeId}");
log.info("patchSet: {}", patchSet);
assertNotNull(patchSet);
@@ -69,8 +68,6 @@
reviewBatches.add(new ReviewBatch());
reviewBatches.get(0).setContent("message");
- gerritClient.initialize(config);
-
GerritClientReview gerritClientReview = new GerritClientReview(config);
gerritClientReview.setReview("Your changeId", reviewBatches);
}