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
