Thanks Matt. Moving the method(s) felt natural and the best solution once I had finished the initial refactoring.
Gary On Tue, Aug 15, 2017 at 5:41 PM, Matt Sicker <boa...@gmail.com> wrote: > The ConfigurationSource factory method is a great idea. That class is > rather unintuitive in how to create instances that work for various > scenarios. > > On 15 August 2017 at 17:52, <ggreg...@apache.org> wrote: > > > Repository: logging-log4j2 > > Updated Branches: > > refs/heads/master e2f9d5ed4 -> 741be7fc6 > > > > > > [LOG4J2-2015] Allow KeyStoreConfiguration and TrustStoreConfiguration to > > find files as resources. > > > > Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo > > Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/ > > commit/741be7fc > > Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/ > 741be7fc > > Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/ > 741be7fc > > > > Branch: refs/heads/master > > Commit: 741be7fc61529147969afa4bd05cebc6cdac9c91 > > Parents: e2f9d5e > > Author: Gary Gregory <garydgreg...@gmail.com> > > Authored: Tue Aug 15 16:52:19 2017 -0600 > > Committer: Gary Gregory <garydgreg...@gmail.com> > > Committed: Tue Aug 15 16:52:19 2017 -0600 > > > > ---------------------------------------------------------------------- > > ...ecureSocketAppenderConnectPostStartupIT.java | 2 +- > > .../log4j/core/config/ConfigurationFactory.java | 88 > ++------------------ > > .../log4j/core/config/ConfigurationSource.java | 76 +++++++++++++++++ > > .../net/ssl/AbstractKeyStoreConfiguration.java | 11 ++- > > .../core/net/ssl/KeyStoreConfiguration.java | 4 +- > > .../core/net/ssl/TrustStoreConfiguration.java | 4 +- > > .../core/net/ssl/SslConfigurationTest.java | 31 +++++-- > > .../log4j/core/net/ssl/TestConstants.java | 10 ++- > > src/changes/changes.xml | 3 + > > 9 files changed, 133 insertions(+), 96 deletions(-) > > ---------------------------------------------------------------------- > > > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core-its/src/test/java/org/apache/logging/ > > log4j/core/appender/net/SecureSocketAppenderConnectPostStartupIT.java > > ---------------------------------------------------------------------- > > diff --git a/log4j-core-its/src/test/java/org/apache/logging/log4j/ > > core/appender/net/SecureSocketAppenderConnectPostStartupIT.java > > b/log4j-core-its/src/test/java/org/apache/logging/log4j/ > core/appender/net/ > > SecureSocketAppenderConnectPostStartupIT.java > > index 18fe5c2..c6dc1cd 100644 > > --- a/log4j-core-its/src/test/java/org/apache/logging/log4j/ > > core/appender/net/SecureSocketAppenderConnectPostStartupIT.java > > +++ b/log4j-core-its/src/test/java/org/apache/logging/log4j/ > > core/appender/net/SecureSocketAppenderConnectPostStartupIT.java > > @@ -55,7 +55,7 @@ public class SecureSocketAppenderConnectPostStartupIT > > extends AbstractSocketAppe > > > > @Before > > public void initServerSocketFactory() throws > > StoreConfigurationException { > > - sslConfiguration = SslConfigurationTest. > > createTestSslConfiguration(); > > + sslConfiguration = SslConfigurationTest. > > createTestSslConfigurationResources(); > > } > > > > @Test > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ > > ConfigurationFactory.java > > ---------------------------------------------------------------------- > > 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 adefd31..3404a55 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 > > @@ -19,11 +19,7 @@ package org.apache.logging.log4j.core.config; > > import java.io.File; > > import java.io.FileInputStream; > > import java.io.FileNotFoundException; > > -import java.io.IOException; > > -import java.io.InputStream; > > -import java.net.MalformedURLException; > > import java.net.URI; > > -import java.net.URISyntaxException; > > import java.net.URL; > > import java.util.ArrayList; > > import java.util.Collection; > > @@ -43,7 +39,6 @@ import org.apache.logging.log4j.core. > > config.plugins.util.PluginType; > > import org.apache.logging.log4j.core.lookup.Interpolator; > > import org.apache.logging.log4j.core.lookup.StrSubstitutor; > > import org.apache.logging.log4j.core.util.FileUtils; > > -import org.apache.logging.log4j.core.util.Loader; > > import org.apache.logging.log4j.core.util.NetUtils; > > import org.apache.logging.log4j.core.util.ReflectionUtil; > > import org.apache.logging.log4j.status.StatusLogger; > > @@ -239,7 +234,7 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > return null; > > } > > if (configLocation != null) { > > - final ConfigurationSource source = getInputFromUri( > > configLocation); > > + final ConfigurationSource source = > > ConfigurationSource.fromUri(configLocation); > > if (source != null) { > > return getConfiguration(loggerContext, source); > > } > > @@ -266,7 +261,7 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > } > > if (isClassLoaderUri(configLocation)) { > > final String path = extractClassLoaderUriPath( > > configLocation); > > - final ConfigurationSource source = > getInputFromResource(path, > > loader); > > + final ConfigurationSource source = ConfigurationSource. > fromResource(path, > > loader); > > if (source != null) { > > final Configuration configuration = getConfiguration( > loggerContext, > > source); > > if (configuration != null) { > > @@ -277,43 +272,7 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > return getConfiguration(loggerContext, name, configLocation); > > } > > > > - /** > > - * Loads the configuration from a URI. > > - * @param configLocation A URI representing the location of the > > configuration. > > - * @return The ConfigurationSource for the configuration. > > - */ > > - protected ConfigurationSource getInputFromUri(final URI > > configLocation) { > > - final File configFile = FileUtils.fileFromUri(configLocation); > > - if (configFile != null && configFile.exists() && > > configFile.canRead()) { > > - try { > > - return new ConfigurationSource(new > > FileInputStream(configFile), configFile); > > - } catch (final FileNotFoundException ex) { > > - LOGGER.error("Cannot locate file {}", > > configLocation.getPath(), ex); > > - } > > - } > > - if (isClassLoaderUri(configLocation)) { > > - final ClassLoader loader = LoaderUtil. > > getThreadContextClassLoader(); > > - final String path = extractClassLoaderUriPath( > > configLocation); > > - final ConfigurationSource source = > getInputFromResource(path, > > loader); > > - if (source != null) { > > - return source; > > - } > > - } > > - if (!configLocation.isAbsolute()) { // LOG4J2-704 avoid > confusing > > error message thrown by uri.toURL() > > - LOGGER.error("File not found in file system or classpath: > > {}", configLocation.toString()); > > - return null; > > - } > > - try { > > - return new ConfigurationSource(configLocation.toURL(). > openStream(), > > configLocation.toURL()); > > - } catch (final MalformedURLException ex) { > > - LOGGER.error("Invalid URL {}", configLocation.toString(), > ex); > > - } catch (final Exception ex) { > > - LOGGER.error("Unable to access {}", > > configLocation.toString(), ex); > > - } > > - return null; > > - } > > - > > - private static boolean isClassLoaderUri(final URI uri) { > > + static boolean isClassLoaderUri(final URI uri) { > > if (uri == null) { > > return false; > > } > > @@ -321,7 +280,7 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > return scheme == null || scheme.equals(CLASS_LOADER_SCHEME) || > > scheme.equals(CLASS_PATH_SCHEME); > > } > > > > - private static String extractClassLoaderUriPath(final URI uri) { > > + static String extractClassLoaderUriPath(final URI uri) { > > return uri.getScheme() == null ? uri.getPath() : > > uri.getSchemeSpecificPart(); > > } > > > > @@ -336,7 +295,7 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > final URL url = new URL(config); > > return new ConfigurationSource(url.openStream(), > > FileUtils.fileFromUri(url.toURI())); > > } catch (final Exception ex) { > > - final ConfigurationSource source = > > getInputFromResource(config, loader); > > + final ConfigurationSource source = ConfigurationSource. > fromResource(config, > > loader); > > if (source == null) { > > try { > > final File file = new File(config); > > @@ -351,39 +310,6 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > } > > > > /** > > - * Retrieves the configuration via the ClassLoader. > > - * @param resource The resource to load. > > - * @param loader The default ClassLoader to use. > > - * @return The ConfigurationSource for the configuration. > > - */ > > - protected ConfigurationSource getInputFromResource(final String > > resource, final ClassLoader loader) { > > - final URL url = Loader.getResource(resource, loader); > > - if (url == null) { > > - return null; > > - } > > - InputStream is = null; > > - try { > > - is = url.openStream(); > > - } catch (final IOException ioe) { > > - LOGGER.catching(Level.DEBUG, ioe); > > - return null; > > - } > > - if (is == null) { > > - return null; > > - } > > - > > - if (FileUtils.isFile(url)) { > > - try { > > - return new ConfigurationSource(is, > > FileUtils.fileFromUri(url.toURI())); > > - } catch (final URISyntaxException ex) { > > - // Just ignore the exception. > > - LOGGER.catching(Level.DEBUG, ex); > > - } > > - } > > - return new ConfigurationSource(is, url); > > - } > > - > > - /** > > * Default Factory. > > */ > > private static class Factory extends ConfigurationFactory { > > @@ -473,7 +399,7 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > private Configuration getConfiguration(final LoggerContext > > loggerContext, final String configLocationStr) { > > ConfigurationSource source = null; > > try { > > - source = getInputFromUri(NetUtils. > > toURI(configLocationStr)); > > + source = ConfigurationSource.fromUri(NetUtils.toURI( > > configLocationStr)); > > } catch (final Exception ex) { > > // Ignore the error and try as a String. > > LOGGER.catching(Level.DEBUG, ex); > > @@ -517,7 +443,7 @@ public abstract class ConfigurationFactory extends > > ConfigurationBuilderFactory { > > } > > configName = named ? prefix + name + suffix : prefix > > + suffix; > > > > - final ConfigurationSource source = > > getInputFromResource(configName, loader); > > + final ConfigurationSource source = > > ConfigurationSource.fromResource(configName, loader); > > if (source != null) { > > if (!factory.isActive()) { > > LOGGER.warn("Found configuration file {} for > > inactive ConfigurationFactory {}", configName, > > factory.getClass().getName()); > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core/src/main/java/org/apache/logging/log4j/core/config/ > > ConfigurationSource.java > > ---------------------------------------------------------------------- > > 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 a3b1580..7848d6a 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 > > @@ -21,13 +21,20 @@ import java.io.ByteArrayInputStream; > > import java.io.ByteArrayOutputStream; > > import java.io.File; > > import java.io.FileInputStream; > > +import java.io.FileNotFoundException; > > import java.io.IOException; > > import java.io.InputStream; > > +import java.net.MalformedURLException; > > import java.net.URI; > > import java.net.URISyntaxException; > > import java.net.URL; > > import java.util.Objects; > > > > +import org.apache.logging.log4j.Level; > > +import org.apache.logging.log4j.core.util.FileUtils; > > +import org.apache.logging.log4j.core.util.Loader; > > +import org.apache.logging.log4j.util.LoaderUtil; > > + > > /** > > * Represents the source for the logging configuration. > > */ > > @@ -209,4 +216,73 @@ public class ConfigurationSource { > > final int length = data == null ? -1 : data.length; > > return "stream (" + length + " bytes, unknown location)"; > > } > > + > > + /** > > + * Loads the configuration from a URI. > > + * @param configLocation A URI representing the location of the > > configuration. > > + * @return The ConfigurationSource for the configuration. > > + */ > > + public static ConfigurationSource fromUri(final URI configLocation) > { > > + final File configFile = FileUtils.fileFromUri(configLocation); > > + if (configFile != null && configFile.exists() && > > configFile.canRead()) { > > + try { > > + return new ConfigurationSource(new > > FileInputStream(configFile), configFile); > > + } catch (final FileNotFoundException ex) { > > + ConfigurationFactory.LOGGER.error("Cannot locate file > > {}", configLocation.getPath(), ex); > > + } > > + } > > + if (ConfigurationFactory.isClassLoaderUri(configLocation)) { > > + final ClassLoader loader = LoaderUtil. > > getThreadContextClassLoader(); > > + final String path = ConfigurationFactory. > > extractClassLoaderUriPath(configLocation); > > + final ConfigurationSource source = fromResource(path, > loader); > > + if (source != null) { > > + return source; > > + } > > + } > > + if (!configLocation.isAbsolute()) { // LOG4J2-704 avoid > confusing > > error message thrown by uri.toURL() > > + ConfigurationFactory.LOGGER.error("File not found in file > > system or classpath: {}", configLocation.toString()); > > + return null; > > + } > > + try { > > + return new ConfigurationSource(configLocation.toURL(). > openStream(), > > configLocation.toURL()); > > + } catch (final MalformedURLException ex) { > > + ConfigurationFactory.LOGGER.error("Invalid URL {}", > > configLocation.toString(), ex); > > + } catch (final Exception ex) { > > + ConfigurationFactory.LOGGER.error("Unable to access {}", > > configLocation.toString(), ex); > > + } > > + return null; > > + } > > + > > + /** > > + * Retrieves the configuration via the ClassLoader. > > + * @param resource The resource to load. > > + * @param loader The default ClassLoader to use. > > + * @return The ConfigurationSource for the configuration. > > + */ > > + public static ConfigurationSource fromResource(final String > resource, > > final ClassLoader loader) { > > + final URL url = Loader.getResource(resource, loader); > > + if (url == null) { > > + return null; > > + } > > + InputStream is = null; > > + try { > > + is = url.openStream(); > > + } catch (final IOException ioe) { > > + ConfigurationFactory.LOGGER.catching(Level.DEBUG, ioe); > > + return null; > > + } > > + if (is == null) { > > + return null; > > + } > > + > > + if (FileUtils.isFile(url)) { > > + try { > > + return new ConfigurationSource(is, > > FileUtils.fileFromUri(url.toURI())); > > + } catch (final URISyntaxException ex) { > > + // Just ignore the exception. > > + ConfigurationFactory.LOGGER.catching(Level.DEBUG, ex); > > + } > > + } > > + return new ConfigurationSource(is, url); > > + } > > } > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/ > > AbstractKeyStoreConfiguration.java > > ---------------------------------------------------------------------- > > diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/ > > net/ssl/AbstractKeyStoreConfiguration.java b/log4j-core/src/main/java/ > > org/apache/logging/log4j/core/net/ssl/AbstractKeyStoreConfiguration.java > > index b0e3396..6530b21 100644 > > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/ > > AbstractKeyStoreConfiguration.java > > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/ > > AbstractKeyStoreConfiguration.java > > @@ -16,14 +16,17 @@ > > */ > > package org.apache.logging.log4j.core.net.ssl; > > > > -import java.io.FileInputStream; > > import java.io.FileNotFoundException; > > import java.io.IOException; > > +import java.io.InputStream; > > import java.security.KeyStore; > > import java.security.KeyStoreException; > > import java.security.NoSuchAlgorithmException; > > import java.security.cert.CertificateException; > > > > +import org.apache.logging.log4j.core.config.ConfigurationSource; > > +import org.apache.logging.log4j.core.util.NetUtils; > > + > > /** > > * Configuration of the KeyStore > > */ > > @@ -59,7 +62,7 @@ public class AbstractKeyStoreConfiguration extends > > StoreConfiguration<KeyStore> > > if (loadLocation == null) { > > throw new IOException("The location is null"); > > } > > - try (final FileInputStream fin = new > > FileInputStream(loadLocation)) { > > + try (final InputStream fin = openInputStream(loadLocation)) > { > > final KeyStore ks = KeyStore.getInstance(this. > > keyStoreType); > > ks.load(fin, this.getPasswordAsCharArray()); > > LOGGER.debug("Keystore successfully loaded with > > params(location={})", loadLocation); > > @@ -83,6 +86,10 @@ public class AbstractKeyStoreConfiguration extends > > StoreConfiguration<KeyStore> > > } > > } > > > > + private InputStream openInputStream(final String filePathOrUri) { > > + return ConfigurationSource.fromUri( > NetUtils.toURI(filePathOrUri)) > > .getInputStream(); > > + } > > + > > public KeyStore getKeyStore() { > > return this.keyStore; > > } > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/ > > KeyStoreConfiguration.java > > ---------------------------------------------------------------------- > > diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/ > > net/ssl/KeyStoreConfiguration.java b/log4j-core/src/main/java/ > > org/apache/logging/log4j/core/net/ssl/KeyStoreConfiguration.java > > index 4039dc8..facf153 100644 > > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/ > > net/ssl/KeyStoreConfiguration.java > > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/ > > net/ssl/KeyStoreConfiguration.java > > @@ -63,7 +63,7 @@ public class KeyStoreConfiguration extends > > AbstractKeyStoreConfiguration { > > * Creates a KeyStoreConfiguration. > > * > > * @param location > > - * The location of the KeyStore. > > + * The location of the KeyStore, a file path, URL or > resource. > > * @param password > > * The password to access the KeyStore. > > * @param keyStoreType > > @@ -89,7 +89,7 @@ public class KeyStoreConfiguration extends > > AbstractKeyStoreConfiguration { > > * Creates a KeyStoreConfiguration. > > * > > * @param location > > - * The location of the KeyStore. > > + * The location of the KeyStore, a file path, URL or > resource. > > * @param password > > * The password to access the KeyStore. > > * @param keyStoreType > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/ > > TrustStoreConfiguration.java > > ---------------------------------------------------------------------- > > diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/ > > net/ssl/TrustStoreConfiguration.java b/log4j-core/src/main/java/ > > org/apache/logging/log4j/core/net/ssl/TrustStoreConfiguration.java > > index ad02890..58c4d11 100644 > > --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/ > > TrustStoreConfiguration.java > > +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/ssl/ > > TrustStoreConfiguration.java > > @@ -56,7 +56,7 @@ public class TrustStoreConfiguration extends > > AbstractKeyStoreConfiguration { > > * Creates a KeyStoreConfiguration. > > * > > * @param location > > - * The location of the KeyStore. > > + * The location of the KeyStore, a file path, URL or > resource. > > * @param password > > * The password to access the KeyStore. > > * @param keyStoreType > > @@ -81,7 +81,7 @@ public class TrustStoreConfiguration extends > > AbstractKeyStoreConfiguration { > > * Creates a KeyStoreConfiguration. > > * > > * @param location > > - * The location of the KeyStore. > > + * The location of the KeyStore, a file path, URL or > resource. > > * @param password > > * The password to access the KeyStore. > > * @param keyStoreType > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core/src/test/java/org/apache/logging/log4j/core/net/ssl/ > > SslConfigurationTest.java > > ---------------------------------------------------------------------- > > diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ > > net/ssl/SslConfigurationTest.java b/log4j-core/src/test/java/ > > org/apache/logging/log4j/core/net/ssl/SslConfigurationTest.java > > index c56128f..4452496 100644 > > --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/ > > net/ssl/SslConfigurationTest.java > > +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/ > > net/ssl/SslConfigurationTest.java > > @@ -32,7 +32,15 @@ public class SslConfigurationTest { > > private static final String TLS_TEST_HOST = "login.yahoo.com"; > > private static final int TLS_TEST_PORT = 443; > > > > - public static SslConfiguration createTestSslConfiguration() throws > > StoreConfigurationException { > > + public static SslConfiguration createTestSslConfigurationReso > urces() > > throws StoreConfigurationException { > > + final KeyStoreConfiguration ksc = new KeyStoreConfiguration( > > TestConstants.KEYSTORE_FILE_RESOURCE, > > + TestConstants.KEYSTORE_PWD, TestConstants.KEYSTORE_TYPE, > > null); > > + final TrustStoreConfiguration tsc = new TrustStoreConfiguration( > > TestConstants.TRUSTSTORE_FILE_RESOURCE, > > + TestConstants.TRUSTSTORE_PWD, null, null); > > + return SslConfiguration.createSSLConfiguration(null, ksc, tsc); > > + } > > + > > + public static SslConfiguration createTestSslConfigurationFiles() > > throws StoreConfigurationException { > > final KeyStoreConfiguration ksc = new KeyStoreConfiguration( > > TestConstants.KEYSTORE_FILE, > > TestConstants.KEYSTORE_PWD, TestConstants.KEYSTORE_TYPE, > > null); > > final TrustStoreConfiguration tsc = new TrustStoreConfiguration( > > TestConstants.TRUSTSTORE_FILE, > > @@ -41,12 +49,21 @@ public class SslConfigurationTest { > > } > > > > @Test > > - public void testGettersFromScratch() throws > > StoreConfigurationException { > > - Assert.assertNotNull(createTestSslConfiguration(). > getProtocol()); > > - Assert.assertNotNull(createTestSslConfiguration(). > > getKeyStoreConfig()); > > - Assert.assertNotNull(createTestSslConfiguration(). > > getSslContext()); > > - Assert.assertNotNull(createTestSslConfiguration(). > > getSslSocketFactory()); > > - Assert.assertNotNull(createTestSslConfiguration(). > > getTrustStoreConfig()); > > + public void testGettersFromScratchFiles() throws > > StoreConfigurationException { > > + Assert.assertNotNull(createTestSslConfigurationFile > > s().getProtocol()); > > + Assert.assertNotNull(createTestSslConfigurationFile > > s().getKeyStoreConfig()); > > + Assert.assertNotNull(createTestSslConfigurationFile > > s().getSslContext()); > > + Assert.assertNotNull(createTestSslConfigurationFile > > s().getSslSocketFactory()); > > + Assert.assertNotNull(createTestSslConfigurationFile > > s().getTrustStoreConfig()); > > + } > > + > > + @Test > > + public void testGettersFromScratchResources() throws > > StoreConfigurationException { > > + Assert.assertNotNull(createTestSslConfigurationReso > > urces().getProtocol()); > > + Assert.assertNotNull(createTestSslConfigurationReso > > urces().getKeyStoreConfig()); > > + Assert.assertNotNull(createTestSslConfigurationReso > > urces().getSslContext()); > > + Assert.assertNotNull(createTestSslConfigurationReso > > urces().getSslSocketFactory()); > > + Assert.assertNotNull(createTestSslConfigurationReso > > urces().getTrustStoreConfig()); > > } > > > > @Test > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/log4j-core/src/test/java/org/apache/logging/log4j/ > > core/net/ssl/TestConstants.java > > ---------------------------------------------------------------------- > > diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ > net/ssl/TestConstants.java > > b/log4j-core/src/test/java/org/apache/logging/log4j/core/ > > net/ssl/TestConstants.java > > index 81ef41d..1fa8572 100644 > > --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/ > > net/ssl/TestConstants.java > > +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/ > > net/ssl/TestConstants.java > > @@ -17,14 +17,22 @@ > > package org.apache.logging.log4j.core.net.ssl; > > > > public class TestConstants { > > - public static final String PATH = "src/test/resources/org/ > > apache/logging/log4j/core/net/ssl/"; > > + > > + public static final String SOURCE_FOLDER = "src/test/resources/"; > > + public static final String RESOURCE_ROOT = > "org/apache/logging/log4j/ > > core/net/ssl/"; > > + > > + public static final String PATH = SOURCE_FOLDER + RESOURCE_ROOT; > > public static final String TRUSTSTORE_PATH = PATH; > > + public static final String TRUSTSTORE_RESOURCE = RESOURCE_ROOT; > > public static final String TRUSTSTORE_FILE = TRUSTSTORE_PATH + > > "truststore.jks"; > > + public static final String TRUSTSTORE_FILE_RESOURCE = > > TRUSTSTORE_RESOURCE + "truststore.jks"; > > public static final char[] TRUSTSTORE_PWD = > "changeit".toCharArray(); > > public static final String TRUSTSTORE_TYPE = "JKS"; > > > > public static final String KEYSTORE_PATH = PATH; > > + public static final String KEYSTORE_RESOURCE = RESOURCE_ROOT; > > public static final String KEYSTORE_FILE = KEYSTORE_PATH + > > "client.log4j2-keystore.jks"; > > + public static final String KEYSTORE_FILE_RESOURCE = > KEYSTORE_RESOURCE > > + "client.log4j2-keystore.jks"; > > public static final char[] KEYSTORE_PWD = "changeit".toCharArray(); > > public static final String KEYSTORE_TYPE = "JKS"; > > > > > > http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ > > 741be7fc/src/changes/changes.xml > > ---------------------------------------------------------------------- > > diff --git a/src/changes/changes.xml b/src/changes/changes.xml > > index d1b1e13..9ff328a 100644 > > --- a/src/changes/changes.xml > > +++ b/src/changes/changes.xml > > @@ -31,6 +31,9 @@ > > - "remove" - Removed > > --> > > <release version="2.9.0" date="2017-MM-DD" description="GA Release > > 2.9.0"> > > + <action issue="LOG4J2-2015" dev="ggregory" type="update"> > > + Allow KeyStoreConfiguration and TrustStoreConfiguration to find > > files as resources. > > + </action> > > <action issue="LOG4J2-2011" dev="rpopma" type="update"> > > Replace JCommander command line parser with picocli to let users > > run Log4j2 utility applications without requiring an external dependency. > > </action> > > > > > > > -- > Matt Sicker <boa...@gmail.com> >