Refactor `DebugMessages` class
The static class `DebugMessages` has been refactored to
`DebugCodeBlocksReview`, which now inherits from a new general-purpose
class `DebugCodeBlocks`.
This refactor aims to:
- Generalize `DebugCodeBlocks` for future use in dynamic config settings
from messages;
- Improve the clarity of the class name;
- Enable the use of localized text.
Change-Id: I545e55803759b69183500bc7ff67af2956560fb9
Signed-off-by: Patrizio <patrizio.gelosi@amarulasolutions.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/PatchSetReviewer.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/PatchSetReviewer.java
index ed40c50..f94323b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/PatchSetReviewer.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/PatchSetReviewer.java
@@ -8,7 +8,7 @@
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.GerritClientReview;
-import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.messages.DebugMessages;
+import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.messages.DebugCodeBlocksReview;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.patch.comment.GerritCommentRange;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.chatgpt.ChatGptReplyItem;
import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.chatgpt.ChatGptResponseContent;
@@ -34,6 +34,7 @@
@Getter
private final IChatGptClient chatGptClient;
private final Localizer localizer;
+ private final DebugCodeBlocksReview debugCodeBlocksReview;
private GerritCommentRange gerritCommentRange;
private List<ReviewBatch> reviewBatches;
@@ -55,6 +56,7 @@
this.clientReviewProvider = clientReviewProvider;
this.chatGptClient = chatGptClient;
this.localizer = localizer;
+ debugCodeBlocksReview = new DebugCodeBlocksReview(localizer);
}
public void review(GerritChange change) throws Exception {
@@ -120,7 +122,7 @@
continue;
}
if (changeSetData.getDebugMode()) {
- reply += DebugMessages.getDebugMessage(replyItem, isHidden);
+ reply += debugCodeBlocksReview.getDebugCodeBlock(replyItem, isHidden);
}
ReviewBatch batchMap = new ReviewBatch();
batchMap.setContent(reply);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java
index 6370782..1d545f5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/ClientMessage.java
@@ -18,6 +18,7 @@
private final Pattern botMentionPattern;
private final ClientCommands clientCommands;
+ private final DebugCodeBlocksReview debugCodeBlocksReview;
@Getter
private String message;
@@ -26,6 +27,7 @@
super(config);
botMentionPattern = getBotMentionPattern();
clientCommands = new ClientCommands(config, changeSetData, localizer);
+ debugCodeBlocksReview = new DebugCodeBlocksReview(localizer);
}
public ClientMessage(Configuration config, ChangeSetData changeSetData, String message, Localizer localizer) {
@@ -60,8 +62,8 @@
return this;
}
- public ClientMessage removeDebugMessages() {
- message = DebugMessages.removeDebugMessages(message);
+ public ClientMessage removeDebugCodeBlocks() {
+ message = debugCodeBlocksReview.removeDebugCodeBlocks(message);
return this;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugCodeBlocks.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugCodeBlocks.java
new file mode 100644
index 0000000..4cb2491
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugCodeBlocks.java
@@ -0,0 +1,32 @@
+package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.messages;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static com.googlesource.gerrit.plugins.chatgpt.utils.TextUtils.*;
+
+public class DebugCodeBlocks {
+ protected final String commentOpening;
+ protected final Pattern debugMessagePattern;
+
+ public DebugCodeBlocks(String openingTitle) {
+ commentOpening = CODE_DELIMITER_BEGIN + openingTitle + "\n";
+ debugMessagePattern = Pattern.compile("\\s+" + CODE_DELIMITER +"\\s*" + openingTitle + ".*" +
+ CODE_DELIMITER + "\\s*", Pattern.DOTALL);
+ }
+
+ public String removeDebugCodeBlocks(String message) {
+ Matcher debugMessagematcher = debugMessagePattern.matcher(message);
+ return debugMessagematcher.replaceAll("");
+ }
+
+ protected String getDebugCodeBlock(List<String> panelItems) {
+ return joinWithNewLine(new ArrayList<>() {{
+ add(commentOpening);
+ addAll(panelItems);
+ add(CODE_DELIMITER);
+ }});
+ }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugCodeBlocksReview.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugCodeBlocksReview.java
new file mode 100644
index 0000000..2c2f607
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugCodeBlocksReview.java
@@ -0,0 +1,23 @@
+package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.messages;
+
+import com.googlesource.gerrit.plugins.chatgpt.localization.Localizer;
+import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.chatgpt.ChatGptReplyItem;
+
+import java.util.List;
+
+import static com.googlesource.gerrit.plugins.chatgpt.utils.TextUtils.prettyStringifyObject;
+
+public class DebugCodeBlocksReview extends DebugCodeBlocks {
+ private static final String HIDDEN_REPLY = "hidden: %s";
+
+ public DebugCodeBlocksReview(Localizer localizer) {
+ super(localizer.getText("message.debugging.review.title"));
+ }
+
+ public String getDebugCodeBlock(ChatGptReplyItem replyItem, boolean isHidden) {
+ return super.getDebugCodeBlock(List.of(
+ String.format(HIDDEN_REPLY, isHidden),
+ prettyStringifyObject(replyItem)
+ ));
+ }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugMessages.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugMessages.java
deleted file mode 100644
index ef63ad8..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/messages/DebugMessages.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.messages;
-
-import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.chatgpt.ChatGptReplyItem;
-
-import java.util.ArrayList;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static com.googlesource.gerrit.plugins.chatgpt.utils.TextUtils.*;
-
-public class DebugMessages {
- private static final String OPENING_TITLE = "DEBUGGING DETAILS";
- private static final String COMMENT_OPENING = CODE_DELIMITER_BEGIN + OPENING_TITLE + "\n";
- private static final String HIDDEN_REPLY = "hidden: %s";
- private static final Pattern DEBUG_MESSAGE_PATTERN = Pattern.compile("\\s+" + CODE_DELIMITER +"\\s*" +
- OPENING_TITLE + ".*" + CODE_DELIMITER + "\\s*", Pattern.DOTALL);
-
- public static String getDebugMessage(ChatGptReplyItem replyItem, boolean isHidden) {
- return joinWithNewLine(new ArrayList<>() {{
- add(COMMENT_OPENING);
- add(String.format(HIDDEN_REPLY, isHidden));
- add(prettyStringifyObject(replyItem));
- add(CODE_DELIMITER);
- }});
- }
-
- public static String removeDebugMessages(String message) {
- Matcher debugMessagematcher = DEBUG_MESSAGE_PATTERN.matcher(message);
- return debugMessagematcher.replaceAll("");
- }
-}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/prompt/ChatGptComment.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/prompt/ChatGptComment.java
index f34e611..fccc1a9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/prompt/ChatGptComment.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/prompt/ChatGptComment.java
@@ -24,7 +24,7 @@
protected String getCleanedMessage(GerritComment commentProperty) {
commentMessage = new ClientMessage(config, changeSetData, commentProperty.getMessage(), localizer);
if (isFromAssistant(commentProperty)) {
- commentMessage.removeDebugMessages();
+ commentMessage.removeDebugCodeBlocks();
}
else {
commentMessage.removeMentions().parseRemoveCommands();
diff --git a/src/main/resources/localization/localTexts.properties b/src/main/resources/localization/localTexts.properties
index 512f858..00c5f06 100644
--- a/src/main/resources/localization/localTexts.properties
+++ b/src/main/resources/localization/localTexts.properties
@@ -1,3 +1,4 @@
system.message.prefix=SYSTEM MESSAGE:
message.empty.review=No update to show for this Change Set
message.debugging.functionalities.disabled=Message Debugging functionalities are disabled
+message.debugging.review.title=DEBUGGING DETAILS