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 fe1c85ffa6bf0e048d4293f04477d9414da44cf8
Author: Matt Sicker <[email protected]>
AuthorDate: Sun Oct 15 19:30:04 2023 -0500

    Remove cached SslConfigurationFactory::getSslConfiguration
    
    Signed-off-by: Matt Sicker <[email protected]>
---
 .../log4j/core/net/UrlConnectionFactoryTest.java   |  4 +--
 .../core/net/ssl/SslConfigurationFactoryTest.java  |  8 ++---
 .../log4j/core/config/ConfigurationSource.java     |  2 +-
 .../logging/log4j/core/config/HttpWatcher.java     | 21 ++++++++-----
 .../core/filter/MutableThreadContextMapFilter.java | 35 +++++++++++++++-------
 .../log4j/core/net/UrlConnectionFactory.java       | 12 ++++----
 .../core/net/ssl/SslConfigurationFactory.java      | 12 +-------
 .../core/util/internal/HttpInputStreamUtil.java    | 25 +++++-----------
 .../spring/boot/Log4j2SpringBootLoggingSystem.java |  7 ++---
 9 files changed, 63 insertions(+), 63 deletions(-)

diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/UrlConnectionFactoryTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/UrlConnectionFactoryTest.java
index 39e4a330a7..534d4c6136 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/UrlConnectionFactoryTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/UrlConnectionFactoryTest.java
@@ -37,6 +37,7 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.ConfigurationSource;
 import org.apache.logging.log4j.core.config.ConfigurationSourceTest;
+import org.apache.logging.log4j.util.PropertiesUtil;
 import org.eclipse.jetty.http.HttpHeader;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
@@ -73,7 +74,6 @@ public class UrlConnectionFactoryTest {
     private static Server server;
     private static final Base64.Decoder decoder = Base64.getDecoder();
     private static int port;
-    private static final int BUF_SIZE = 1024;
 
     @BeforeAll
     public static void startServer() throws Exception {
@@ -134,7 +134,7 @@ public class UrlConnectionFactoryTest {
 
     private int verifyNotModified(final URI uri, final long 
lastModifiedMillis) throws Exception {
         final HttpURLConnection urlConnection = 
UrlConnectionFactory.createConnection(uri.toURL(),
-                lastModifiedMillis, null, null);
+                lastModifiedMillis, null, null, 
PropertiesUtil.getProperties());
         urlConnection.connect();
 
         try {
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactoryTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactoryTest.java
index 707f4c8e50..9c691b4475 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactoryTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactoryTest.java
@@ -43,13 +43,13 @@ public class SslConfigurationFactoryTest {
         final Properties props = new Properties();
         final PropertiesUtil util = new PropertiesUtil(props);
         // No keystore and truststore -> no SslConfiguration
-        SslConfiguration sslConfiguration = 
SslConfigurationFactory.createSslConfiguration(util);
+        SslConfiguration sslConfiguration = 
SslConfigurationFactory.getSslConfiguration(util);
         assertNull(sslConfiguration);
         // Only keystore
         props.clear();
         addKeystoreConfiguration(props);
         util.reload();
-        sslConfiguration = 
SslConfigurationFactory.createSslConfiguration(util);
+        sslConfiguration = SslConfigurationFactory.getSslConfiguration(util);
         assertNotNull(sslConfiguration);
         assertNotNull(sslConfiguration.getKeyStoreConfig());
         assertNull(sslConfiguration.getTrustStoreConfig());
@@ -57,7 +57,7 @@ public class SslConfigurationFactoryTest {
         props.clear();
         addTruststoreConfiguration(props);
         util.reload();
-        sslConfiguration = 
SslConfigurationFactory.createSslConfiguration(util);
+        sslConfiguration = SslConfigurationFactory.getSslConfiguration(util);
         assertNotNull(sslConfiguration);
         assertNull(sslConfiguration.getKeyStoreConfig());
         assertNotNull(sslConfiguration.getTrustStoreConfig());
@@ -66,7 +66,7 @@ public class SslConfigurationFactoryTest {
         addKeystoreConfiguration(props);
         addTruststoreConfiguration(props);
         util.reload();
-        sslConfiguration = 
SslConfigurationFactory.createSslConfiguration(util);
+        sslConfiguration = SslConfigurationFactory.getSslConfiguration(util);
         assertNotNull(sslConfiguration);
         assertNotNull(sslConfiguration.getKeyStoreConfig());
         assertNotNull(sslConfiguration.getTrustStoreConfig());
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 08c33868e8..75e1c05295 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
@@ -333,7 +333,7 @@ public class ConfigurationSource {
             final AuthorizationProvider provider = 
AuthorizationProvider.getAuthorizationProvider(props);
             provider.addAuthorization(urlConnection);
             if (url.getProtocol().equals(HTTPS)) {
-                final SslConfiguration sslConfiguration = 
SslConfigurationFactory.getSslConfiguration();
+                final SslConfiguration sslConfiguration = 
SslConfigurationFactory.getSslConfiguration(props);
                 if (sslConfiguration != null) {
                     ((HttpsURLConnection) 
urlConnection).setSSLSocketFactory(sslConfiguration.getSslSocketFactory());
                     if (!sslConfiguration.isVerifyHostName()) {
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 727e5cc481..0d7493c356 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
@@ -17,6 +17,7 @@
 package org.apache.logging.log4j.core.config;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
@@ -35,7 +36,6 @@ import org.apache.logging.log4j.plugins.Namespace;
 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;
 
 /**
@@ -48,8 +48,9 @@ public class HttpWatcher extends AbstractWatcher {
 
     private final Logger LOGGER = StatusLogger.getLogger();
 
+    private final PropertyEnvironment properties;
     private final SslConfiguration sslConfiguration;
-    private AuthorizationProvider authorizationProvider;
+    private final AuthorizationProvider authorizationProvider;
     private URL url;
     private volatile long lastModifiedMillis;
     private static final String HTTP = "http";
@@ -58,7 +59,9 @@ public class HttpWatcher extends AbstractWatcher {
     public HttpWatcher(final Configuration configuration, final Reconfigurable 
reconfigurable,
             final List<ConfigurationListener> configurationListeners, final 
long lastModifiedMillis) {
         super(configuration, reconfigurable, configurationListeners);
-        sslConfiguration = SslConfigurationFactory.getSslConfiguration();
+        properties = configuration.getContextProperties();
+        sslConfiguration = 
SslConfigurationFactory.getSslConfiguration(properties);
+        authorizationProvider = 
AuthorizationProvider.getAuthorizationProvider(properties);
         this.lastModifiedMillis = lastModifiedMillis;
     }
 
@@ -80,8 +83,6 @@ public class HttpWatcher extends AbstractWatcher {
         }
         try {
             url = source.getURI().toURL();
-            final PropertyEnvironment props = PropertiesUtil.getProperties();
-            authorizationProvider = 
AuthorizationProvider.getAuthorizationProvider(props);
         } catch (final MalformedURLException ex) {
             throw new IllegalArgumentException("Invalid URL for HttpWatcher " 
+ source.getURI(), ex);
         }
@@ -101,7 +102,8 @@ public class HttpWatcher extends AbstractWatcher {
     private boolean refreshConfiguration() {
         try {
             final LastModifiedSource source = new 
LastModifiedSource(url.toURI(), lastModifiedMillis);
-            final HttpInputStreamUtil.Result result = 
HttpInputStreamUtil.getInputStream(source, authorizationProvider);
+            final HttpInputStreamUtil.Result result = 
HttpInputStreamUtil.getInputStream(
+                    source, properties, authorizationProvider, 
sslConfiguration);
             switch (result.getStatus()) {
                 case NOT_MODIFIED: {
                     LOGGER.debug("Configuration Not Modified");
@@ -110,8 +112,11 @@ public class HttpWatcher extends AbstractWatcher {
                 case SUCCESS: {
                     final ConfigurationSource configSource = 
getConfiguration().getConfigurationSource();
                     try {
-                        
configSource.setData(HttpInputStreamUtil.readStream(result.getInputStream()));
-                        
configSource.setModifiedMillis(source.getLastModified());
+                        final InputStream is = result.getInputStream();
+                        configSource.setData(is.readAllBytes());
+                        final long lastModified = source.getLastModified();
+                        configSource.setModifiedMillis(lastModified);
+                        lastModifiedMillis = lastModified;
                         LOGGER.debug("Content was modified for {}", 
url.toString());
                         return true;
                     } catch (final IOException e) {
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 8b63114338..86ca007b8a 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
@@ -30,6 +30,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.Logger;
@@ -38,7 +39,8 @@ import 
org.apache.logging.log4j.core.config.ConfigurationException;
 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;
-import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
+import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
+import org.apache.logging.log4j.core.net.ssl.SslConfigurationFactory;
 import org.apache.logging.log4j.core.util.AuthorizationProvider;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.core.util.internal.HttpInputStreamUtil;
@@ -51,7 +53,6 @@ import org.apache.logging.log4j.plugins.PluginAliases;
 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;
 
 /**
@@ -72,6 +73,7 @@ public final class MutableThreadContextMapFilter extends 
AbstractFilter {
     private final ConfigurationScheduler scheduler;
     private final LastModifiedSource source;
     private final AuthorizationProvider authorizationProvider;
+    private final Configuration configuration;
     private final List<FilterConfigUpdateListener> listeners = new 
ArrayList<>();
     private ScheduledFuture<?> future = null;
 
@@ -84,6 +86,7 @@ public final class MutableThreadContextMapFilter extends 
AbstractFilter {
         this.source = source;
         this.scheduler = configuration.getScheduler();
         this.authorizationProvider = authorizationProvider;
+        this.configuration = configuration;
     }
 
     @Override
@@ -199,7 +202,7 @@ public final class MutableThreadContextMapFilter extends 
AbstractFilter {
     }
 
     public static class Builder extends AbstractFilterBuilder<Builder>
-            implements 
org.apache.logging.log4j.core.util.Builder<MutableThreadContextMapFilter> {
+            implements 
org.apache.logging.log4j.plugins.util.Builder<MutableThreadContextMapFilter> {
         @PluginAttribute
         private String configLocation;
 
@@ -247,16 +250,22 @@ public final class MutableThreadContextMapFilter extends 
AbstractFilter {
                 return new MutableThreadContextMapFilter(new NoOpFilter(), 
null, 0,
                         null, getOnMatch(), getOnMismatch(), configuration);
             }
-            final PropertyEnvironment props = PropertiesUtil.getProperties();
+            final PropertyEnvironment props = 
configuration.getContextProperties();
             final AuthorizationProvider authorizationProvider =
                     AuthorizationProvider.getAuthorizationProvider(props);
+            final SslConfiguration sslConfiguration = 
SslConfigurationFactory.getSslConfiguration(props);
             Filter filter;
             if (pollInterval <= 0) {
-                final ConfigResult result = getConfig(source, 
authorizationProvider);
+                final ConfigResult result = getConfig(source, 
authorizationProvider, props, sslConfiguration);
                 if (result.status == Status.SUCCESS) {
                     if (result.pairs.length > 0) {
-                        filter = 
ThreadContextMapFilter.createFilter(result.pairs, "or",
-                                getOnMatch(), getOnMismatch());
+                        filter = ThreadContextMapFilter.newBuilder()
+                                .setPairs(result.pairs)
+                                .setOperator("or")
+                                .setOnMatch(getOnMatch())
+                                .setOnMismatch(getOnMismatch())
+                                
.setContextDataInjector(configuration.getComponent(ContextDataInjector.KEY))
+                                .get();
                     } else {
                         filter = new NoOpFilter();
                     }
@@ -282,14 +291,16 @@ public final class MutableThreadContextMapFilter extends 
AbstractFilter {
 
         @Override
         public void run() {
-            final ConfigResult result = getConfig(source, 
authorizationProvider);
+            final PropertyEnvironment properties = 
configuration.getContextProperties();
+            final SslConfiguration sslConfiguration = 
SslConfigurationFactory.getSslConfiguration(properties);
+            final ConfigResult result = getConfig(source, 
authorizationProvider, properties, sslConfiguration);
             if (result.status == Status.SUCCESS) {
                 filter = ThreadContextMapFilter.newBuilder()
                         .setPairs(result.pairs)
                         .setOperator("or")
                         .setOnMatch(getOnMatch())
                         .setOnMismatch(getOnMismatch())
-                        
.setContextDataInjector(ContextDataInjectorFactory.createInjector())
+                        
.setContextDataInjector(configuration.getComponent(ContextDataInjector.KEY))
                         .get();
                 LOGGER.info("Filter configuration was updated: {}", 
filter.toString());
                 for (FilterConfigUpdateListener listener : listeners) {
@@ -327,7 +338,9 @@ public final class MutableThreadContextMapFilter extends 
AbstractFilter {
     }
 
     private static ConfigResult getConfig(final LastModifiedSource source,
-            final AuthorizationProvider authorizationProvider) {
+                                          final AuthorizationProvider 
authorizationProvider,
+                                          final PropertyEnvironment props,
+                                          final SslConfiguration 
sslConfiguration) {
         final File inputFile = source.getFile();
         InputStream inputStream = null;
         HttpInputStreamUtil.Result result = null;
@@ -347,7 +360,7 @@ public final class MutableThreadContextMapFilter extends 
AbstractFilter {
             }
         } else if (source.getURI() != null) {
             try {
-                result = HttpInputStreamUtil.getInputStream(source, 
authorizationProvider);
+                result = HttpInputStreamUtil.getInputStream(source, props, 
authorizationProvider, sslConfiguration);
                 inputStream = result.getInputStream();
             } catch (ConfigurationException ex) {
                 result = new HttpInputStreamUtil.Result(Status.ERROR);
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 8248aae9cb..bb5a448086 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
@@ -58,9 +58,10 @@ public class UrlConnectionFactory {
     public static final String ALLOWED_PROTOCOLS = 
"log4j2.Configuration.allowedProtocols";
 
     public static <T extends URLConnection> T createConnection(final URL url, 
final long lastModifiedMillis,
-            final SslConfiguration sslConfiguration, final 
AuthorizationProvider authorizationProvider)
+                                                               final 
SslConfiguration sslConfiguration,
+                                                               final 
AuthorizationProvider authorizationProvider,
+                                                               final 
PropertyEnvironment props)
         throws IOException {
-        final PropertyEnvironment props = PropertiesUtil.getProperties();
         final List<String> allowed = 
Arrays.asList(Strings.splitList(toRootLowerCase(props
                 .getStringProperty(ALLOWED_PROTOCOLS, 
DEFAULT_ALLOWED_PROTOCOLS))));
         if (allowed.size() == 1 && NO_PROTOCOLS.equals(allowed.get(0))) {
@@ -73,7 +74,7 @@ public class UrlConnectionFactory {
         if (!allowed.contains(protocol)) {
             throw new ProtocolException("Protocol " + protocol + " has not 
been enabled as an allowed protocol");
         }
-        URLConnection urlConnection;
+        final URLConnection urlConnection;
         if (url.getProtocol().equals(HTTP) || url.getProtocol().equals(HTTPS)) 
{
             final HttpURLConnection httpURLConnection = (HttpURLConnection) 
url.openConnection();
             if (authorizationProvider != null) {
@@ -113,11 +114,12 @@ public class UrlConnectionFactory {
     }
 
     public static URLConnection createConnection(final URL url) throws 
IOException {
-        URLConnection urlConnection = null;
+        final URLConnection urlConnection;
         if (url.getProtocol().equals(HTTPS) || url.getProtocol().equals(HTTP)) 
{
             final PropertyEnvironment props = PropertiesUtil.getProperties();
             final AuthorizationProvider provider = 
AuthorizationProvider.getAuthorizationProvider(props);
-            urlConnection = createConnection(url, 0, 
SslConfigurationFactory.getSslConfiguration(), provider);
+            final SslConfiguration sslConfiguration = 
SslConfigurationFactory.getSslConfiguration(props);
+            urlConnection = createConnection(url, 0, sslConfiguration, 
provider, props);
         } else {
             urlConnection = url.openConnection();
             if (urlConnection instanceof JarURLConnection) {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactory.java
index d7471852a3..cacd929eb3 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/SslConfigurationFactory.java
@@ -19,8 +19,6 @@ package org.apache.logging.log4j.core.net.ssl;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.impl.Log4jPropertyKey;
 import org.apache.logging.log4j.status.StatusLogger;
-import org.apache.logging.log4j.util.Lazy;
-import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.PropertyEnvironment;
 
 /**
@@ -30,12 +28,7 @@ public class SslConfigurationFactory {
 
     private static final Logger LOGGER = StatusLogger.getLogger();
 
-    private static final Lazy<SslConfiguration> SSL_CONFIGURATION = 
Lazy.lazy(() -> {
-        final PropertyEnvironment props = PropertiesUtil.getProperties();
-        return createSslConfiguration(props);
-    });
-
-    static SslConfiguration createSslConfiguration(final PropertyEnvironment 
props) {
+    public static SslConfiguration getSslConfiguration(final 
PropertyEnvironment props) {
         KeyStoreConfiguration keyStoreConfiguration = null;
         TrustStoreConfiguration trustStoreConfiguration = null;
         String location = 
props.getStringProperty(Log4jPropertyKey.TRANSPORT_SECURITY_TRUST_STORE_LOCATION);
@@ -82,7 +75,4 @@ public class SslConfigurationFactory {
         return null;
     }
 
-    public static SslConfiguration getSslConfiguration() {
-        return SSL_CONFIGURATION.value();
-    }
 }
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/HttpInputStreamUtil.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/HttpInputStreamUtil.java
index 3046252201..3ba82c4193 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/HttpInputStreamUtil.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/HttpInputStreamUtil.java
@@ -17,7 +17,6 @@
 package org.apache.logging.log4j.core.util.internal;
 
 import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.HttpURLConnection;
@@ -25,9 +24,10 @@ import java.net.HttpURLConnection;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.config.ConfigurationException;
 import org.apache.logging.log4j.core.net.UrlConnectionFactory;
-import org.apache.logging.log4j.core.net.ssl.SslConfigurationFactory;
+import org.apache.logging.log4j.core.net.ssl.SslConfiguration;
 import org.apache.logging.log4j.core.util.AuthorizationProvider;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertyEnvironment;
 
 /**
  * Utility method for reading data from an HTTP InputStream.
@@ -39,15 +39,16 @@ public final class HttpInputStreamUtil {
     private static final int NOT_AUTHORIZED = 401;
     private static final int NOT_FOUND = 404;
     private static final int OK = 200;
-    private static final int BUF_SIZE = 1024;
 
     public static Result getInputStream(final LastModifiedSource source,
-            final AuthorizationProvider authorizationProvider) {
+                                        final PropertyEnvironment props,
+                                        final AuthorizationProvider 
authorizationProvider,
+                                        final SslConfiguration 
sslConfiguration) {
         final Result result = new Result();
         try {
             final long lastModified = source.getLastModified();
             final HttpURLConnection connection = 
UrlConnectionFactory.createConnection(source.getURI().toURL(),
-                    lastModified, 
SslConfigurationFactory.getSslConfiguration(), authorizationProvider);
+                    lastModified, sslConfiguration, authorizationProvider, 
props);
             connection.connect();
             try {
                 final int code = connection.getResponseCode();
@@ -68,12 +69,12 @@ public final class HttpInputStreamUtil {
                             LOGGER.debug("Content was modified for {}. 
previous lastModified: {}, new lastModified: {}",
                                     source.toString(), lastModified, 
connection.getLastModified());
                             result.status = Status.SUCCESS;
-                            result.inputStream = new 
ByteArrayInputStream(readStream(is));
+                            result.inputStream = new 
ByteArrayInputStream(is.readAllBytes());
                             return result;
                         } catch (final IOException e) {
                             try (final InputStream es = 
connection.getErrorStream()) {
                                 LOGGER.info("Error accessing configuration at 
{}: {}", source.toString(),
-                                        readStream(es));
+                                        es.readAllBytes());
                             } catch (final IOException ioe) {
                                 LOGGER.error("Error accessing configuration at 
{}: {}", source.toString(),
                                         e.getMessage());
@@ -102,16 +103,6 @@ public final class HttpInputStreamUtil {
         }
     }
 
-    public static byte[] readStream(final InputStream is) throws IOException {
-        final ByteArrayOutputStream result = new ByteArrayOutputStream();
-        final byte[] buffer = new byte[BUF_SIZE];
-        int length;
-        while ((length = is.read(buffer)) != -1) {
-            result.write(buffer, 0, length);
-        }
-        return result.toByteArray();
-    }
-
     public static class Result {
 
         private InputStream inputStream;
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 e4f03c6efb..d6e68d0bc5 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
@@ -31,7 +31,6 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Properties;
 
-import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.LoggerContext;
 import org.apache.logging.log4j.core.config.AbstractConfiguration;
@@ -230,9 +229,9 @@ public class Log4j2SpringBootLoggingSystem extends 
Log4J2LoggingSystem {
         final PropertyEnvironment props = PropertiesUtil.getProperties();
         final AuthorizationProvider provider = 
AuthorizationProvider.getAuthorizationProvider(props);
         final SslConfiguration sslConfiguration = 
url.getProtocol().equals(HTTPS)
-                ? SslConfigurationFactory.getSslConfiguration() : null;
+                ? SslConfigurationFactory.getSslConfiguration(props) : null;
         final URLConnection urlConnection = 
UrlConnectionFactory.createConnection(url, 0, sslConfiguration,
-                provider);
+                provider, props);
 
         final File file = FileUtils.fileFromUri(url.toURI());
         try {
@@ -248,7 +247,7 @@ public class Log4j2SpringBootLoggingSystem extends 
Log4J2LoggingSystem {
     }
 
     private LoggerContext getLoggerContext() {
-        return (LoggerContext) LogManager.getContext(false);
+        return LoggerContext.getContext(false);
     }
 
     @Order(PRECEDENCE)

Reply via email to