Refactor access to dynamic configuration

Direct access to dynamic configuration through the plugin data handler
has been replaced with access via DynamicConfiguration to enhance
responsibility segregation.

Change-Id: I2776b9e762e434fadfaa0f5eb1423717d5eae02d
Signed-off-by: Patrizio <patrizio.gelosi@amarulasolutions.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/DynamicConfiguration.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/DynamicConfiguration.java
index 7e8dee9..6062c90 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/DynamicConfiguration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/config/DynamicConfiguration.java
@@ -2,6 +2,7 @@
 
 import com.googlesource.gerrit.plugins.chatgpt.data.PluginDataHandler;
 import com.googlesource.gerrit.plugins.chatgpt.data.PluginDataHandlerProvider;
+import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.HashMap;
@@ -13,6 +14,7 @@
     public static final String KEY_DYNAMIC_CONFIG = "dynamicConfig";
 
     private final PluginDataHandler pluginDataHandler;
+    @Getter
     private final Map<String, String> dynamicConfig;
 
     public DynamicConfiguration(PluginDataHandlerProvider pluginDataHandlerProvider) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientReview.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientReview.java
index 5e707dc..46af398 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientReview.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientReview.java
@@ -11,7 +11,7 @@
 import com.google.gerrit.server.util.ManualRequestContext;
 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.config.DynamicConfiguration;
 import com.googlesource.gerrit.plugins.chatgpt.data.PluginDataHandlerProvider;
 import com.googlesource.gerrit.plugins.chatgpt.localization.Localizer;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.messages.DebugCodeBlocksDynamicSettings;
@@ -25,13 +25,12 @@
 import java.util.Map;
 import java.util.Optional;
 
-import static com.googlesource.gerrit.plugins.chatgpt.config.DynamicConfiguration.KEY_DYNAMIC_CONFIG;
 import static com.googlesource.gerrit.plugins.chatgpt.mode.common.client.prompt.MessageSanitizer.sanitizeChatGptMessage;
 import static com.googlesource.gerrit.plugins.chatgpt.utils.TextUtils.joinWithDoubleNewLine;
 
 @Slf4j
 public class GerritClientReview extends GerritClientAccount {
-    private final PluginDataHandler pluginDataHandler;
+    private final PluginDataHandlerProvider pluginDataHandlerProvider;
     private final Localizer localizer;
     private final DebugCodeBlocksDynamicSettings debugCodeBlocksDynamicSettings;
 
@@ -44,7 +43,7 @@
             Localizer localizer
     ) {
         super(config, accountCache);
-        this.pluginDataHandler = pluginDataHandlerProvider.getChangeScope();
+        this.pluginDataHandlerProvider = pluginDataHandlerProvider;
         this.localizer = localizer;
         debugCodeBlocksDynamicSettings = new DebugCodeBlocksDynamicSettings(localizer);
     }
@@ -106,7 +105,7 @@
 
     private void updateSystemMessage(ReviewInput reviewInput, boolean emptyComments, String systemMessage) {
         List<String> messages = new ArrayList<>();
-        Map<String, String> dynamicConfig = pluginDataHandler.getJsonValue(KEY_DYNAMIC_CONFIG, String.class);
+        Map<String, String> dynamicConfig = new DynamicConfiguration(pluginDataHandlerProvider).getDynamicConfig();
         if (dynamicConfig != null && !dynamicConfig.isEmpty()) {
             messages.add(debugCodeBlocksDynamicSettings.getDebugCodeBlock(dynamicConfig));
         }