You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2024/12/05 11:37:24 UTC
(maven) branch master updated: [MNG-8405] Fail On Severity, when set, is not reset (in resident instances) (#1950)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new 93e0f1bb79 [MNG-8405] Fail On Severity, when set, is not reset (in resident instances) (#1950)
93e0f1bb79 is described below
commit 93e0f1bb79e0201d7bd81d0aa59e52e3a2d4b441
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Dec 5 12:37:18 2024 +0100
[MNG-8405] Fail On Severity, when set, is not reset (in resident instances) (#1950)
Make it reset that does not leave dangling values for next invocation.
---------
https://issues.apache.org/jira/browse/MNG-8405
Co-authored-by: Tamas Cservenak <ta...@cservenak.net>
---
.../apache/maven/logging/api/LogLevelRecorder.java | 2 ++
.../maven/slf4j/DefaultLogLevelRecorder.java | 32 ++++------------------
.../org/apache/maven/slf4j/MavenLoggerFactory.java | 18 ++++++------
.../apache/maven/slf4j/LogLevelRecorderTest.java | 30 ++------------------
.../apache/maven/slf4j/MavenLoggerFactoryTest.java | 3 +-
5 files changed, 22 insertions(+), 63 deletions(-)
diff --git a/impl/maven-logging/src/main/java/org/apache/maven/logging/api/LogLevelRecorder.java b/impl/maven-logging/src/main/java/org/apache/maven/logging/api/LogLevelRecorder.java
index 25ccc266e2..b15e3e5dad 100644
--- a/impl/maven-logging/src/main/java/org/apache/maven/logging/api/LogLevelRecorder.java
+++ b/impl/maven-logging/src/main/java/org/apache/maven/logging/api/LogLevelRecorder.java
@@ -34,4 +34,6 @@ public interface LogLevelRecorder {
Level getMaxLevelAllowed();
void setMaxLevelAllowed(Level level);
+
+ void reset();
}
diff --git a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/DefaultLogLevelRecorder.java b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/DefaultLogLevelRecorder.java
index b1b9b7de66..8e1f204cef 100644
--- a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/DefaultLogLevelRecorder.java
+++ b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/DefaultLogLevelRecorder.java
@@ -18,8 +18,6 @@
*/
package org.apache.maven.slf4j;
-import java.util.HashMap;
-import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import org.apache.maven.logging.api.LogLevelRecorder;
@@ -28,25 +26,9 @@ import org.apache.maven.logging.api.LogLevelRecorder;
* Responsible for keeping state of whether the threshold of the --fail-on-severity flag has been hit.
*/
public class DefaultLogLevelRecorder implements LogLevelRecorder {
- private static final Map<String, Level> ACCEPTED_LEVELS = new HashMap<>();
-
- static {
- ACCEPTED_LEVELS.put("WARN", Level.WARN);
- ACCEPTED_LEVELS.put("WARNING", Level.WARN);
- ACCEPTED_LEVELS.put("ERROR", Level.ERROR);
- }
-
private Level maxAllowed;
private final AtomicReference<Level> maxReached = new AtomicReference<>(Level.DEBUG);
- public DefaultLogLevelRecorder(String threshold) {
- this(determineThresholdLevel(threshold));
- }
-
- public DefaultLogLevelRecorder(Level maxAllowed) {
- this.maxAllowed = maxAllowed;
- }
-
@Override
public boolean hasReachedMaxLevel() {
return maxReached.get().ordinal() > maxAllowed.ordinal();
@@ -67,14 +49,10 @@ public class DefaultLogLevelRecorder implements LogLevelRecorder {
this.maxAllowed = level;
}
- private static Level determineThresholdLevel(String input) {
- final Level result = ACCEPTED_LEVELS.get(input);
- if (result == null) {
- String message = String.format(
- "%s is not a valid log severity threshold. Valid severities are WARN/WARNING and ERROR.", input);
- throw new IllegalArgumentException(message);
- }
- return result;
+ @Override
+ public void reset() {
+ this.maxAllowed = null;
+ this.maxReached.set(Level.DEBUG);
}
public void record(org.slf4j.event.Level logLevel) {
@@ -97,6 +75,6 @@ public class DefaultLogLevelRecorder implements LogLevelRecorder {
}
public boolean metThreshold() {
- return maxReached.get().ordinal() >= maxAllowed.ordinal();
+ return maxAllowed != null && maxReached.get().ordinal() >= maxAllowed.ordinal();
}
}
diff --git a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java
index 9ea6c18bc4..27dc2ee30a 100644
--- a/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java
+++ b/impl/maven-logging/src/main/java/org/apache/maven/slf4j/MavenLoggerFactory.java
@@ -28,7 +28,7 @@ import org.slf4j.Logger;
* LogFactory for Maven which can create a simple logger or one which, if set, fails the build on a severity threshold.
*/
public class MavenLoggerFactory implements org.apache.maven.logging.api.LogLevelRecorder, ILoggerFactory {
- DefaultLogLevelRecorder logLevelRecorder = null;
+ final DefaultLogLevelRecorder logLevelRecorder = new DefaultLogLevelRecorder();
final ConcurrentMap<String, Logger> loggerMap = new ConcurrentHashMap<>();
public MavenLoggerFactory() {
@@ -37,7 +37,7 @@ public class MavenLoggerFactory implements org.apache.maven.logging.api.LogLevel
@Override
public boolean hasReachedMaxLevel() {
- return logLevelRecorder != null && logLevelRecorder.metThreshold();
+ return logLevelRecorder.metThreshold();
}
@Override
@@ -52,7 +52,7 @@ public class MavenLoggerFactory implements org.apache.maven.logging.api.LogLevel
@Override
public void setMaxLevelAllowed(Level level) {
- this.logLevelRecorder = new DefaultLogLevelRecorder(level.name());
+ this.logLevelRecorder.setMaxLevelAllowed(level);
}
/**
* Return an appropriate {@link Logger} instance by name.
@@ -62,12 +62,13 @@ public class MavenLoggerFactory implements org.apache.maven.logging.api.LogLevel
return loggerMap.computeIfAbsent(name, this::getNewLoggingInstance);
}
+ @Override
+ public void reset() {
+ logLevelRecorder.reset();
+ }
+
protected Logger getNewLoggingInstance(String name) {
- if (logLevelRecorder == null) {
- return new MavenSimpleLogger(name);
- } else {
- return new MavenFailOnSeverityLogger(name, logLevelRecorder);
- }
+ return new MavenFailOnSeverityLogger(name, logLevelRecorder);
}
public void reconfigure() {
@@ -78,5 +79,6 @@ public class MavenLoggerFactory implements org.apache.maven.logging.api.LogLevel
msl.configure(config.defaultLogLevel);
}
});
+ logLevelRecorder.reset();
}
}
diff --git a/impl/maven-logging/src/test/java/org/apache/maven/slf4j/LogLevelRecorderTest.java b/impl/maven-logging/src/test/java/org/apache/maven/slf4j/LogLevelRecorderTest.java
index 264be86f63..c2573b066c 100644
--- a/impl/maven-logging/src/test/java/org/apache/maven/slf4j/LogLevelRecorderTest.java
+++ b/impl/maven-logging/src/test/java/org/apache/maven/slf4j/LogLevelRecorderTest.java
@@ -18,43 +18,19 @@
*/
package org.apache.maven.slf4j;
+import org.apache.maven.logging.api.LogLevelRecorder;
import org.junit.jupiter.api.Test;
import org.slf4j.event.Level;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
class LogLevelRecorderTest {
@Test
void createsLogLevelRecorder() {
- DefaultLogLevelRecorder logLevelRecorder = new DefaultLogLevelRecorder("WARN");
+ DefaultLogLevelRecorder logLevelRecorder = new DefaultLogLevelRecorder();
+ logLevelRecorder.setMaxLevelAllowed(LogLevelRecorder.Level.WARN);
logLevelRecorder.record(Level.ERROR);
assertTrue(logLevelRecorder.metThreshold());
}
-
- @Test
- void failsOnLowerThanWarn() {
- assertThrows(IllegalArgumentException.class, () -> new DefaultLogLevelRecorder("INFO"));
- }
-
- @Test
- void createsLogLevelRecorderWithWarning() {
- DefaultLogLevelRecorder logLevelRecorder = new DefaultLogLevelRecorder("WARNING");
- logLevelRecorder.record(Level.ERROR);
-
- assertTrue(logLevelRecorder.metThreshold());
- }
-
- @Test
- void failsOnUnknownLogLevel() {
- Throwable thrown = assertThrows(IllegalArgumentException.class, () -> new DefaultLogLevelRecorder("SEVERE"));
- String message = thrown.getMessage();
- assertThat(message, containsString("SEVERE is not a valid log severity threshold"));
- assertThat(message, containsString("WARN"));
- assertThat(message, containsString("WARNING"));
- assertThat(message, containsString("ERROR"));
- }
}
diff --git a/impl/maven-logging/src/test/java/org/apache/maven/slf4j/MavenLoggerFactoryTest.java b/impl/maven-logging/src/test/java/org/apache/maven/slf4j/MavenLoggerFactoryTest.java
index 6ee870dc62..a6fb8cbc96 100644
--- a/impl/maven-logging/src/test/java/org/apache/maven/slf4j/MavenLoggerFactoryTest.java
+++ b/impl/maven-logging/src/test/java/org/apache/maven/slf4j/MavenLoggerFactoryTest.java
@@ -18,6 +18,7 @@
*/
package org.apache.maven.slf4j;
+import org.apache.maven.logging.api.LogLevelRecorder;
import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
@@ -56,7 +57,7 @@ class MavenLoggerFactoryTest {
@Test
void reportsWhenFailOnSeverityThresholdHasBeenHit() {
MavenLoggerFactory mavenLoggerFactory = new MavenLoggerFactory();
- mavenLoggerFactory.logLevelRecorder = new DefaultLogLevelRecorder("ERROR");
+ mavenLoggerFactory.logLevelRecorder.setMaxLevelAllowed(LogLevelRecorder.Level.ERROR);
MavenFailOnSeverityLogger logger = (MavenFailOnSeverityLogger) mavenLoggerFactory.getLogger("Test");
assertFalse(mavenLoggerFactory.logLevelRecorder.metThreshold());