Remove ProjectDataHandler class
Use Guice for creation of `PluginDataHandler` insted of using a static
field in `ProjectDataHandler`.
Also removes `ChatGptReviewStatefulTest.assistantCreated` test, as now
assistant creation is delegated to Guice.
Change-Id: Ie5a76de046058534c471d33b1eefd4107a3395b9
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/data/PluginDataHandler.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/data/PluginDataHandler.java
index 55585d2..bfa16e8 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/data/PluginDataHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/data/PluginDataHandler.java
@@ -1,12 +1,14 @@
package com.googlesource.gerrit.plugins.chatgpt.data;
import com.google.inject.Inject;
+import com.google.inject.Singleton;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Properties;
+@Singleton
public class PluginDataHandler {
private final Path configFile;
private final Properties configProperties = new Properties();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/data/ProjectDataHandler.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/data/ProjectDataHandler.java
deleted file mode 100644
index 9df9944..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/data/ProjectDataHandler.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.googlesource.gerrit.plugins.chatgpt.data;
-
-import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class ProjectDataHandler {
- private static PluginDataHandler pluginDataHandler;
-
- public static void createNewInstance(PluginDataHandler loadedPluginDataHandler) {
- pluginDataHandler = loadedPluginDataHandler;
- }
-
- public static synchronized void setValue(GerritChange change, String key, String value) {
- pluginDataHandler.setValue(getProjectKey(change, key), value);
- }
-
- public static String getValue(GerritChange change, String key) {
- return pluginDataHandler.getValue(getProjectKey(change, key));
- }
-
- public static synchronized void removeValue(GerritChange change, String key) {
- pluginDataHandler.removeValue(getProjectKey(change, key));
- }
-
- private static String getProjectKey(GerritChange change, String key) {
- return change.getProjectName() + "." + key;
- }
-
-}
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 ea6b1fe..b1877bf 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
@@ -8,12 +8,9 @@
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.chatgpt.PatchSetReviewer;
import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
-import com.googlesource.gerrit.plugins.chatgpt.data.PluginDataHandler;
-import com.googlesource.gerrit.plugins.chatgpt.data.ProjectDataHandler;
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.model.data.ChangeSetData;
-import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFiles;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
@@ -39,7 +36,6 @@
private final ChangeSetData changeSetData;
private final GerritChange change;
private final PatchSetReviewer reviewer;
- private final PluginDataHandler pluginDataHandler;
@Inject
EventHandlerTask(
@@ -47,15 +43,13 @@
ChangeSetData changeSetData,
GerritChange change,
PatchSetReviewer reviewer,
- GerritClient gerritClient,
- PluginDataHandler pluginDataHandler
+ GerritClient gerritClient
) {
this.changeSetData = changeSetData;
this.change = change;
this.reviewer = reviewer;
this.gerritClient = gerritClient;
this.config = config;
- this.pluginDataHandler = pluginDataHandler;
}
@Override
@@ -65,8 +59,6 @@
@VisibleForTesting
public Result execute() {
- ProjectDataHandler.createNewInstance(pluginDataHandler);
-
if (!preProcessEvent(change, changeSetData)) {
return Result.NOT_SUPPORTED;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
index 4b4a86d..7a8071a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
@@ -1,7 +1,7 @@
package com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.chatgpt;
import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
-import com.googlesource.gerrit.plugins.chatgpt.data.ProjectDataHandler;
+import com.googlesource.gerrit.plugins.chatgpt.data.PluginDataHandler;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.ClientBase;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.chatgpt.ChatGptTools;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
@@ -33,20 +33,22 @@
private final HttpClient httpClient = new HttpClient();
private final GerritChange change;
private final GitRepoFiles gitRepoFiles;
+ private final PluginDataHandler pluginDataHandler;
- public ChatGptAssistant(Configuration config, GerritChange change, GitRepoFiles gitRepoFiles) {
+ public ChatGptAssistant(Configuration config, GerritChange change, GitRepoFiles gitRepoFiles, PluginDataHandler pluginDataHandler) {
super(config);
this.change = change;
this.gitRepoFiles = gitRepoFiles;
+ this.pluginDataHandler = pluginDataHandler;
}
public void setupAssistant() {
- String assistantId = ProjectDataHandler.getValue(change, KEY_ASSISTANT_ID);
+ String assistantId = pluginDataHandler.getValue(KEY_ASSISTANT_ID);
if (assistantId == null) {
String fileId = uploadRepoFiles();
- ProjectDataHandler.setValue(change, KEY_FILE_ID, fileId);
+ pluginDataHandler.setValue(KEY_FILE_ID, fileId);
assistantId = createAssistant(fileId);
- ProjectDataHandler.setValue(change, KEY_ASSISTANT_ID, assistantId);
+ pluginDataHandler.setValue(KEY_ASSISTANT_ID, assistantId);
log.info("Project assistant created with ID: {}", assistantId);
}
else {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java
index 22107e1..257cddf 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java
@@ -2,6 +2,7 @@
import com.google.inject.Inject;
import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
+import com.googlesource.gerrit.plugins.chatgpt.data.PluginDataHandler;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.data.ChangeSetData;
import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.chatgpt.ChatGptAssistant;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
@@ -13,15 +14,17 @@
@Slf4j
public class GerritClientPatchSetStateful extends GerritClientPatchSet implements IGerritClientPatchSet {
private final GitRepoFiles gitRepoFiles;
+ private final PluginDataHandler pluginDataHandler;
@Inject
- public GerritClientPatchSetStateful(Configuration config, GitRepoFiles gitRepoFiles) {
+ public GerritClientPatchSetStateful(Configuration config, GitRepoFiles gitRepoFiles, PluginDataHandler pluginDataHandler) {
super(config);
this.gitRepoFiles = gitRepoFiles;
+ this.pluginDataHandler = pluginDataHandler;
}
public String getPatchSet(ChangeSetData changeSetData, GerritChange change) {
- ChatGptAssistant chatGptAssistant = new ChatGptAssistant(config, change, gitRepoFiles);
+ ChatGptAssistant chatGptAssistant = new ChatGptAssistant(config, change, gitRepoFiles, pluginDataHandler);
chatGptAssistant.setupAssistant();
return "";
diff --git a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatefulTest.java b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatefulTest.java
index 432e7f9..852531d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatefulTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatefulTest.java
@@ -7,18 +7,12 @@
import com.googlesource.gerrit.plugins.chatgpt.settings.Settings.MODES;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.entity.ContentType;
-import org.junit.Assert;
-import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-import static com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.chatgpt.ChatGptAssistant.*;
import static java.net.HttpURLConnection.HTTP_OK;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@Slf4j
@@ -71,30 +65,4 @@
super.initComparisonContent();
}
- private void setupAssistantCreatedTest(Map<String, String> mockedPluginDataHandler) {
- // Mock the behavior of the Git Repository Manager
- String repoJson = readTestFile("__files/gitProjectFiles.json");
- when(gitRepoFiles.getGitRepoFiles(any())).thenReturn(repoJson);
-
- // Mock the behavior of the `setValue` method of the Plugin Data Handler
- doAnswer(invocation -> {
- String key = invocation.getArgument(0);
- String value = invocation.getArgument(1);
- mockedPluginDataHandler.put(key, value);
- return null; // since setValue is void
- }).when(pluginDataHandler).setValue(anyString(), anyString());
- }
-
- @Test
- public void assistantCreated() {
- Map<String, String> mockedPluginDataHandler = new HashMap<>();
- setupAssistantCreatedTest(mockedPluginDataHandler);
- handleEventBasedOnType(false);
-
- String projectFileIdKey = PROJECT_NAME + "." + KEY_FILE_ID;
- Assert.assertEquals(mockedPluginDataHandler.get(projectFileIdKey), CHAT_GPT_FILE_ID);
- String projectAssistantKey = PROJECT_NAME + "." + KEY_ASSISTANT_ID;
- Assert.assertEquals(mockedPluginDataHandler.get(projectAssistantKey), CHAT_GPT_ASSISTANT_ID);
- }
-
}
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 305ff60..a8af5a5 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
@@ -315,7 +315,7 @@
private IGerritClientPatchSet getGerritClientPatchSet() {
return switch (config.getGptMode()) {
- case stateful -> new GerritClientPatchSetStateful(config, gitRepoFiles);
+ case stateful -> new GerritClientPatchSetStateful(config, gitRepoFiles, pluginDataHandler);
case stateless -> new GerritClientPatchSetStateless(config);
};
}