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,

Reply via email to