Bind GerritChange in event context

Change-Id: I80ca16fdb760b19322ca2ad142c6e07fb3c47f1d
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerExecutor.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerExecutor.java
index 9f6ce1a..4cce7cd 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerExecutor.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerExecutor.java
@@ -32,9 +32,9 @@
     }
 
     public void execute(Configuration config, Event event) {
-        GerritEventContextModule contextModule = new GerritEventContextModule(config);
-        EventHandlerTask.Factory taskHandlerFactory = injector.createChildInjector(contextModule)
-                .getInstance(EventHandlerTask.Factory.class);
-        executor.execute(taskHandlerFactory.create(event));
+        GerritEventContextModule contextModule = new GerritEventContextModule(config, event);
+        EventHandlerTask task = injector.createChildInjector(contextModule)
+                .getInstance(EventHandlerTask.class);
+        executor.execute(task);
     }
 }
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 796e77f..fafe16c 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
@@ -3,13 +3,9 @@
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Splitter;
 import com.google.gerrit.extensions.client.ChangeKind;
-import com.google.gerrit.extensions.config.FactoryModule;
 import com.google.gerrit.server.data.ChangeAttribute;
 import com.google.gerrit.server.data.PatchSetAttribute;
-import com.google.gerrit.server.events.Event;
 import com.google.inject.Inject;
-import com.google.inject.Module;
-import com.google.inject.assistedinject.Assisted;
 import com.googlesource.gerrit.plugins.chatgpt.PatchSetReviewer;
 import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
 import com.googlesource.gerrit.plugins.chatgpt.data.ChangeSetDataHandler;
@@ -30,17 +26,6 @@
 
 @Slf4j
 public class EventHandlerTask implements Runnable {
-    public static final Module MODULE = new FactoryModule() {
-        @Override
-        protected void configure() {
-            factory(EventHandlerTask.Factory.class);
-        }
-    };
-
-    public interface Factory {
-        EventHandlerTask create(Event event);
-    }
-
     @VisibleForTesting
     public enum Result {
         OK, NOT_SUPPORTED, FAILURE
@@ -51,26 +36,26 @@
             "comment-added", true
     );
 
-    private final Event event;
     private final Configuration config;
     private final GerritClient gerritClient;
     private final GitRepoFiles gitRepoFiles;
+    private final GerritChange change;
     private final PatchSetReviewer reviewer;
     private final PluginDataHandler pluginDataHandler;
 
     @Inject
     EventHandlerTask(
             Configuration config,
+            GerritChange change,
             PatchSetReviewer reviewer,
             GerritClient gerritClient,
             GitRepoFiles gitRepoFiles,
-            PluginDataHandler pluginDataHandler,
-            @Assisted Event event
+            PluginDataHandler pluginDataHandler
     ) {
+        this.change = change;
         this.reviewer = reviewer;
         this.gerritClient = gerritClient;
         this.config = config;
-        this.event = event;
         this.gitRepoFiles = gitRepoFiles;
         this.pluginDataHandler = pluginDataHandler;
     }
@@ -82,7 +67,6 @@
 
     @VisibleForTesting
     public Result execute() {
-        GerritChange change = new GerritChange(event);
         gerritClient.initialize(config, change);
         Integer gptAccountId = gerritClient.getNotNullAccountId(change, config.getGerritUserName());
         ChangeSetData changeSetData = ChangeSetDataHandler.getNewInstance(config, change, gptAccountId);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/GerritEventContextModule.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/GerritEventContextModule.java
index d71d69a..b25d564 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/GerritEventContextModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/GerritEventContextModule.java
@@ -1,19 +1,22 @@
 package com.googlesource.gerrit.plugins.chatgpt.listener;
 
 import com.google.gerrit.extensions.config.FactoryModule;
+import com.google.gerrit.server.events.Event;
 import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
+import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
 
 public class GerritEventContextModule extends FactoryModule {
+    private final Event event;
     private final Configuration config;
 
-    public GerritEventContextModule(Configuration config) {
+    public GerritEventContextModule(Configuration config, Event event) {
+        this.event = event;
         this.config = config;
     }
 
     @Override
     protected void configure() {
-        install(EventHandlerTask.MODULE);
-
         bind(Configuration.class).toInstance(config);
+        bind(GerritChange.class).toInstance(new GerritChange(event));
     }
 }
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 59d96de..55140c8 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
@@ -205,10 +205,10 @@
         setupCommonEventMocks((PatchSetEvent) event); // Apply common mock configurations
         typeSpecificSetup.accept(event);
 
-        EventHandlerTask.Factory factory = Guice.createInjector(EventHandlerTask.MODULE, new AbstractModule() {
+        EventHandlerTask task = Guice.createInjector(new AbstractModule() {
             @Override
             protected void configure() {
-                install(new GerritEventContextModule(config));
+                install(new GerritEventContextModule(config, event));
 
                 bind(GerritClient.class).toInstance(gerritClient);
                 bind(GitRepoFiles.class).toInstance(gitRepoFiles);
@@ -216,8 +216,8 @@
                 bind(PatchSetReviewer.class).toInstance(patchSetReviewer);
                 bind(PluginDataHandler.class).toInstance(pluginDataHandler);
             }
-        }).getInstance(EventHandlerTask.Factory.class);
-        return factory.create(event).execute();
+        }).getInstance(EventHandlerTask.class);
+        return task.execute();
     }
 
     protected void testRequestSent() {