This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/struts.git

commit c30c75a6354cc500557da59971affca440b28659
Author: Lukasz Lenart <[email protected]>
AuthorDate: Mon Oct 26 13:29:58 2026 +0100

    WW-5819 test: keep each captured log level with its message in LogCapture
    
    Co-Authored-By: Claude Opus 5.5 <[email protected]>
---
 .../test/java/org/apache/struts2/test/LogCapture.java   | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/core/src/test/java/org/apache/struts2/test/LogCapture.java 
b/core/src/test/java/org/apache/struts2/test/LogCapture.java
index 2fa33bca5..e02dc0d6d 100644
--- a/core/src/test/java/org/apache/struts2/test/LogCapture.java
+++ b/core/src/test/java/org/apache/struts2/test/LogCapture.java
@@ -27,7 +27,6 @@ import org.apache.logging.log4j.core.config.Property;
 
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.stream.IntStream;
 
 /**
  * Collects what a class logs while open, as the formatted message followed by 
the exception, if any. Only levels
@@ -37,8 +36,10 @@ public class LogCapture implements AutoCloseable {
 
     private final Logger logger;
     private final AbstractAppender appender;
-    private final List<String> messages = new CopyOnWriteArrayList<>();
-    private final List<Level> levels = new CopyOnWriteArrayList<>();
+    private final List<Entry> entries = new CopyOnWriteArrayList<>();
+
+    private record Entry(Level level, String message) {
+    }
 
     public LogCapture(Class<?> source) {
         logger = (Logger) LogManager.getLogger(source);
@@ -46,8 +47,7 @@ public class LogCapture implements AutoCloseable {
             @Override
             public void append(LogEvent event) {
                 String message = event.getMessage().getFormattedMessage();
-                levels.add(event.getLevel());
-                messages.add(event.getThrown() == null ? message : message + " 
" + event.getThrown());
+                entries.add(new Entry(event.getLevel(), event.getThrown() == 
null ? message : message + " " + event.getThrown()));
             }
         };
         appender.start();
@@ -55,14 +55,11 @@ public class LogCapture implements AutoCloseable {
     }
 
     public List<String> messages() {
-        return messages;
+        return entries.stream().map(Entry::message).toList();
     }
 
     public List<String> messages(Level level) {
-        return IntStream.range(0, messages.size())
-                .filter(i -> levels.get(i) == level)
-                .mapToObj(messages::get)
-                .toList();
+        return entries.stream().filter(entry -> entry.level() == 
level).map(Entry::message).toList();
     }
 
     @Override

Reply via email to