This is an automated email from the ASF dual-hosted git repository. mattsicker pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 4b42577e547fcc3edbb322eeb09c9ff37a6a8bd7 Author: Matt Sicker <[email protected]> AuthorDate: Sun Oct 15 18:27:12 2023 -0500 Move ConfigurationFactory::authorizationProvider to AuthorizationProvider::getAuthorizationProvider Signed-off-by: Matt Sicker <[email protected]> --- .../log4j/core/config/ConfigurationFactory.java | 24 ---------------------- .../log4j/core/config/ConfigurationSource.java | 4 +++- .../logging/log4j/core/config/HttpWatcher.java | 4 +++- .../core/filter/MutableThreadContextMapFilter.java | 5 +++-- .../log4j/core/net/UrlConnectionFactory.java | 4 ++-- .../log4j/core/util/AuthorizationProvider.java | 17 +++++++++++++++ .../spring/boot/Log4j2SpringBootLoggingSystem.java | 5 +++-- 7 files changed, 31 insertions(+), 32 deletions(-) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java index f2f9337807..30454eb420 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationFactory.java @@ -22,15 +22,12 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; -import org.apache.logging.log4j.core.util.AuthorizationProvider; -import org.apache.logging.log4j.core.util.BasicAuthorizationProvider; import org.apache.logging.log4j.plugins.Namespace; import org.apache.logging.log4j.plugins.di.ConfigurableInstanceFactory; import org.apache.logging.log4j.plugins.di.Key; import org.apache.logging.log4j.plugins.model.PluginNamespace; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.LoaderUtil; -import org.apache.logging.log4j.util.PropertyEnvironment; import org.apache.logging.log4j.util.PropertyKey; /** @@ -104,27 +101,6 @@ public abstract class ConfigurationFactory extends ConfigurationBuilderFactory { */ private static final String CLASS_PATH_SCHEME = "classpath"; - public static AuthorizationProvider authorizationProvider(final PropertyEnvironment props) { - final String authClass = props.getStringProperty(Log4jPropertyKey.CONFIG_AUTH_PROVIDER); - AuthorizationProvider provider = null; - if (authClass != null) { - try { - final Object obj = LoaderUtil.newInstanceOf(authClass); - if (obj instanceof AuthorizationProvider) { - provider = (AuthorizationProvider) obj; - } else { - LOGGER.warn("{} is not an AuthorizationProvider, using default", obj.getClass().getName()); - } - } catch (final Exception ex) { - LOGGER.warn("Unable to create {}, using default: {}", authClass, ex.getMessage()); - } - } - if (provider == null) { - provider = new BasicAuthorizationProvider(props); - } - return provider; - } - protected abstract String[] getSupportedTypes(); protected String getTestPrefix() { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java index 73ee81c508..08c33868e8 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ConfigurationSource.java @@ -43,6 +43,7 @@ import org.apache.logging.log4j.core.util.Loader; import org.apache.logging.log4j.core.util.Source; import org.apache.logging.log4j.util.LoaderUtil; import org.apache.logging.log4j.util.PropertiesUtil; +import org.apache.logging.log4j.util.PropertyEnvironment; /** * Represents the source for the logging configuration. @@ -328,7 +329,8 @@ public class ConfigurationSource { final URLConnection urlConnection = url.openConnection(); // A "jar:" URL file remains open after the stream is closed, so do not cache it. urlConnection.setUseCaches(false); - final AuthorizationProvider provider = ConfigurationFactory.authorizationProvider(PropertiesUtil.getProperties()); + final PropertyEnvironment props = PropertiesUtil.getProperties(); + final AuthorizationProvider provider = AuthorizationProvider.getAuthorizationProvider(props); provider.addAuthorization(urlConnection); if (url.getProtocol().equals(HTTPS)) { final SslConfiguration sslConfiguration = SslConfigurationFactory.getSslConfiguration(); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/HttpWatcher.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/HttpWatcher.java index ac42a46994..727e5cc481 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/HttpWatcher.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/HttpWatcher.java @@ -36,6 +36,7 @@ import org.apache.logging.log4j.plugins.Plugin; import org.apache.logging.log4j.plugins.PluginAliases; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.PropertiesUtil; +import org.apache.logging.log4j.util.PropertyEnvironment; /** * @@ -79,7 +80,8 @@ public class HttpWatcher extends AbstractWatcher { } try { url = source.getURI().toURL(); - authorizationProvider = ConfigurationFactory.authorizationProvider(PropertiesUtil.getProperties()); + final PropertyEnvironment props = PropertiesUtil.getProperties(); + authorizationProvider = AuthorizationProvider.getAuthorizationProvider(props); } catch (final MalformedURLException ex) { throw new IllegalArgumentException("Invalid URL for HttpWatcher " + source.getURI(), ex); } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java index 91d8a7f1ae..8b63114338 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java @@ -35,7 +35,6 @@ import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.ConfigurationException; -import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.config.ConfigurationScheduler; import org.apache.logging.log4j.core.config.plugins.PluginConfiguration; import org.apache.logging.log4j.core.filter.mutable.KeyValuePairConfig; @@ -53,6 +52,7 @@ import org.apache.logging.log4j.plugins.PluginAttribute; import org.apache.logging.log4j.plugins.PluginFactory; import org.apache.logging.log4j.util.PerformanceSensitive; import org.apache.logging.log4j.util.PropertiesUtil; +import org.apache.logging.log4j.util.PropertyEnvironment; /** * Filter based on a value in the Thread Context Map (MDC). @@ -247,8 +247,9 @@ public final class MutableThreadContextMapFilter extends AbstractFilter { return new MutableThreadContextMapFilter(new NoOpFilter(), null, 0, null, getOnMatch(), getOnMismatch(), configuration); } + final PropertyEnvironment props = PropertiesUtil.getProperties(); final AuthorizationProvider authorizationProvider = - ConfigurationFactory.authorizationProvider(PropertiesUtil.getProperties()); + AuthorizationProvider.getAuthorizationProvider(props); Filter filter; if (pollInterval <= 0) { final ConfigResult result = getConfig(source, authorizationProvider); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java index 79e3f5c00a..8248aae9cb 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/UrlConnectionFactory.java @@ -27,7 +27,6 @@ import java.util.List; import javax.net.ssl.HttpsURLConnection; -import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.net.ssl.LaxHostnameVerifier; import org.apache.logging.log4j.core.net.ssl.SslConfiguration; import org.apache.logging.log4j.core.net.ssl.SslConfigurationFactory; @@ -116,7 +115,8 @@ public class UrlConnectionFactory { public static URLConnection createConnection(final URL url) throws IOException { URLConnection urlConnection = null; if (url.getProtocol().equals(HTTPS) || url.getProtocol().equals(HTTP)) { - final AuthorizationProvider provider = ConfigurationFactory.authorizationProvider(PropertiesUtil.getProperties()); + final PropertyEnvironment props = PropertiesUtil.getProperties(); + final AuthorizationProvider provider = AuthorizationProvider.getAuthorizationProvider(props); urlConnection = createConnection(url, 0, SslConfigurationFactory.getSslConfiguration(), provider); } else { urlConnection = url.openConnection(); diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/AuthorizationProvider.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/AuthorizationProvider.java index 9075254f7b..f1f27823c6 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/AuthorizationProvider.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/AuthorizationProvider.java @@ -18,10 +18,27 @@ package org.apache.logging.log4j.core.util; import java.net.URLConnection; +import org.apache.logging.log4j.core.impl.Log4jPropertyKey; +import org.apache.logging.log4j.status.StatusLogger; +import org.apache.logging.log4j.util.LoaderUtil; +import org.apache.logging.log4j.util.PropertyEnvironment; + /** * Interface to be implemented to add an Authorization header to an HTTP request. */ public interface AuthorizationProvider { void addAuthorization(URLConnection urlConnection); + + static AuthorizationProvider getAuthorizationProvider(final PropertyEnvironment properties) { + final String authClass = properties.getStringProperty(Log4jPropertyKey.CONFIG_AUTH_PROVIDER); + if (authClass != null) { + try { + return LoaderUtil.newInstanceOfUnchecked(authClass, AuthorizationProvider.class); + } catch (final RuntimeException | LinkageError e) { + StatusLogger.getLogger().warn("Unable to create {}, using default", authClass, e); + } + } + return new BasicAuthorizationProvider(properties); + } } diff --git a/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/Log4j2SpringBootLoggingSystem.java b/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/Log4j2SpringBootLoggingSystem.java index 7d5d523f26..e4f03c6efb 100644 --- a/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/Log4j2SpringBootLoggingSystem.java +++ b/log4j-spring-boot/src/main/java/org/apache/logging/log4j/spring/boot/Log4j2SpringBootLoggingSystem.java @@ -36,7 +36,6 @@ import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.AbstractConfiguration; import org.apache.logging.log4j.core.config.Configuration; -import org.apache.logging.log4j.core.config.ConfigurationFactory; import org.apache.logging.log4j.core.config.ConfigurationSource; import org.apache.logging.log4j.core.config.composite.CompositeConfiguration; import org.apache.logging.log4j.core.impl.Log4jPropertyKey; @@ -47,6 +46,7 @@ import org.apache.logging.log4j.core.util.AuthorizationProvider; import org.apache.logging.log4j.core.util.FileUtils; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.PropertiesUtil; +import org.apache.logging.log4j.util.PropertyEnvironment; import org.springframework.boot.logging.LogFile; import org.springframework.boot.logging.LoggingInitializationContext; import org.springframework.boot.logging.LoggingSystem; @@ -227,7 +227,8 @@ public class Log4j2SpringBootLoggingSystem extends Log4J2LoggingSystem { } private ConfigurationSource getConfigurationSource(final URL url) throws IOException, URISyntaxException { - final AuthorizationProvider provider = ConfigurationFactory.authorizationProvider(PropertiesUtil.getProperties()); + final PropertyEnvironment props = PropertiesUtil.getProperties(); + final AuthorizationProvider provider = AuthorizationProvider.getAuthorizationProvider(props); final SslConfiguration sslConfiguration = url.getProtocol().equals(HTTPS) ? SslConfigurationFactory.getSslConfiguration() : null; final URLConnection urlConnection = UrlConnectionFactory.createConnection(url, 0, sslConfiguration,
