From d564304a6137c1f5ec0e0ed890658bf4b817371b Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 8 Jan 2024 16:38:48 +0100 Subject: [PATCH] Use computeIfAbsent with a protected method, make reset protected Signed-off-by: Guillaume Nodet --- .../org/slf4j/simple/SimpleLoggerFactory.java | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerFactory.java b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerFactory.java index 8b45447c..4365e712 100644 --- a/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerFactory.java +++ b/slf4j-simple/src/main/java/org/slf4j/simple/SimpleLoggerFactory.java @@ -49,26 +49,23 @@ public class SimpleLoggerFactory implements ILoggerFactory { * Return an appropriate {@link SimpleLogger} instance by name. */ public Logger getLogger(String name) { - Logger simpleLogger = loggerMap.get(name); - if (simpleLogger != null) { - return simpleLogger; - } else { - Logger newInstance = new SimpleLogger(name); - Logger oldInstance = loggerMap.putIfAbsent(name, newInstance); - return oldInstance == null ? newInstance : oldInstance; - } + return loggerMap.computeIfAbsent(name, this::createLogger); + } + + protected Logger createLogger(String name) { + return new SimpleLogger(name); } /** * Clear the internal logger cache. * - * This method is intended to be called by classes (in the same package) for - * testing purposes. This method is internal. It can be modified, renamed or - * removed at any time without notice. + * This method is intended to be called by classes (in the same package or + * subclasses) for testing purposes. This method is internal. It can be + * modified, renamed or removed at any time without notice. * * You are strongly discouraged from calling this method in production code. */ - void reset() { + protected void reset() { loggerMap.clear(); } }