[LOG4J2-2429] don't cascade on method invocations
diff --git a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java
index 2362a50..119e78d 100644
--- a/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java
+++ b/log4j-audit/log4j-audit-api/src/main/java/org/apache/logging/log4j/audit/LogEventFactory.java
@@ -301,13 +301,15 @@
}
logEvent(msg, auditExceptionHandler);
+ return null;
}
if (method.getName().equals("setCompletionStatus")) {
- String name = NamingUtils.lowerFirst(NamingUtils.getMethodShortName(method.getName()));
if (objects == null || objects[0] == null) {
throw new IllegalArgumentException("Missing completion status");
}
+ String name = NamingUtils.lowerFirst(NamingUtils.getMethodShortName(method.getName()));
msg.put(name, objects[0].toString());
+ return null;
}
if (method.getName().equals("setAuditExceptionHandler")) {
if (objects == null || objects[0] == null) {
@@ -317,6 +319,7 @@
} else {
throw new IllegalArgumentException(objects[0] + " is not an " + AuditExceptionHandler.class.getName());
}
+ return null;
}
if (method.getName().startsWith("set")) {
String name = NamingUtils.lowerFirst(NamingUtils.getMethodShortName(method.getName()));
@@ -355,6 +358,7 @@
}
msg.put(name, result);
+ return null;
}
return null;
diff --git a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java
index 190ccd6..aa28ba3 100644
--- a/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java
+++ b/log4j-audit/log4j-audit-api/src/test/java/org/apache/logging/log4j/audit/LoginTest.java
@@ -20,9 +20,22 @@
event.logEvent();
+ AuditExceptionHandler exceptionHandler = (message, ex) -> {
+
+ };
+ event.setAuditExceptionHandler(exceptionHandler);
+ event.logEvent();
+
List<String> msgs = app.getMessages();
assertNotNull("No messages", msgs);
- assertTrue("No messages", msgs.size() == 2);
+ assertTrue("No messages", msgs.size() == 3);
+
+ String msg = msgs.get(1);
+ assertTrue("No completionStatus", msg.contains("completionStatus=\"Success\""));
+
+ msg = msgs.get(2);
+ assertTrue("auditExceptionHandler should not be present in the context", !msg.contains("auditExceptionHandler=\""));
+ msgs.forEach(System.out::println);
}
@Test