You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2022/07/28 17:32:49 UTC
[activemq-artemis] branch new-logging updated: Adding safeguard against {} on LogProcessor
This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch new-logging
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/new-logging by this push:
new 815eefb624 Adding safeguard against {} on LogProcessor
815eefb624 is described below
commit 815eefb62415d6ece768021fca1eb50a95326abf
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Thu Jul 28 13:32:24 2022 -0400
Adding safeguard against {} on LogProcessor
---
.../artemis/logprocessor/LogProcessor.java | 30 ++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/artemis-log-processor/src/main/java/org/apache/activemq/artemis/logprocessor/LogProcessor.java b/artemis-log-processor/src/main/java/org/apache/activemq/artemis/logprocessor/LogProcessor.java
index f7e2ed5279..15fd37e187 100644
--- a/artemis-log-processor/src/main/java/org/apache/activemq/artemis/logprocessor/LogProcessor.java
+++ b/artemis-log-processor/src/main/java/org/apache/activemq/artemis/logprocessor/LogProcessor.java
@@ -37,6 +37,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import java.util.function.Consumer;
import org.apache.activemq.artemis.logprocessor.annotation.LogBundle;
import org.apache.activemq.artemis.logprocessor.annotation.GetLogger;
@@ -71,6 +72,23 @@ public class LogProcessor extends AbstractProcessor {
}
+ private static void tupples(String arg, char open, char close, Consumer<String> stringConsumer) {
+ int openAt = -1;
+ for (int i = 0; i < arg.length(); i++) {
+ char charAt = arg.charAt(i);
+
+ if (charAt == open) {
+ openAt = i;
+ } else if (charAt == close) {
+ if (openAt >= 0) {
+ stringConsumer.accept(arg.substring(openAt + 1, i));
+ }
+ openAt = -1;
+ }
+
+ }
+ }
+
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
@@ -192,6 +210,14 @@ public class LogProcessor extends AbstractProcessor {
return true;
}
+ private void verifyLogArguments(String logMessage, Object holder) {
+ tupples(logMessage, '{', '}', (tupple) -> {
+ if (!tupple.equals("")) {
+ throw new IllegalArgumentException("Invalid log argument {" + tupple + "} on message \'" + logMessage + "\' as part of " + holder + "\nreplace it by {}");
+ }
+ });
+ }
+
private void generateMessage(LogBundle bundleAnnotation,
PrintWriter writerOutput,
ExecutableElement executableMember,
@@ -204,6 +230,8 @@ public class LogProcessor extends AbstractProcessor {
throw new IllegalStateException("message " + messageAnnotation.id() + " with definition = " + messageAnnotation.value() + " was previously defined as " + previousMessage);
}
+ verifyLogArguments(messageAnnotation.value(), executableMember);
+
processedMessages.put(messageAnnotation.id(), messageAnnotation.value());
// This is really a debug output
@@ -346,6 +374,8 @@ public class LogProcessor extends AbstractProcessor {
throw new IllegalStateException("message " + messageAnnotation.id() + " with definition = " + messageAnnotation.value() + " was previously defined as " + previousMessage);
}
+ verifyLogArguments(messageAnnotation.value(), executableMember);
+
processedMessages.put(messageAnnotation.id(), messageAnnotation.value());
// This is really a debug output