d21c096
From 2030e66936508a0d5ee04bf50b7cfeb0ff745b1d Mon Sep 17 00:00:00 2001
ad76d3b
From: Chris Kelley <ckelley@redhat.com>
ad76d3b
Date: Tue, 6 Jun 2023 21:45:57 +0100
ad76d3b
Subject: [PATCH 2/3] Drop jboss-logmanager dependency
ad76d3b
ad76d3b
---
ad76d3b
 pom.xml                                       |   7 -
ad76d3b
 .../jboss/logging/JBossLogManagerLogger.java  |  81 ---------
ad76d3b
 .../logging/JBossLogManagerProvider.java      | 163 ------------------
d21c096
 .../org/jboss/logging/LoggerProviders.java    |  30 +---
ad76d3b
 .../JBossLogManagerClassPathTestCase.java     |  30 ----
ad76d3b
 .../JBossLogManagerProviderTestCase.java      | 158 -----------------
d21c096
 6 files changed, 1 insertion(+), 468 deletions(-)
ad76d3b
 delete mode 100644 src/main/java/org/jboss/logging/JBossLogManagerLogger.java
ad76d3b
 delete mode 100644 src/main/java/org/jboss/logging/JBossLogManagerProvider.java
ad76d3b
 delete mode 100644 src/test/java/org/jboss/logging/JBossLogManagerClassPathTestCase.java
ad76d3b
 delete mode 100644 src/test/java/org/jboss/logging/JBossLogManagerProviderTestCase.java
ad76d3b
ad76d3b
diff --git a/pom.xml b/pom.xml
d21c096
index 0243e43..d3048ed 100644
ad76d3b
--- a/pom.xml
ad76d3b
+++ b/pom.xml
ad76d3b
@@ -56,7 +56,6 @@
ad76d3b
         
d21c096
         <version.ch.qos.logback>1.4.8</version.ch.qos.logback>
d21c096
         <version.module-info>2.0</version.module-info>
ad76d3b
-        <version.org.jboss.logmanager>2.1.19.Final</version.org.jboss.logmanager>
ad76d3b
         <version.org.junit>5.9.3</version.org.junit>
ad76d3b
         <version.org.sfl4j>2.0.7</version.org.sfl4j>
ad76d3b
 
ad76d3b
@@ -80,12 +79,6 @@
ad76d3b
     </dependencyManagement>
ad76d3b
 
ad76d3b
     <dependencies>
ad76d3b
-        <dependency>
ad76d3b
-            <groupId>org.jboss.logmanager</groupId>
ad76d3b
-            <artifactId>jboss-logmanager</artifactId>
ad76d3b
-            <version>${version.org.jboss.logmanager}</version>
ad76d3b
-            <scope>provided</scope>
ad76d3b
-        </dependency>
ad76d3b
         <dependency>
ad76d3b
             <groupId>org.slf4j</groupId>
ad76d3b
             <artifactId>slf4j-api</artifactId>
ad76d3b
diff --git a/src/main/java/org/jboss/logging/JBossLogManagerLogger.java b/src/main/java/org/jboss/logging/JBossLogManagerLogger.java
ad76d3b
deleted file mode 100644
ad76d3b
index bd4c9a0..0000000
ad76d3b
--- a/src/main/java/org/jboss/logging/JBossLogManagerLogger.java
ad76d3b
+++ /dev/null
ad76d3b
@@ -1,81 +0,0 @@
ad76d3b
-/*
ad76d3b
- * JBoss, Home of Professional Open Source.
ad76d3b
- *
ad76d3b
- * Copyright 2023 Red Hat, Inc.
ad76d3b
- *
ad76d3b
- * Licensed under the Apache License, Version 2.0 (the "License");
ad76d3b
- * you may not use this file except in compliance with the License.
ad76d3b
- * You may obtain a copy of the License at
ad76d3b
- *
ad76d3b
- *  http://www.apache.org/licenses/LICENSE-2.0
ad76d3b
- *
ad76d3b
- * Unless required by applicable law or agreed to in writing, software
ad76d3b
- * distributed under the License is distributed on an "AS IS" BASIS,
ad76d3b
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ad76d3b
- * See the License for the specific language governing permissions and
ad76d3b
- * limitations under the License.
ad76d3b
- */
ad76d3b
-
ad76d3b
-package org.jboss.logging;
ad76d3b
-
ad76d3b
-import org.jboss.logmanager.ExtLogRecord;
ad76d3b
-
ad76d3b
-final class JBossLogManagerLogger extends Logger {
ad76d3b
-
ad76d3b
-    private static final long serialVersionUID = 7429618317727584742L;
ad76d3b
-
ad76d3b
-    private final org.jboss.logmanager.Logger logger;
ad76d3b
-
ad76d3b
-    JBossLogManagerLogger(final String name, final org.jboss.logmanager.Logger logger) {
ad76d3b
-        super(name);
ad76d3b
-        this.logger = logger;
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    public boolean isEnabled(final Level level) {
ad76d3b
-        return logger.isLoggable(translate(level));
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    protected void doLog(final Level level, final String loggerClassName, final Object message, final Object[] parameters,
ad76d3b
-            final Throwable thrown) {
ad76d3b
-        java.util.logging.Level translatedLevel = translate(level);
ad76d3b
-        if (logger.isLoggable(translatedLevel)) {
ad76d3b
-            if (parameters == null) {
ad76d3b
-                logger.log(loggerClassName, translatedLevel, String.valueOf(message), thrown);
ad76d3b
-            } else {
ad76d3b
-                logger.log(loggerClassName, translatedLevel, String.valueOf(message), ExtLogRecord.FormatStyle.MESSAGE_FORMAT,
ad76d3b
-                        parameters, thrown);
ad76d3b
-            }
ad76d3b
-        }
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    protected void doLogf(final Level level, final String loggerClassName, final String format, final Object[] parameters,
ad76d3b
-            final Throwable thrown) {
ad76d3b
-        if (parameters == null) {
ad76d3b
-            logger.log(loggerClassName, translate(level), format, thrown);
ad76d3b
-        } else {
ad76d3b
-            logger.log(loggerClassName, translate(level), format, ExtLogRecord.FormatStyle.PRINTF, parameters, thrown);
ad76d3b
-        }
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    private static java.util.logging.Level translate(final Level level) {
ad76d3b
-        if (level == Level.TRACE) {
ad76d3b
-            return org.jboss.logmanager.Level.TRACE;
ad76d3b
-        } else if (level == Level.DEBUG) {
ad76d3b
-            return org.jboss.logmanager.Level.DEBUG;
ad76d3b
-        }
ad76d3b
-        return infoOrHigher(level);
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    private static java.util.logging.Level infoOrHigher(final Level level) {
ad76d3b
-        if (level == Level.INFO) {
ad76d3b
-            return org.jboss.logmanager.Level.INFO;
ad76d3b
-        } else if (level == Level.WARN) {
ad76d3b
-            return org.jboss.logmanager.Level.WARN;
ad76d3b
-        } else if (level == Level.ERROR) {
ad76d3b
-            return org.jboss.logmanager.Level.ERROR;
ad76d3b
-        } else if (level == Level.FATAL) {
ad76d3b
-            return org.jboss.logmanager.Level.FATAL;
ad76d3b
-        }
ad76d3b
-        return org.jboss.logmanager.Level.ALL;
ad76d3b
-    }
ad76d3b
-}
ad76d3b
diff --git a/src/main/java/org/jboss/logging/JBossLogManagerProvider.java b/src/main/java/org/jboss/logging/JBossLogManagerProvider.java
ad76d3b
deleted file mode 100644
ad76d3b
index bdeac67..0000000
ad76d3b
--- a/src/main/java/org/jboss/logging/JBossLogManagerProvider.java
ad76d3b
+++ /dev/null
ad76d3b
@@ -1,163 +0,0 @@
ad76d3b
-/*
ad76d3b
- * JBoss, Home of Professional Open Source.
ad76d3b
- *
ad76d3b
- * Copyright 2023 Red Hat, Inc.
ad76d3b
- *
ad76d3b
- * Licensed under the Apache License, Version 2.0 (the "License");
ad76d3b
- * you may not use this file except in compliance with the License.
ad76d3b
- * You may obtain a copy of the License at
ad76d3b
- *
ad76d3b
- *  http://www.apache.org/licenses/LICENSE-2.0
ad76d3b
- *
ad76d3b
- * Unless required by applicable law or agreed to in writing, software
ad76d3b
- * distributed under the License is distributed on an "AS IS" BASIS,
ad76d3b
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ad76d3b
- * See the License for the specific language governing permissions and
ad76d3b
- * limitations under the License.
ad76d3b
- */
ad76d3b
-
ad76d3b
-package org.jboss.logging;
ad76d3b
-
ad76d3b
-import static org.jboss.logmanager.Logger.AttachmentKey;
ad76d3b
-
ad76d3b
-import java.security.AccessController;
ad76d3b
-import java.security.PrivilegedAction;
ad76d3b
-import java.util.Map;
ad76d3b
-import java.util.concurrent.ConcurrentHashMap;
ad76d3b
-import java.util.concurrent.ConcurrentMap;
ad76d3b
-
ad76d3b
-import org.jboss.logmanager.LogContext;
ad76d3b
-import org.jboss.logmanager.MDC;
ad76d3b
-import org.jboss.logmanager.NDC;
ad76d3b
-
ad76d3b
-/**
ad76d3b
- * An implementation of the {@linkplain LoggerProvider log provider} for the JBoss Log Manager.
ad76d3b
- */
ad76d3b
-public final class JBossLogManagerProvider implements LoggerProvider {
ad76d3b
-
ad76d3b
-    private static final AttachmentKey<Logger> KEY = new AttachmentKey<>();
ad76d3b
-    private static final AttachmentKey<ConcurrentMap<String, Logger>> LEGACY_KEY = new AttachmentKey<>();
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public Logger getLogger(final String name) {
ad76d3b
-        final SecurityManager sm = System.getSecurityManager();
ad76d3b
-        if (sm != null) {
ad76d3b
-            return AccessController.doPrivileged((PrivilegedAction<Logger>) () -> {
ad76d3b
-                try {
ad76d3b
-                    return doGetLogger(name);
ad76d3b
-                } catch (NoSuchMethodError ignore) {
ad76d3b
-                }
ad76d3b
-                // fallback
ad76d3b
-                return doLegacyGetLogger(name);
ad76d3b
-            });
ad76d3b
-        } else {
ad76d3b
-            try {
ad76d3b
-                return doGetLogger(name);
ad76d3b
-            } catch (NoSuchMethodError ignore) {
ad76d3b
-            }
ad76d3b
-            // fallback
ad76d3b
-            return doLegacyGetLogger(name);
ad76d3b
-        }
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    private static Logger doLegacyGetLogger(final String name) {
ad76d3b
-        final org.jboss.logmanager.Logger lmLogger = LogContext.getLogContext().getLogger("");
ad76d3b
-        ConcurrentMap<String, Logger> loggers = lmLogger.getAttachment(LEGACY_KEY);
ad76d3b
-        if (loggers == null) {
ad76d3b
-            loggers = new ConcurrentHashMap<>();
ad76d3b
-            final ConcurrentMap<String, Logger> appearing = lmLogger.attachIfAbsent(LEGACY_KEY, loggers);
ad76d3b
-            if (appearing != null) {
ad76d3b
-                loggers = appearing;
ad76d3b
-            }
ad76d3b
-        }
ad76d3b
-
ad76d3b
-        Logger l = loggers.get(name);
ad76d3b
-        if (l != null) {
ad76d3b
-            return l;
ad76d3b
-        }
ad76d3b
-
ad76d3b
-        final org.jboss.logmanager.Logger logger = org.jboss.logmanager.Logger.getLogger(name);
ad76d3b
-        l = new JBossLogManagerLogger(name, logger);
ad76d3b
-        final Logger appearing = loggers.putIfAbsent(name, l);
ad76d3b
-        if (appearing == null) {
ad76d3b
-            return l;
ad76d3b
-        }
ad76d3b
-        return appearing;
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    private static Logger doGetLogger(final String name) {
ad76d3b
-        Logger l = LogContext.getLogContext().getAttachment(name, KEY);
ad76d3b
-        if (l != null) {
ad76d3b
-            return l;
ad76d3b
-        }
ad76d3b
-        final org.jboss.logmanager.Logger logger = org.jboss.logmanager.Logger.getLogger(name);
ad76d3b
-        l = new JBossLogManagerLogger(name, logger);
ad76d3b
-        Logger a = logger.attachIfAbsent(KEY, l);
ad76d3b
-        if (a == null) {
ad76d3b
-            return l;
ad76d3b
-        } else {
ad76d3b
-            return a;
ad76d3b
-        }
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public void clearMdc() {
ad76d3b
-        MDC.clear();
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public Object putMdc(final String key, final Object value) {
ad76d3b
-        return MDC.putObject(key, value);
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public Object getMdc(final String key) {
ad76d3b
-        return MDC.getObject(key);
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public void removeMdc(final String key) {
ad76d3b
-        MDC.removeObject(key);
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public Map<String, Object> getMdcMap() {
ad76d3b
-        // we can re-define the erasure of this map because MDC does not make further use of the copy
ad76d3b
-        return MDC.copyObject();
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public void clearNdc() {
ad76d3b
-        NDC.clear();
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public String getNdc() {
ad76d3b
-        return NDC.get();
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public int getNdcDepth() {
ad76d3b
-        return NDC.getDepth();
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public String popNdc() {
ad76d3b
-        return NDC.pop();
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public String peekNdc() {
ad76d3b
-        return NDC.get();
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public void pushNdc(final String message) {
ad76d3b
-        NDC.push(message);
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    public void setNdcMaxDepth(final int maxDepth) {
ad76d3b
-        NDC.trimTo(maxDepth);
ad76d3b
-    }
ad76d3b
-}
ad76d3b
diff --git a/src/main/java/org/jboss/logging/LoggerProviders.java b/src/main/java/org/jboss/logging/LoggerProviders.java
d21c096
index 584fa79..0154aea 100644
ad76d3b
--- a/src/main/java/org/jboss/logging/LoggerProviders.java
ad76d3b
+++ b/src/main/java/org/jboss/logging/LoggerProviders.java
ad76d3b
@@ -21,7 +21,6 @@ package org.jboss.logging;
ad76d3b
 import java.util.Iterator;
ad76d3b
 import java.util.ServiceConfigurationError;
ad76d3b
 import java.util.ServiceLoader;
ad76d3b
-import java.util.logging.LogManager;
ad76d3b
 
ad76d3b
 final class LoggerProviders {
ad76d3b
     static final String LOGGING_PROVIDER_KEY = "org.jboss.logging.provider";
ad76d3b
@@ -41,9 +40,7 @@ final class LoggerProviders {
ad76d3b
             // Check the system property
ad76d3b
             final String loggerProvider = SecurityActions.getSystemProperty(LOGGING_PROVIDER_KEY);
ad76d3b
             if (loggerProvider != null) {
ad76d3b
-                if ("jboss".equalsIgnoreCase(loggerProvider)) {
ad76d3b
-                    return tryJBossLogManager(cl, "system property");
ad76d3b
-                } else if ("jdk".equalsIgnoreCase(loggerProvider)) {
ad76d3b
+                if ("jdk".equalsIgnoreCase(loggerProvider)) {
ad76d3b
                     return tryJDK("system property");
ad76d3b
                 } else if ("slf4j".equalsIgnoreCase(loggerProvider)) {
ad76d3b
                     return trySlf4j("system property");
ad76d3b
@@ -72,11 +69,6 @@ final class LoggerProviders {
ad76d3b
         }
ad76d3b
 
ad76d3b
         // Finally search the class path
ad76d3b
-        try {
ad76d3b
-            return tryJBossLogManager(cl, null);
ad76d3b
-        } catch (Throwable t) {
ad76d3b
-            // nope...
ad76d3b
-        }
ad76d3b
         try {
ad76d3b
             // only use slf4j if Logback is in use
ad76d3b
             Class.forName("ch.qos.logback.classic.Logger", false, cl);
d21c096
@@ -99,26 +91,6 @@ final class LoggerProviders {
ad76d3b
         return provider;
ad76d3b
     }
ad76d3b
 
ad76d3b
-    private static LoggerProvider tryJBossLogManager(final ClassLoader cl, final String via) throws ClassNotFoundException {
ad76d3b
-        final Class logManagerClass = LogManager.getLogManager().getClass();
d21c096
-        final Class jblLogManager = Class.forName("org.jboss.logmanager.LogManager", false,
d21c096
-                Logger.class.getClassLoader());
d21c096
-        if (logManagerClass == jblLogManager
ad76d3b
-                && Class.forName("org.jboss.logmanager.Logger$AttachmentKey", true, cl).getClassLoader() == logManagerClass
ad76d3b
-                        .getClassLoader()) {
d21c096
-            // We do not have an explicit dependency on org.jboss.logmanager as we could end up with cyclic dependencies.
d21c096
-            // Therefore, we check the modules are named, and if they are we add an explicit reads.
d21c096
-            final Module module = LoggerProviders.class.getModule();
d21c096
-            if (module.isNamed()) {
d21c096
-                module.addReads(jblLogManager.getModule());
d21c096
-            }
ad76d3b
-            final LoggerProvider provider = new JBossLogManagerProvider();
ad76d3b
-            logProvider(provider, via);
ad76d3b
-            return provider;
ad76d3b
-        }
ad76d3b
-        throw new IllegalStateException();
ad76d3b
-    }
ad76d3b
-
ad76d3b
     private static void logProvider(final LoggerProvider provider, final String via) {
ad76d3b
         // Log a debug message indicating which logger we are using
ad76d3b
         final Logger logger = provider.getLogger("org.jboss.logging");
ad76d3b
diff --git a/src/test/java/org/jboss/logging/JBossLogManagerClassPathTestCase.java b/src/test/java/org/jboss/logging/JBossLogManagerClassPathTestCase.java
ad76d3b
deleted file mode 100644
ad76d3b
index f574187..0000000
ad76d3b
--- a/src/test/java/org/jboss/logging/JBossLogManagerClassPathTestCase.java
ad76d3b
+++ /dev/null
ad76d3b
@@ -1,30 +0,0 @@
ad76d3b
-/*
ad76d3b
- * JBoss, Home of Professional Open Source.
ad76d3b
- *
ad76d3b
- * Copyright 2023 Red Hat, Inc.
ad76d3b
- *
ad76d3b
- * Licensed under the Apache License, Version 2.0 (the "License");
ad76d3b
- * you may not use this file except in compliance with the License.
ad76d3b
- * You may obtain a copy of the License at
ad76d3b
- *
ad76d3b
- *  http://www.apache.org/licenses/LICENSE-2.0
ad76d3b
- *
ad76d3b
- * Unless required by applicable law or agreed to in writing, software
ad76d3b
- * distributed under the License is distributed on an "AS IS" BASIS,
ad76d3b
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ad76d3b
- * See the License for the specific language governing permissions and
ad76d3b
- * limitations under the License.
ad76d3b
- */
ad76d3b
-
ad76d3b
-package org.jboss.logging;
ad76d3b
-
ad76d3b
-/**
ad76d3b
- * @author James R. Perkins
ad76d3b
- */
ad76d3b
-public class JBossLogManagerClassPathTestCase extends AbstractClassPathTestCase {
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    Class getLoggerClass() {
ad76d3b
-        return JBossLogManagerLogger.class;
ad76d3b
-    }
ad76d3b
-}
ad76d3b
diff --git a/src/test/java/org/jboss/logging/JBossLogManagerProviderTestCase.java b/src/test/java/org/jboss/logging/JBossLogManagerProviderTestCase.java
ad76d3b
deleted file mode 100644
ad76d3b
index d96ddc3..0000000
ad76d3b
--- a/src/test/java/org/jboss/logging/JBossLogManagerProviderTestCase.java
ad76d3b
+++ /dev/null
ad76d3b
@@ -1,158 +0,0 @@
ad76d3b
-/*
ad76d3b
- * JBoss, Home of Professional Open Source.
ad76d3b
- *
ad76d3b
- * Copyright 2023 Red Hat, Inc.
ad76d3b
- *
ad76d3b
- * Licensed under the Apache License, Version 2.0 (the "License");
ad76d3b
- * you may not use this file except in compliance with the License.
ad76d3b
- * You may obtain a copy of the License at
ad76d3b
- *
ad76d3b
- *  http://www.apache.org/licenses/LICENSE-2.0
ad76d3b
- *
ad76d3b
- * Unless required by applicable law or agreed to in writing, software
ad76d3b
- * distributed under the License is distributed on an "AS IS" BASIS,
ad76d3b
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ad76d3b
- * See the License for the specific language governing permissions and
ad76d3b
- * limitations under the License.
ad76d3b
- */
ad76d3b
-
ad76d3b
-package org.jboss.logging;
ad76d3b
-
ad76d3b
-import java.util.concurrent.BlockingQueue;
ad76d3b
-import java.util.concurrent.LinkedBlockingQueue;
ad76d3b
-import java.util.concurrent.atomic.AtomicBoolean;
ad76d3b
-import java.util.logging.Handler;
ad76d3b
-import java.util.logging.Level;
ad76d3b
-import java.util.logging.LogRecord;
ad76d3b
-
ad76d3b
-import org.jboss.logmanager.LogContext;
ad76d3b
-import org.jboss.logmanager.LogContextSelector;
ad76d3b
-import org.junit.jupiter.api.AfterAll;
ad76d3b
-import org.junit.jupiter.api.AfterEach;
ad76d3b
-import org.junit.jupiter.api.Assertions;
ad76d3b
-import org.junit.jupiter.api.BeforeAll;
ad76d3b
-import org.junit.jupiter.api.BeforeEach;
ad76d3b
-import org.junit.jupiter.api.Test;
ad76d3b
-
ad76d3b
-/**
ad76d3b
- * @author James R. Perkins
ad76d3b
- */
ad76d3b
-public class JBossLogManagerProviderTestCase extends AbstractLoggerTestCase {
ad76d3b
-    private static final LogContextSelector DEFAULT_SELECTOR = LogContext.getLogContextSelector();
ad76d3b
-    private static final AtomicBoolean SET_LOG_MANAGER = new AtomicBoolean(true);
ad76d3b
-
ad76d3b
-    private LogContext logContext;
ad76d3b
-    private TestHandler handler;
ad76d3b
-    private Logger logger;
ad76d3b
-
ad76d3b
-    @BeforeAll
ad76d3b
-    public static void setup() {
ad76d3b
-        SET_LOG_MANAGER.set(System.getProperty("java.util.logging.manager") == null);
ad76d3b
-        if (SET_LOG_MANAGER.get()) {
ad76d3b
-            System.setProperty("java.util.logging.manager", "org.jboss.logmanager.LogManager");
ad76d3b
-        }
ad76d3b
-        System.setProperty("org.jboss.logging.provider", "jboss");
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @AfterAll
ad76d3b
-    public static void tearDown() {
ad76d3b
-        if (SET_LOG_MANAGER.get()) {
ad76d3b
-            System.clearProperty("java.util.logging.manager");
ad76d3b
-        }
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @BeforeEach
ad76d3b
-    public void setupLogContext() {
ad76d3b
-        logContext = LogContext.create();
ad76d3b
-        LogContext.setLogContextSelector(() -> logContext);
ad76d3b
-        logger = Logger.getLogger(getClass());
ad76d3b
-        handler = createHandler(logContext, logger.getName());
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @AfterEach
ad76d3b
-    public void closeLogContext() throws Exception {
ad76d3b
-        logContext.close();
ad76d3b
-        LogContext.setLogContextSelector(DEFAULT_SELECTOR);
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Test
ad76d3b
-    public void testMdc() {
ad76d3b
-        MDC.put("test.key", "value");
ad76d3b
-        Assertions.assertEquals("value", MDC.get("test.key"));
ad76d3b
-        Assertions.assertEquals("value", org.jboss.logmanager.MDC.get("test.key"));
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Test
ad76d3b
-    public void testNdc() {
ad76d3b
-        NDC.push("value1");
ad76d3b
-        NDC.push("value2");
ad76d3b
-        final String expectedValue = "value1.value2";
ad76d3b
-        Assertions.assertEquals(expectedValue, NDC.peek());
ad76d3b
-        Assertions.assertEquals(expectedValue, NDC.get());
ad76d3b
-        Assertions.assertEquals(2, NDC.getDepth());
ad76d3b
-
ad76d3b
-        // Test the log manager values
ad76d3b
-        Assertions.assertEquals(expectedValue, org.jboss.logmanager.NDC.get());
ad76d3b
-        Assertions.assertEquals(2, org.jboss.logmanager.NDC.getDepth());
ad76d3b
-
ad76d3b
-        // Pop the stack
ad76d3b
-        Assertions.assertEquals("value2", NDC.pop());
ad76d3b
-        Assertions.assertEquals(1, NDC.getDepth());
ad76d3b
-        Assertions.assertEquals("value1", NDC.get());
ad76d3b
-        Assertions.assertEquals("value1", org.jboss.logmanager.NDC.get());
ad76d3b
-        Assertions.assertEquals(1, org.jboss.logmanager.NDC.getDepth());
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    void testLog(final Logger.Level level) {
ad76d3b
-        final String msg = String.format("Test log message at %s", level);
ad76d3b
-        logger.log(level, msg);
ad76d3b
-
ad76d3b
-        Assertions.assertTrue(logger.isEnabled(level), String.format("Logger not enabled for level %s", level));
ad76d3b
-        testLog(msg, level);
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    void testLog(final String msg, final Logger.Level level) {
ad76d3b
-        final LogRecord logRecord = handler.queue.poll();
ad76d3b
-        Assertions.assertNotNull(logRecord, String.format("No record found for %s", level));
ad76d3b
-        Assertions.assertEquals(level.name(), logRecord.getLevel().getName());
ad76d3b
-        Assertions.assertEquals(msg, logRecord.getMessage());
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    Logger getLogger() {
ad76d3b
-        return logger;
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    @Override
ad76d3b
-    Class getLoggerClass() {
ad76d3b
-        return JBossLogManagerLogger.class;
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    private static TestHandler createHandler(final LogContext logContext, final String loggerName) {
ad76d3b
-        final TestHandler handler = new TestHandler();
ad76d3b
-        final java.util.logging.Logger julLogger = logContext.getLogger(loggerName);
ad76d3b
-        julLogger.addHandler(handler);
ad76d3b
-        julLogger.setLevel(Level.ALL);
ad76d3b
-        return handler;
ad76d3b
-    }
ad76d3b
-
ad76d3b
-    private static class TestHandler extends Handler {
ad76d3b
-        final BlockingQueue<LogRecord> queue = new LinkedBlockingQueue<>();
ad76d3b
-
ad76d3b
-        @Override
ad76d3b
-        public void publish(final LogRecord record) {
ad76d3b
-            queue.add(record);
ad76d3b
-        }
ad76d3b
-
ad76d3b
-        @Override
ad76d3b
-        public void flush() {
ad76d3b
-        }
ad76d3b
-
ad76d3b
-        @Override
ad76d3b
-        public void close() throws SecurityException {
ad76d3b
-            queue.clear();
ad76d3b
-        }
ad76d3b
-    }
ad76d3b
-}
ad76d3b
-- 
ad76d3b
2.40.1
ad76d3b