This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/logging-log4j-jakarta.git
commit d830e701ed4f047536374a18f037e20a14968702 Author: Spotless <[email protected]> AuthorDate: Thu Nov 16 13:48:31 2023 +0100 Format code with Palantir formatter --- .../logging/log4j/jms/appender/JmsAppender.java | 50 ++++-- .../logging/log4j/jms/appender/JmsManager.java | 119 +++++++++----- .../log4j/jms/appender/JmsAppenderTest.java | 34 ++-- .../logging/log4j/smtp/MimeMessageBuilder.java | 6 +- .../logging/log4j/smtp/appender/SmtpAppender.java | 32 +++- .../logging/log4j/smtp/appender/SmtpManager.java | 133 ++++++++++----- .../logging/dumbster/smtp/SimpleSmtpServer.java | 3 - .../apache/logging/dumbster/smtp/SmtpRequest.java | 8 +- .../log4j/smtp/appender/SmtpAppenderAsyncTest.java | 7 +- .../log4j/smtp/appender/SmtpAppenderTest.java | 28 ++-- .../log4j/smtp/appender/SmtpManagerTest.java | 70 ++++++-- .../web/Log4jServletContainerInitializer.java | 26 +-- .../log4j/web/Log4jServletContextListener.java | 22 +-- .../logging/log4j/web/Log4jServletFilter.java | 8 +- .../Log4jShutdownOnContextDestroyedListener.java | 24 ++- .../logging/log4j/web/Log4jWebInitializerImpl.java | 41 ++--- .../log4j/web/ServletRequestThreadContext.java | 4 +- .../logging/log4j/web/WebLoggerContextUtils.java | 13 +- .../org/apache/logging/log4j/web/WebLookup.java | 65 +++++--- .../log4j/web/appender/ServletAppender.java | 17 +- .../web/Log4jServletContainerInitializerTest.java | 84 +++++----- .../log4j/web/Log4jServletContextListenerTest.java | 36 ++-- .../logging/log4j/web/Log4jServletFilterTest.java | 26 +-- ...og4jShutdownOnContextDestroyedListenerTest.java | 17 +- .../log4j/web/Log4jWebInitializerImplTest.java | 183 ++++++++++++++------- .../org/apache/logging/log4j/web/PropertyTest.java | 9 +- .../logging/log4j/web/ServletAppenderTest.java | 6 +- .../apache/logging/log4j/web/TestAsyncServlet.java | 12 +- .../apache/logging/log4j/web/WebLookupTest.java | 11 +- 29 files changed, 662 insertions(+), 432 deletions(-) diff --git a/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsAppender.java b/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsAppender.java index 29735da..0b1a357 100644 --- a/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsAppender.java +++ b/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsAppender.java @@ -16,11 +16,9 @@ */ package org.apache.logging.log4j.jms.appender; +import jakarta.jms.JMSException; import java.util.Properties; import java.util.concurrent.TimeUnit; - -import jakarta.jms.JMSException; - import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.Layout; @@ -43,7 +41,7 @@ import org.apache.logging.log4j.plugins.validation.constraints.Required; */ @Configurable(elementType = Appender.ELEMENT_TYPE, printObject = true) @Plugin("JMS") -@PluginAliases({ "JMSQueue", "JMSTopic" }) +@PluginAliases({"JMSQueue", "JMSTopic"}) public class JmsAppender extends AbstractAppender { public static class Builder<B extends Builder<B>> extends AbstractAppender.Builder<B> @@ -71,7 +69,7 @@ public class JmsAppender extends AbstractAppender { private String factoryBindingName; @PluginBuilderAttribute - @PluginAliases({ "queueBindingName", "topicBindingName" }) + @PluginAliases({"queueBindingName", "topicBindingName"}) @Required(message = "A jakarta.jms.Destination JNDI name must be specified") private String destinationBindingName; @@ -90,8 +88,7 @@ public class JmsAppender extends AbstractAppender { // Programmatic access only for now. private JmsManager jmsManager; - private Builder() { - } + private Builder() {} @SuppressWarnings("resource") // actualJmsManager and jndiManager are managed by the JmsAppender @Override @@ -104,10 +101,21 @@ public class JmsAppender extends AbstractAppender { JmsManagerConfiguration configuration = null; if (actualJmsManager == null) { final Properties additionalProperties = null; - final Properties jndiProperties = JmsManager.createJndiProperties(factoryName, providerUrl, - urlPkgPrefixes, securityPrincipalName, securityCredentials, additionalProperties); - configuration = new JmsManagerConfiguration(jndiProperties, factoryBindingName, destinationBindingName, - userName, password, false, reconnectIntervalMillis); + final Properties jndiProperties = JmsManager.createJndiProperties( + factoryName, + providerUrl, + urlPkgPrefixes, + securityPrincipalName, + securityCredentials, + additionalProperties); + configuration = new JmsManagerConfiguration( + jndiProperties, + factoryBindingName, + destinationBindingName, + userName, + password, + false, + reconnectIntervalMillis); actualJmsManager = AbstractManager.getManager(getName(), JmsManager.FACTORY, configuration); } if (actualJmsManager == null) { @@ -115,7 +123,13 @@ public class JmsAppender extends AbstractAppender { return null; } try { - return new JmsAppender(getName(), getFilter(), getLayout(), isIgnoreExceptions(), getPropertyArray(), actualJmsManager); + return new JmsAppender( + getName(), + getFilter(), + getLayout(), + isIgnoreExceptions(), + getPropertyArray(), + actualJmsManager); } catch (final JMSException e) { // Never happens since the ctor no longer actually throws a JMSException. throw new IllegalStateException(e); @@ -194,7 +208,6 @@ public class JmsAppender extends AbstractAppender { + getLayout() + ", filter=" + getFilter() + ", ignoreExceptions=" + isIgnoreExceptions() + ", jmsManager=" + jmsManager + "]"; } - } @PluginFactory @@ -214,8 +227,14 @@ public class JmsAppender extends AbstractAppender { * @throws JMSException * not thrown as of 2.9 but retained in the signature for compatibility, will be removed in 3.0. */ - protected JmsAppender(final String name, final Filter filter, final Layout layout, - final boolean ignoreExceptions, final Property[] properties, final JmsManager manager) throws JMSException { + protected JmsAppender( + final String name, + final Filter filter, + final Layout layout, + final boolean ignoreExceptions, + final Property[] properties, + final JmsManager manager) + throws JMSException { super(name, filter, layout, ignoreExceptions, properties); this.manager = manager; } @@ -237,5 +256,4 @@ public class JmsAppender extends AbstractAppender { setStopped(); return stopped; } - } diff --git a/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java b/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java index 55cc9b1..be0928b 100644 --- a/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java +++ b/log4j-jakarta-jms/src/main/java/org/apache/logging/log4j/jms/appender/JmsManager.java @@ -16,12 +16,6 @@ */ package org.apache.logging.log4j.jms.appender; -import java.util.Properties; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import javax.naming.NamingException; - import jakarta.jms.Connection; import jakarta.jms.ConnectionFactory; import jakarta.jms.Destination; @@ -31,7 +25,10 @@ import jakarta.jms.Message; import jakarta.jms.MessageConsumer; import jakarta.jms.MessageProducer; import jakarta.jms.Session; - +import java.util.Properties; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import javax.naming.NamingException; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.appender.AbstractManager; @@ -61,8 +58,13 @@ public class JmsManager extends AbstractManager { private final boolean retry; private final long reconnectIntervalMillis; - JmsManagerConfiguration(final Properties jndiProperties, final String connectionFactoryName, - final String destinationName, final String userName, final char[] password, final boolean immediateFail, + JmsManagerConfiguration( + final Properties jndiProperties, + final String connectionFactoryName, + final String destinationName, + final String userName, + final char[] password, + final boolean immediateFail, final long reconnectIntervalMillis) { this.jndiProperties = jndiProperties; this.connectionFactoryName = connectionFactoryName; @@ -117,7 +119,6 @@ public class JmsManager extends AbstractManager { + ", immediateFail=" + immediateFail + ", retry=" + retry + ", reconnectIntervalMillis=" + reconnectIntervalMillis + "]"; } - } private static class JmsManagerFactory implements ManagerFactory<JmsManager, JmsManagerConfiguration> { @@ -150,11 +151,15 @@ public class JmsManager extends AbstractManager { * Any additional JNDI environment properties to set or {@code null} for none. * @return the Properties for the provided parameters. */ - public static Properties createJndiProperties(final String factoryName, final String providerUrl, - final String urlPkgPrefixes, final String securityPrincipal, final String securityCredentials, + public static Properties createJndiProperties( + final String factoryName, + final String providerUrl, + final String urlPkgPrefixes, + final String securityPrincipal, + final String securityCredentials, final Properties additionalProperties) { - return JndiManager.createProperties(factoryName, providerUrl, urlPkgPrefixes, - securityPrincipal, securityCredentials, additionalProperties); + return JndiManager.createProperties( + factoryName, providerUrl, urlPkgPrefixes, securityPrincipal, securityCredentials, additionalProperties); } /** @@ -207,8 +212,11 @@ public class JmsManager extends AbstractManager { sleep(configuration.getReconnectIntervalMillis()); reconnect(); } catch (final InterruptedException | JMSException | NamingException e) { - logger().debug("Cannot reestablish JMS connection to {}: {}", configuration, e.getLocalizedMessage(), - e); + logger().debug( + "Cannot reestablish JMS connection to {}: {}", + configuration, + e.getLocalizedMessage(), + e); } finally { latch.countDown(); } @@ -218,7 +226,6 @@ public class JmsManager extends AbstractManager { public void shutdown() { shutdown = true; } - } static final JmsManagerFactory FACTORY = new JmsManagerFactory(); @@ -237,11 +244,23 @@ public class JmsManager extends AbstractManager { * @param reconnectIntervalMillis How to log sleep in milliseconds before trying to reconnect to JMS. * @return The JmsManager as configured. */ - public static JmsManager getJmsManager(final String name, final Properties jndiProperties, - final String connectionFactoryName, final String destinationName, final String userName, - final char[] password, final boolean immediateFail, final long reconnectIntervalMillis) { - final JmsManagerConfiguration configuration = new JmsManagerConfiguration(jndiProperties, connectionFactoryName, - destinationName, userName, password, immediateFail, reconnectIntervalMillis); + public static JmsManager getJmsManager( + final String name, + final Properties jndiProperties, + final String connectionFactoryName, + final String destinationName, + final String userName, + final char[] password, + final boolean immediateFail, + final long reconnectIntervalMillis) { + final JmsManagerConfiguration configuration = new JmsManagerConfiguration( + jndiProperties, + connectionFactoryName, + destinationName, + userName, + password, + immediateFail, + reconnectIntervalMillis); return getManager(name, FACTORY, configuration); } @@ -280,9 +299,12 @@ public class JmsManager extends AbstractManager { temp.close(); return true; } catch (final JMSException e) { - StatusLogger.getLogger().debug( - "Caught exception closing JMS Connection: {} ({}); continuing JMS manager shutdown", - e.getLocalizedMessage(), temp, e); + StatusLogger.getLogger() + .debug( + "Caught exception closing JMS Connection: {} ({}); continuing JMS manager shutdown", + e.getLocalizedMessage(), + temp, + e); return false; } } @@ -307,9 +329,12 @@ public class JmsManager extends AbstractManager { temp.close(); return true; } catch (final JMSException e) { - StatusLogger.getLogger().debug( - "Caught exception closing JMS MessageProducer: {} ({}); continuing JMS manager shutdown", - e.getLocalizedMessage(), temp, e); + StatusLogger.getLogger() + .debug( + "Caught exception closing JMS MessageProducer: {} ({}); continuing JMS manager shutdown", + e.getLocalizedMessage(), + temp, + e); return false; } } @@ -324,9 +349,12 @@ public class JmsManager extends AbstractManager { temp.close(); return true; } catch (final JMSException e) { - StatusLogger.getLogger().debug( - "Caught exception closing JMS Session: {} ({}); continuing JMS manager shutdown", - e.getLocalizedMessage(), temp, e); + StatusLogger.getLogger() + .debug( + "Caught exception closing JMS Session: {} ({}); continuing JMS manager shutdown", + e.getLocalizedMessage(), + temp, + e); return false; } } @@ -334,11 +362,11 @@ public class JmsManager extends AbstractManager { private Connection createConnection(final JndiManager jndiManager) throws NamingException, JMSException { final ConnectionFactory connectionFactory = jndiManager.lookup(configuration.getConnectionFactoryName()); if (configuration.getUserName() != null && configuration.getPassword() != null) { - return connectionFactory.createConnection(configuration.getUserName(), + return connectionFactory.createConnection( + configuration.getUserName(), configuration.getPassword() == null ? null : String.valueOf(configuration.getPassword())); } return connectionFactory.createConnection(); - } private Destination createDestination(final JndiManager jndiManager) throws NamingException { @@ -407,15 +435,18 @@ public class JmsManager extends AbstractManager { return this.jndiManager.lookup(destinationName); } - private MapMessage map(final org.apache.logging.log4j.message.MapMessage<?, ?> log4jMapMessage, - final MapMessage jmsMapMessage) { + private MapMessage map( + final org.apache.logging.log4j.message.MapMessage<?, ?> log4jMapMessage, final MapMessage jmsMapMessage) { // Map without calling org.apache.logging.log4j.message.MapMessage#getData() which makes a copy of the map. log4jMapMessage.forEach((key, value) -> { try { jmsMapMessage.setObject(key, value); } catch (final JMSException e) { - throw new IllegalArgumentException(String.format("%s mapping key '%s' to value '%s': %s", - e.getClass(), key, value, e.getLocalizedMessage()), e); + throw new IllegalArgumentException( + String.format( + "%s mapping key '%s' to value '%s': %s", + e.getClass(), key, value, e.getLocalizedMessage()), + e); } }); return jmsMapMessage; @@ -456,8 +487,12 @@ public class JmsManager extends AbstractManager { closeJndiManager(); reconnector.reconnect(); } catch (NamingException | JMSException reconnEx) { - logger().debug("Cannot reestablish JMS connection to {}: {}; starting reconnector thread {}", - configuration, reconnEx.getLocalizedMessage(), reconnector.getName(), reconnEx); + logger().debug( + "Cannot reestablish JMS connection to {}: {}; starting reconnector thread {}", + configuration, + reconnEx.getLocalizedMessage(), + reconnector.getName(), + reconnEx); reconnector.start(); throw new AppenderLoggingException( String.format("JMS exception sending to %s for %s", getName(), configuration), causeEx); @@ -466,13 +501,13 @@ public class JmsManager extends AbstractManager { createMessageAndSend(event, layout); } catch (final JMSException e) { throw new AppenderLoggingException( - String.format("Error sending to %s after reestablishing JMS connection for %s", getName(), - configuration), + String.format( + "Error sending to %s after reestablishing JMS connection for %s", + getName(), configuration), causeEx); } } } } } - } diff --git a/log4j-jakarta-jms/src/test/java/org/apache/logging/log4j/jms/appender/JmsAppenderTest.java b/log4j-jakarta-jms/src/test/java/org/apache/logging/log4j/jms/appender/JmsAppenderTest.java index 48211cc..9653974 100644 --- a/log4j-jakarta-jms/src/test/java/org/apache/logging/log4j/jms/appender/JmsAppenderTest.java +++ b/log4j-jakarta-jms/src/test/java/org/apache/logging/log4j/jms/appender/JmsAppenderTest.java @@ -16,7 +16,13 @@ */ package org.apache.logging.log4j.jms.appender; -import java.util.Map; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import jakarta.jms.Connection; import jakarta.jms.ConnectionFactory; @@ -26,7 +32,7 @@ import jakarta.jms.MessageProducer; import jakarta.jms.ObjectMessage; import jakarta.jms.Session; import jakarta.jms.TextMessage; - +import java.util.Map; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.impl.Log4jLogEvent; @@ -44,14 +50,6 @@ import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.RuleChain; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; - @Category(Appenders.Jms.class) public class JmsAppenderTest { @@ -105,22 +103,21 @@ public class JmsAppenderTest { QUEUE_FACTORY_NAME, connectionFactory, QUEUE_NAME, destination, TOPIC_FACTORY_NAME, connectionFactory, - TOPIC_NAME, destination - ); + TOPIC_NAME, destination); } - private Log4jLogEvent createLogEvent() { + private Log4jLogEvent createLogEvent() { return createLogEvent(new SimpleMessage(LOG_MESSAGE)); } private Log4jLogEvent createLogEvent(final Message message) { // @formatter:off return Log4jLogEvent.newBuilder() - .setLoggerName(JmsAppenderTest.class.getName()) - .setLoggerFqcn(JmsAppenderTest.class.getName()) - .setLevel(Level.INFO) - .setMessage(message) - .build(); + .setLoggerName(JmsAppenderTest.class.getName()) + .setLoggerFqcn(JmsAppenderTest.class.getName()) + .setLevel(Level.INFO) + .setMessage(message) + .build(); // @formatter:on } @@ -186,5 +183,4 @@ public class JmsAppenderTest { then(session).should().close(); then(connection).should().close(); } - } diff --git a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/MimeMessageBuilder.java b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/MimeMessageBuilder.java index f506544..f8ae567 100644 --- a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/MimeMessageBuilder.java +++ b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/MimeMessageBuilder.java @@ -16,15 +16,13 @@ */ package org.apache.logging.log4j.smtp; -import java.nio.charset.StandardCharsets; - import jakarta.mail.Message; import jakarta.mail.MessagingException; import jakarta.mail.Session; import jakarta.mail.internet.AddressException; import jakarta.mail.internet.InternetAddress; import jakarta.mail.internet.MimeMessage; - +import java.nio.charset.StandardCharsets; import org.apache.logging.log4j.plugins.util.Builder; /** @@ -62,7 +60,7 @@ public class MimeMessageBuilder implements Builder<MimeMessage> { } public MimeMessageBuilder setRecipients(final Message.RecipientType recipientType, final String recipients) - throws MessagingException { + throws MessagingException { final InternetAddress[] addresses = parseAddresses(recipients); if (null != addresses) { diff --git a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpAppender.java b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpAppender.java index 559269c..b863c86 100644 --- a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpAppender.java +++ b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpAppender.java @@ -59,8 +59,13 @@ public final class SmtpAppender extends AbstractAppender { /** The SMTP Manager */ private final SmtpManager manager; - private SmtpAppender(final String name, final Filter filter, final Layout layout, final boolean ignoreExceptions, - Property[] properties, final SmtpManager manager) { + private SmtpAppender( + final String name, + final Filter filter, + final Layout layout, + final boolean ignoreExceptions, + Property[] properties, + final SmtpManager manager) { super(name, filter, layout, ignoreExceptions, properties); this.manager = manager; } @@ -234,10 +239,25 @@ public final class SmtpAppender extends AbstractAppender { if (getFilter() == null) { setFilter(ThresholdFilter.createFilter(null, null, null)); } - final SmtpManager smtpManager = SmtpManager.getSmtpManager(getConfiguration(), to, cc, bcc, from, replyTo, - subject, smtpProtocol, smtpHost, smtpPort, smtpUsername, smtpPassword, smtpDebug, - getFilter().toString(), bufferSize, sslConfiguration); - return new SmtpAppender(getName(), getFilter(), getLayout(), isIgnoreExceptions(), getPropertyArray(), smtpManager); + final SmtpManager smtpManager = SmtpManager.getSmtpManager( + getConfiguration(), + to, + cc, + bcc, + from, + replyTo, + subject, + smtpProtocol, + smtpHost, + smtpPort, + smtpUsername, + smtpPassword, + smtpDebug, + getFilter().toString(), + bufferSize, + sslConfiguration); + return new SmtpAppender( + getName(), getFilter(), getLayout(), isIgnoreExceptions(), getPropertyArray(), smtpManager); } } diff --git a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java index 1845d26..7791993 100644 --- a/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java +++ b/log4j-jakarta-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java @@ -16,14 +16,6 @@ */ package org.apache.logging.log4j.smtp.appender; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.util.Date; -import java.util.Properties; - -import javax.net.ssl.SSLSocketFactory; - import jakarta.activation.DataSource; import jakarta.mail.Authenticator; import jakarta.mail.Message; @@ -37,7 +29,12 @@ import jakarta.mail.internet.MimeMessage; import jakarta.mail.internet.MimeMultipart; import jakarta.mail.internet.MimeUtility; import jakarta.mail.util.ByteArrayDataSource; - +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Date; +import java.util.Properties; +import javax.net.ssl.SSLSocketFactory; import org.apache.logging.log4j.LoggingException; import org.apache.logging.log4j.core.Layout; import org.apache.logging.log4j.core.LogEvent; @@ -67,16 +64,19 @@ public class SmtpManager extends AbstractManager { private final FactoryData data; - private static MimeMessage createMimeMessage(final FactoryData data, final Session session, final LogEvent appendEvent) - throws MessagingException { - return new MimeMessageBuilder(session).setFrom(data.from).setReplyTo(data.replyto) - .setRecipients(Message.RecipientType.TO, data.to).setRecipients(Message.RecipientType.CC, data.cc) - .setRecipients(Message.RecipientType.BCC, data.bcc).setSubject(data.subject.toSerializable(appendEvent)) + private static MimeMessage createMimeMessage( + final FactoryData data, final Session session, final LogEvent appendEvent) throws MessagingException { + return new MimeMessageBuilder(session) + .setFrom(data.from) + .setReplyTo(data.replyto) + .setRecipients(Message.RecipientType.TO, data.to) + .setRecipients(Message.RecipientType.CC, data.cc) + .setRecipients(Message.RecipientType.BCC, data.bcc) + .setSubject(data.subject.toSerializable(appendEvent)) .build(); } - protected SmtpManager(final String name, final Session session, final MimeMessage message, - final FactoryData data) { + protected SmtpManager(final String name, final Session session, final MimeMessage message, final FactoryData data) { super(null, name); this.session = session; this.message = message; @@ -89,23 +89,51 @@ public class SmtpManager extends AbstractManager { } public static SmtpManager getSmtpManager( - final Configuration config, - final String to, final String cc, final String bcc, - final String from, final String replyTo, - final String subject, String protocol, final String host, - final int port, final String username, final String password, - final boolean isDebug, final String filterName, final int numElements, - final SslConfiguration sslConfiguration) { + final Configuration config, + final String to, + final String cc, + final String bcc, + final String from, + final String replyTo, + final String subject, + String protocol, + final String host, + final int port, + final String username, + final String password, + final boolean isDebug, + final String filterName, + final int numElements, + final SslConfiguration sslConfiguration) { if (Strings.isEmpty(protocol)) { protocol = "smtp"; } - final String name = createManagerName(to, cc, bcc, from, replyTo, subject, protocol, host, port, username, isDebug, filterName); - final Serializer subjectSerializer = PatternLayout.newSerializerBuilder().setConfiguration(config).setPattern(subject).build(); - - return getManager(name, FACTORY, new FactoryData(to, cc, bcc, from, replyTo, subjectSerializer, - protocol, host, port, username, password, isDebug, numElements, sslConfiguration)); + final String name = createManagerName( + to, cc, bcc, from, replyTo, subject, protocol, host, port, username, isDebug, filterName); + final Serializer subjectSerializer = PatternLayout.newSerializerBuilder() + .setConfiguration(config) + .setPattern(subject) + .build(); + return getManager( + name, + FACTORY, + new FactoryData( + to, + cc, + bcc, + from, + replyTo, + subjectSerializer, + protocol, + host, + port, + username, + password, + isDebug, + numElements, + sslConfiguration)); } /** @@ -199,16 +227,19 @@ public class SmtpManager extends AbstractManager { return buffer.removeAll(); } - protected byte[] formatContentToBytes(final LogEvent[] priorEvents, final LogEvent appendEvent, - final Layout layout) throws IOException { + protected byte[] formatContentToBytes(final LogEvent[] priorEvents, final LogEvent appendEvent, final Layout layout) + throws IOException { final ByteArrayOutputStream raw = new ByteArrayOutputStream(); writeContent(priorEvents, appendEvent, layout, raw); return raw.toByteArray(); } - private void writeContent(final LogEvent[] priorEvents, final LogEvent appendEvent, final Layout layout, - final ByteArrayOutputStream out) - throws IOException { + private void writeContent( + final LogEvent[] priorEvents, + final LogEvent appendEvent, + final Layout layout, + final ByteArrayOutputStream out) + throws IOException { writeHeader(layout, out); writeBuffer(priorEvents, appendEvent, layout, out); writeFooter(layout, out); @@ -221,8 +252,9 @@ public class SmtpManager extends AbstractManager { } } - protected void writeBuffer(final LogEvent[] priorEvents, final LogEvent appendEvent, final Layout layout, - final OutputStream out) throws IOException { + protected void writeBuffer( + final LogEvent[] priorEvents, final LogEvent appendEvent, final Layout layout, final OutputStream out) + throws IOException { for (final LogEvent priorEvent : priorEvents) { final byte[] bytes = layout.toByteArray(priorEvent); out.write(bytes); @@ -245,7 +277,7 @@ public class SmtpManager extends AbstractManager { } protected byte[] encodeContentToBytes(final byte[] rawBytes, final String encoding) - throws MessagingException, IOException { + throws MessagingException, IOException { final ByteArrayOutputStream encoded = new ByteArrayOutputStream(); encodeContent(rawBytes, encoding, encoded); return encoded.toByteArray(); @@ -266,14 +298,15 @@ public class SmtpManager extends AbstractManager { } protected MimeMultipart getMimeMultipart(final byte[] encodedBytes, final InternetHeaders headers) - throws MessagingException { + throws MessagingException { final MimeMultipart mp = new MimeMultipart(); final MimeBodyPart part = new MimeBodyPart(headers, encodedBytes); mp.addBodyPart(part); return mp; } - protected void sendMultipartMessage(final MimeMessage msg, final MimeMultipart mp, final String subject) throws MessagingException { + protected void sendMultipartMessage(final MimeMessage msg, final MimeMultipart mp, final String subject) + throws MessagingException { synchronized (msg) { msg.setContent(mp); msg.setSentDate(new Date()); @@ -301,10 +334,21 @@ public class SmtpManager extends AbstractManager { private final int numElements; private final SslConfiguration sslConfiguration; - public FactoryData(final String to, final String cc, final String bcc, final String from, final String replyTo, - final Serializer subjectSerializer, final String protocol, final String host, final int port, - final String username, final String password, final boolean isDebug, final int numElements, - final SslConfiguration sslConfiguration) { + public FactoryData( + final String to, + final String cc, + final String bcc, + final String from, + final String replyTo, + final Serializer subjectSerializer, + final String protocol, + final String host, + final int port, + final String username, + final String password, + final boolean isDebug, + final int numElements, + final SslConfiguration sslConfiguration) { this.to = to; this.cc = cc; this.bcc = bcc; @@ -367,7 +411,8 @@ public class SmtpManager extends AbstractManager { if (sslConfiguration != null) { final SSLSocketFactory sslSocketFactory = sslConfiguration.getSslSocketFactory(); properties.put(prefix + ".ssl.socketFactory", sslSocketFactory); - properties.setProperty(prefix + ".ssl.checkserveridentity", Boolean.toString(sslConfiguration.isVerifyHostName())); + properties.setProperty( + prefix + ".ssl.checkserveridentity", Boolean.toString(sslConfiguration.isVerifyHostName())); } } @@ -381,7 +426,7 @@ public class SmtpManager extends AbstractManager { if (null != password && null != username) { return new Authenticator() { private final PasswordAuthentication passwordAuthentication = - new PasswordAuthentication(username, password); + new PasswordAuthentication(username, password); @Override protected PasswordAuthentication getPasswordAuthentication() { diff --git a/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SimpleSmtpServer.java b/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SimpleSmtpServer.java index d96b1c5..acacf38 100644 --- a/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SimpleSmtpServer.java +++ b/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SimpleSmtpServer.java @@ -25,7 +25,6 @@ import java.net.Socket; import java.util.ArrayList; import java.util.Iterator; import java.util.List; - import org.apache.logging.log4j.util.Strings; /** @@ -263,7 +262,6 @@ public class SimpleSmtpServer implements Runnable { final SimpleSmtpServer server = new SimpleSmtpServer(port); final Thread t = new Thread(server); - // Block until the server socket is created synchronized (server) { t.start(); @@ -275,5 +273,4 @@ public class SimpleSmtpServer implements Runnable { } return server; } - } diff --git a/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java b/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java index b2042ea..71c280d 100644 --- a/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java +++ b/log4j-jakarta-smtp/src/test/java/org/apache/logging/dumbster/smtp/SmtpRequest.java @@ -16,10 +16,10 @@ */ package org.apache.logging.dumbster.smtp; -import org.apache.logging.log4j.util.Strings; - import static org.apache.logging.log4j.util.Strings.toRootUpperCase; +import org.apache.logging.log4j.util.Strings; + /** * Contains an SMTP client request. Handles state transitions using the following state transition table. * <PRE> @@ -145,8 +145,8 @@ public class SmtpRequest { } } else if (SmtpActionType.QUIT == action) { if (SmtpState.QUIT == state) { - response = new SmtpResponse(221, "localhost Dumbster service closing transmission channel", - SmtpState.CONNECT); + response = new SmtpResponse( + 221, "localhost Dumbster service closing transmission channel", SmtpState.CONNECT); } else { response = new SmtpResponse(503, "Bad sequence of commands: " + action, this.state); } diff --git a/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderAsyncTest.java b/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderAsyncTest.java index f28b579..73da642 100644 --- a/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderAsyncTest.java +++ b/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderAsyncTest.java @@ -16,8 +16,10 @@ */ package org.apache.logging.log4j.smtp.appender; -import java.util.Iterator; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; +import java.util.Iterator; import org.apache.logging.dumbster.smtp.SimpleSmtpServer; import org.apache.logging.dumbster.smtp.SmtpMessage; import org.apache.logging.log4j.ThreadContext; @@ -31,9 +33,6 @@ import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - public class SmtpAppenderAsyncTest { private static int PORT; diff --git a/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderTest.java b/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderTest.java index d653c9e..a0a3f22 100644 --- a/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderTest.java +++ b/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderTest.java @@ -16,13 +16,13 @@ */ package org.apache.logging.log4j.smtp.appender; -import java.util.Iterator; +import static org.junit.Assert.*; import jakarta.mail.Address; import jakarta.mail.Message; import jakarta.mail.MessagingException; import jakarta.mail.internet.InternetAddress; - +import java.util.Iterator; import org.apache.logging.dumbster.smtp.SimpleSmtpServer; import org.apache.logging.dumbster.smtp.SmtpMessage; import org.apache.logging.log4j.Level; @@ -36,8 +36,6 @@ import org.apache.logging.log4j.smtp.MimeMessageBuilder; import org.junit.Test; import org.junit.experimental.categories.Category; -import static org.junit.Assert.*; - @Category(Appenders.Smtp.class) public class SmtpAppenderTest { @@ -54,13 +52,13 @@ public class SmtpAppenderTest { Address[] array = null; final Address addr = InternetAddress.getLocalAddress(null); if (addr != null) { - array = new Address[] { addr }; + array = new Address[] {addr}; } assertArrayEquals(array, builder.build().getFrom()); builder.setFrom(address); - assertArrayEquals(new Address[] { new InternetAddress(address) }, - builder.build().getFrom()); + assertArrayEquals( + new Address[] {new InternetAddress(address)}, builder.build().getFrom()); } @Test @@ -74,8 +72,7 @@ public class SmtpAppenderTest { assertNull(builder.build().getReplyTo()); builder.setReplyTo(addresses); - assertArrayEquals(InternetAddress.parse(addresses), builder - .build().getReplyTo()); + assertArrayEquals(InternetAddress.parse(addresses), builder.build().getReplyTo()); } @Test @@ -83,16 +80,13 @@ public class SmtpAppenderTest { final MimeMessageBuilder builder = new MimeMessageBuilder(null); final String addresses = "[email protected],[email protected]"; - assertNull(builder.build().getRecipients( - Message.RecipientType.TO)); + assertNull(builder.build().getRecipients(Message.RecipientType.TO)); builder.setRecipients(Message.RecipientType.TO, null); - assertNull(builder.build().getRecipients( - Message.RecipientType.TO)); + assertNull(builder.build().getRecipients(Message.RecipientType.TO)); builder.setRecipients(Message.RecipientType.TO, addresses); - assertArrayEquals(InternetAddress.parse(addresses), builder - .build().getRecipients(Message.RecipientType.TO)); + assertArrayEquals(InternetAddress.parse(addresses), builder.build().getRecipients(Message.RecipientType.TO)); } @Test @@ -156,7 +150,7 @@ public class SmtpAppenderTest { // can't be tested with Dumpster 1.6 assertEquals("[email protected]", email.getHeaderValue("From")); assertEquals("[email protected]", email.getHeaderValue("Reply-To")); - assertEquals("Subject Pattern " + subjectValue +" Error with", email.getHeaderValue("Subject")); + assertEquals("Subject Pattern " + subjectValue + " Error with", email.getHeaderValue("Subject")); final String body = email.getBody(); assertFalse(body.contains("Debug message #1")); @@ -170,7 +164,7 @@ public class SmtpAppenderTest { final SmtpMessage email2 = messages.next(); - assertEquals("Subject Pattern " + subjectValue +" Error mess", email2.getHeaderValue("Subject")); + assertEquals("Subject Pattern " + subjectValue + " Error mess", email2.getHeaderValue("Subject")); final String body2 = email2.getBody(); assertFalse(body2.contains("Debug message #4")); diff --git a/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpManagerTest.java b/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpManagerTest.java index 65ceccc..378c7f9 100644 --- a/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpManagerTest.java +++ b/log4j-jakarta-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpManagerTest.java @@ -16,6 +16,11 @@ */ package org.apache.logging.log4j.smtp.appender; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.async.RingBufferLogEvent; import org.apache.logging.log4j.core.config.DefaultConfiguration; @@ -28,11 +33,6 @@ import org.apache.logging.log4j.message.ReusableMessage; import org.apache.logging.log4j.message.ReusableSimpleMessage; import org.junit.jupiter.api.Test; -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; - /** * Unit tests for {@link SmtpManager}. */ @@ -40,25 +40,57 @@ public class SmtpManagerTest { @Test void testCreateManagerName() { - final String managerName = SmtpManager.createManagerName("to", "cc", null, "from", null, "LOG4J2-3107", - "proto", "smtp.log4j.com", 4711, "username", false, "filter"); + final String managerName = SmtpManager.createManagerName( + "to", + "cc", + null, + "from", + null, + "LOG4J2-3107", + "proto", + "smtp.log4j.com", + 4711, + "username", + false, + "filter"); assertEquals("SMTP:to:cc::from::LOG4J2-3107:proto:smtp.log4j.com:4711:username::filter", managerName); } private void testAdd(final LogEvent event) { - final SmtpManager smtpManager = SmtpManager.getSmtpManager(new DefaultConfiguration(), "to", "cc", "bcc", "from", "replyTo", "subject", "protocol", "host", 0, "username", "password", false, "filterName", 10, null); + final SmtpManager smtpManager = SmtpManager.getSmtpManager( + new DefaultConfiguration(), + "to", + "cc", + "bcc", + "from", + "replyTo", + "subject", + "protocol", + "host", + 0, + "username", + "password", + false, + "filterName", + 10, + null); smtpManager.removeAllBufferedEvents(); // in case this smtpManager is reused smtpManager.add(event); final LogEvent[] bufferedEvents = smtpManager.removeAllBufferedEvents(); assertThat("unexpected number of buffered events", bufferedEvents.length, is(1)); - assertThat("expected the immutable version of the event to be buffered", bufferedEvents[0].getMessage(), is(instanceOf(MementoMessage.class))); + assertThat( + "expected the immutable version of the event to be buffered", + bufferedEvents[0].getMessage(), + is(instanceOf(MementoMessage.class))); } // LOG4J2-3172: make sure existing protections are not violated @Test void testAdd_WhereLog4jLogEventWithReusableMessage() { - final LogEvent event = new Log4jLogEvent.Builder().setMessage(getReusableMessage("test message")).build(); + final LogEvent event = new Log4jLogEvent.Builder() + .setMessage(getReusableMessage("test message")) + .build(); testAdd(event); } @@ -73,7 +105,22 @@ public class SmtpManagerTest { @Test void testAdd_WhereRingBufferLogEvent() { final RingBufferLogEvent event = new RingBufferLogEvent(); - event.setValues(null, null, null, null, null, getReusableMessage("test message"), null, null, null, 0, null, 0, null, ClockFactory.getClock(), new DummyNanoClock()); + event.setValues( + null, + null, + null, + null, + null, + getReusableMessage("test message"), + null, + null, + null, + 0, + null, + 0, + null, + ClockFactory.getClock(), + new DummyNanoClock()); testAdd(event); } @@ -82,5 +129,4 @@ public class SmtpManagerTest { message.set(text); return message; } - } diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContainerInitializer.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContainerInitializer.java index 4665b7a..f2a234d 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContainerInitializer.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContainerInitializer.java @@ -16,15 +16,13 @@ */ package org.apache.logging.log4j.web; -import java.util.EnumSet; -import java.util.Set; - import jakarta.servlet.DispatcherType; import jakarta.servlet.FilterRegistration; import jakarta.servlet.ServletContainerInitializer; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; - +import java.util.EnumSet; +import java.util.Set; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.status.StatusLogger; @@ -37,10 +35,11 @@ public class Log4jServletContainerInitializer implements ServletContainerInitial @Override public void onStartup(final Set<Class<?>> classes, final ServletContext servletContext) throws ServletException { - if (servletContext.getMajorVersion() > 2 && servletContext.getEffectiveMajorVersion() > 2 && - !"true".equalsIgnoreCase(servletContext.getInitParameter( - Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED - ))) { + if (servletContext.getMajorVersion() > 2 + && servletContext.getEffectiveMajorVersion() > 2 + && !"true" + .equalsIgnoreCase(servletContext.getInitParameter( + Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))) { final Logger LOGGER = StatusLogger.getLogger(); LOGGER.debug("Log4jServletContainerInitializer starting up Log4j in Servlet 3.0+ environment."); @@ -48,9 +47,9 @@ public class Log4jServletContainerInitializer implements ServletContainerInitial final FilterRegistration.Dynamic filter = servletContext.addFilter("log4jServletFilter", Log4jServletFilter.class); if (filter == null) { - LOGGER.warn("WARNING: In a Servlet 3.0+ application, you should not define a " + - "log4jServletFilter in web.xml. Log4j 2 normally does this for you automatically. Log4j 2 " + - "web auto-initialization has been canceled."); + LOGGER.warn("WARNING: In a Servlet 3.0+ application, you should not define a " + + "log4jServletFilter in web.xml. Log4j 2 normally does this for you automatically. Log4j 2 " + + "web auto-initialization has been canceled."); return; } @@ -58,8 +57,9 @@ public class Log4jServletContainerInitializer implements ServletContainerInitial initializer.start(); initializer.setLoggerContext(); // the application is just now starting to start up - if (!"true".equalsIgnoreCase(servletContext.getInitParameter( - Log4jWebSupport.IS_LOG4J_AUTO_SHUTDOWN_DISABLED))) { + if (!"true" + .equalsIgnoreCase( + servletContext.getInitParameter(Log4jWebSupport.IS_LOG4J_AUTO_SHUTDOWN_DISABLED))) { servletContext.addListener(new Log4jServletContextListener()); } diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java index 4b4013d..a10b878 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletContextListener.java @@ -16,18 +16,16 @@ */ package org.apache.logging.log4j.web; -import java.util.concurrent.TimeUnit; +import static org.apache.logging.log4j.util.Strings.toRootUpperCase; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletContextEvent; import jakarta.servlet.ServletContextListener; - +import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.Strings; -import static org.apache.logging.log4j.util.Strings.toRootUpperCase; - /** * In environments older than Servlet 3.0, this initializer is responsible for starting up Log4j logging before anything * else happens in application initialization. In all environments, this shuts down Log4j after the application shuts @@ -72,8 +70,7 @@ public class Log4jServletContextListener implements ServletContextListener { @Override public void contextInitialized(final ServletContextEvent event) { this.servletContext = event.getServletContext(); - if ("true".equalsIgnoreCase(servletContext.getInitParameter( - Log4jWebSupport.IS_LOG4J_AUTO_SHUTDOWN_DISABLED))) { + if ("true".equalsIgnoreCase(servletContext.getInitParameter(Log4jWebSupport.IS_LOG4J_AUTO_SHUTDOWN_DISABLED))) { throw new IllegalStateException("Do not use " + getClass().getSimpleName() + " when " + Log4jWebSupport.IS_LOG4J_AUTO_SHUTDOWN_DISABLED + " is true. Please use " + Log4jShutdownOnContextDestroyedListener.class.getSimpleName() + " instead of " @@ -82,7 +79,8 @@ public class Log4jServletContextListener implements ServletContextListener { this.initializer = WebLoggerContextUtils.getWebLifeCycle(this.servletContext); if (getAndIncrementCount() != 0) { - LOGGER.debug("Skipping Log4j context initialization, since {} is registered multiple times.", + LOGGER.debug( + "Skipping Log4j context initialization, since {} is registered multiple times.", getClass().getSimpleName()); return; } @@ -103,7 +101,8 @@ public class Log4jServletContextListener implements ServletContextListener { } if (decrementAndGetCount() != 0) { - LOGGER.debug("Skipping Log4j context shutdown, since {} is registered multiple times.", + LOGGER.debug( + "Skipping Log4j context shutdown, since {} is registered multiple times.", getClass().getSimpleName()); return; } @@ -112,10 +111,11 @@ public class Log4jServletContextListener implements ServletContextListener { this.initializer.clearLoggerContext(); // the application is finished // shutting down now final String stopTimeoutStr = servletContext.getInitParameter(KEY_STOP_TIMEOUT); - final long stopTimeout = Strings.isEmpty(stopTimeoutStr) ? DEFAULT_STOP_TIMEOUT - : Long.parseLong(stopTimeoutStr); + final long stopTimeout = + Strings.isEmpty(stopTimeoutStr) ? DEFAULT_STOP_TIMEOUT : Long.parseLong(stopTimeoutStr); final String timeoutTimeUnitStr = servletContext.getInitParameter(KEY_STOP_TIMEOUT_TIMEUNIT); - final TimeUnit timeoutTimeUnit = Strings.isEmpty(timeoutTimeUnitStr) ? DEFAULT_STOP_TIMEOUT_TIMEUNIT + final TimeUnit timeoutTimeUnit = Strings.isEmpty(timeoutTimeUnitStr) + ? DEFAULT_STOP_TIMEOUT_TIMEUNIT : TimeUnit.valueOf(toRootUpperCase(timeoutTimeUnitStr)); this.initializer.stop(stopTimeout, timeoutTimeUnit); } catch (final IllegalStateException e) { diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java index 95aa815..cdc42f4 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jServletFilter.java @@ -16,8 +16,6 @@ */ package org.apache.logging.log4j.web; -import java.io.IOException; - import jakarta.servlet.Filter; import jakarta.servlet.FilterChain; import jakarta.servlet.FilterConfig; @@ -25,7 +23,7 @@ import jakarta.servlet.ServletContext; import jakarta.servlet.ServletException; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; - +import java.io.IOException; import java.util.function.BiConsumer; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.status.StatusLogger; @@ -59,8 +57,8 @@ public class Log4jServletFilter implements Filter { this.initializer = WebLoggerContextUtils.getWebLifeCycle(this.servletContext); this.initializer.clearLoggerContext(); // the application is mostly finished starting up now - filterConfig.getServletContext().setAttribute("log4j.requestExecutor", - (BiConsumer<ServletRequest, Runnable>) (request, command) -> { + filterConfig.getServletContext().setAttribute("log4j.requestExecutor", (BiConsumer<ServletRequest, Runnable>) + (request, command) -> { try { Log4jServletFilter.this.initializer.setLoggerContext(); CURRENT_REQUEST.set(request); diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListener.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListener.java index 9a2e6a8..e129225 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListener.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListener.java @@ -16,18 +16,16 @@ */ package org.apache.logging.log4j.web; -import java.util.concurrent.TimeUnit; +import static org.apache.logging.log4j.util.Strings.toRootUpperCase; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletContextEvent; import jakarta.servlet.ServletContextListener; - +import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.Strings; -import static org.apache.logging.log4j.util.Strings.toRootUpperCase; - public class Log4jShutdownOnContextDestroyedListener implements ServletContextListener { static final int DEFAULT_STOP_TIMEOUT = 30; @@ -43,12 +41,11 @@ public class Log4jShutdownOnContextDestroyedListener implements ServletContextLi @Override public void contextInitialized(final ServletContextEvent event) { - LOGGER.debug(Log4jShutdownOnContextDestroyedListener.class.getSimpleName() + - " ensuring that Log4j started up properly."); + LOGGER.debug(Log4jShutdownOnContextDestroyedListener.class.getSimpleName() + + " ensuring that Log4j started up properly."); servletContext = event.getServletContext(); if (null == servletContext.getAttribute(Log4jWebSupport.SUPPORT_ATTRIBUTE)) { - throw new IllegalStateException( - "Context did not contain required Log4jWebLifeCycle in the " + throw new IllegalStateException("Context did not contain required Log4jWebLifeCycle in the " + Log4jWebSupport.SUPPORT_ATTRIBUTE + " attribute."); } this.initializer = WebLoggerContextUtils.getWebLifeCycle(servletContext); @@ -60,16 +57,17 @@ public class Log4jShutdownOnContextDestroyedListener implements ServletContextLi LOGGER.warn("Context destroyed before it was initialized."); return; } - LOGGER.debug(Log4jShutdownOnContextDestroyedListener.class.getSimpleName() + - " ensuring that Log4j shuts down properly."); + LOGGER.debug(Log4jShutdownOnContextDestroyedListener.class.getSimpleName() + + " ensuring that Log4j shuts down properly."); this.initializer.clearLoggerContext(); // the application is finished // shutting down now final String stopTimeoutStr = servletContext.getInitParameter(KEY_STOP_TIMEOUT); - final long stopTimeout = Strings.isEmpty(stopTimeoutStr) ? DEFAULT_STOP_TIMEOUT - : Long.parseLong(stopTimeoutStr); + final long stopTimeout = + Strings.isEmpty(stopTimeoutStr) ? DEFAULT_STOP_TIMEOUT : Long.parseLong(stopTimeoutStr); final String timeoutTimeUnitStr = servletContext.getInitParameter(KEY_STOP_TIMEOUT_TIMEUNIT); - final TimeUnit timeoutTimeUnit = Strings.isEmpty(timeoutTimeUnitStr) ? DEFAULT_STOP_TIMEOUT_TIMEUNIT + final TimeUnit timeoutTimeUnit = Strings.isEmpty(timeoutTimeUnitStr) + ? DEFAULT_STOP_TIMEOUT_TIMEUNIT : TimeUnit.valueOf(toRootUpperCase(timeoutTimeUnitStr)); this.initializer.stop(stopTimeout, timeoutTimeUnit); } diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java index d8ce29d..22dcfe4 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/Log4jWebInitializerImpl.java @@ -16,6 +16,7 @@ */ package org.apache.logging.log4j.web; +import jakarta.servlet.ServletContext; import java.net.URI; import java.net.URL; import java.text.SimpleDateFormat; @@ -27,9 +28,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; - -import jakarta.servlet.ServletContext; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.AbstractLifeCycle; import org.apache.logging.log4j.core.LoggerContext; @@ -103,10 +101,10 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe super.setStarting(); this.name = this.substitutor.replace(this.servletContext.getInitParameter(LOG4J_CONTEXT_NAME)); - final String location = this.substitutor.replace(this.servletContext - .getInitParameter(LOG4J_CONFIG_LOCATION)); - final boolean isJndi = "true".equalsIgnoreCase(this.servletContext - .getInitParameter(IS_LOG4J_CONTEXT_SELECTOR_NAMED)); + final String location = + this.substitutor.replace(this.servletContext.getInitParameter(LOG4J_CONFIG_LOCATION)); + final boolean isJndi = + "true".equalsIgnoreCase(this.servletContext.getInitParameter(IS_LOG4J_CONTEXT_SELECTOR_NAMED)); if (isJndi) { this.initializeJndi(location); @@ -135,8 +133,8 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe final ContextSelector selector = ((Log4jContextFactory) factory).getSelector(); if (selector instanceof NamedContextSelector) { this.namedContextSelector = (NamedContextSelector) selector; - context = this.namedContextSelector.locateContext(this.name, - WebLoggerContextUtils.createExternalEntry(this.servletContext), configLocation); + context = this.namedContextSelector.locateContext( + this.name, WebLoggerContextUtils.createExternalEntry(this.servletContext), configLocation); ContextAnchor.THREAD_CONTEXT.set(context); if (context.isInitialized()) { context.start(); @@ -151,7 +149,10 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe return; } this.loggerContext = context; - LOGGER.debug("Created logger context for [{}] using [{}].", this.name, context.getClass().getClassLoader()); + LOGGER.debug( + "Created logger context for [{}] using [{}].", + this.name, + context.getClass().getClassLoader()); } private void initializeNonJndi(final String location) { @@ -169,14 +170,17 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe } if (location != null && location.contains(",")) { final List<URI> uris = getConfigURIs(location); - this.loggerContext = Configurator.initialize(this.name, this.getClassLoader(), uris, + this.loggerContext = Configurator.initialize( + this.name, + this.getClassLoader(), + uris, WebLoggerContextUtils.createExternalEntry(this.servletContext)); return; } final URI uri = getConfigURI(location); - this.loggerContext = Configurator.initialize(this.name, this.getClassLoader(), uri, - WebLoggerContextUtils.createExternalEntry(this.servletContext)); + this.loggerContext = Configurator.initialize( + this.name, this.getClassLoader(), uri, WebLoggerContextUtils.createExternalEntry(this.servletContext)); } private List<URI> getConfigURIs(final String location) { @@ -196,7 +200,10 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe String configLocation = location; if (configLocation == null) { final String[] paths = prefixSet(servletContext.getResourcePaths(WEB_INF), WEB_INF + "log4j2"); - LOGGER.debug("getConfigURI found resource paths {} in servletContext at [{}]", Arrays.toString(paths), WEB_INF); + LOGGER.debug( + "getConfigURI found resource paths {} in servletContext at [{}]", + Arrays.toString(paths), + WEB_INF); if (paths.length == 1) { configLocation = paths[0]; } else if (paths.length > 1) { @@ -249,10 +256,7 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe if (set == null) { return Strings.EMPTY_ARRAY; } - return set - .stream() - .filter(string -> string.startsWith(prefix)) - .toArray(String[]::new); + return set.stream().filter(string -> string.startsWith(prefix)).toArray(String[]::new); } @Override @@ -313,5 +317,4 @@ final class Log4jWebInitializerImpl extends AbstractLifeCycle implements Log4jWe return LoaderUtil.getThreadContextClassLoader(); } } - } diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/ServletRequestThreadContext.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/ServletRequestThreadContext.java index 91e2c8d..5e38b3d 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/ServletRequestThreadContext.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/ServletRequestThreadContext.java @@ -16,11 +16,9 @@ */ package org.apache.logging.log4j.web; -import java.util.Objects; - import jakarta.servlet.ServletRequest; import jakarta.servlet.http.HttpServletRequest; - +import java.util.Objects; import org.apache.logging.log4j.ThreadContext; public class ServletRequestThreadContext { diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java index 7b46eb8..de22870 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLoggerContextUtils.java @@ -16,13 +16,11 @@ */ package org.apache.logging.log4j.web; +import jakarta.servlet.ServletContext; import java.util.AbstractMap; import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; - -import jakarta.servlet.ServletContext; - import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.impl.ContextAnchor; @@ -36,8 +34,7 @@ import org.apache.logging.log4j.core.impl.ContextAnchor; * @since 2.0.1 */ public final class WebLoggerContextUtils { - private WebLoggerContextUtils() { - } + private WebLoggerContextUtils() {} private static final Lock WEB_SUPPORT_LOOKUP = new ReentrantLock(); private static final String SERVLET_CONTEXT = "__SERVLET_CONTEXT__"; @@ -65,7 +62,7 @@ public final class WebLoggerContextUtils { final LoggerContext loggerContext = getWebLoggerContext(servletContext); if (loggerContext == null) { throw new IllegalStateException( - "No LoggerContext found in ServletContext attribute " + Log4jWebSupport.CONTEXT_ATTRIBUTE); + "No LoggerContext found in ServletContext attribute " + Log4jWebSupport.CONTEXT_ATTRIBUTE); } return loggerContext; } @@ -81,8 +78,8 @@ public final class WebLoggerContextUtils { public static Log4jWebLifeCycle getWebLifeCycle(final ServletContext servletContext) { WEB_SUPPORT_LOOKUP.lock(); try { - Log4jWebLifeCycle webLifeCycle = (Log4jWebLifeCycle) servletContext.getAttribute( - Log4jWebSupport.SUPPORT_ATTRIBUTE); + Log4jWebLifeCycle webLifeCycle = + (Log4jWebLifeCycle) servletContext.getAttribute(Log4jWebSupport.SUPPORT_ATTRIBUTE); if (webLifeCycle == null) { webLifeCycle = Log4jWebInitializerImpl.initialize(servletContext); } diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLookup.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLookup.java index b13ad0c..efb312e 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLookup.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/WebLookup.java @@ -69,26 +69,29 @@ public class WebLookup extends AbstractLookup { if (key.startsWith(REQUEST_HEADER_PREFIX)) { final String name = key.substring(REQUEST_HEADER_PREFIX.length()); final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? HttpServletRequest.class.cast(req).getHeader(name) : null; + return HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getHeader(name) + : null; } if (key.startsWith(REQUEST_COOKIE_PREFIX)) { final String name = key.substring(REQUEST_COOKIE_PREFIX.length()); final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? - Stream.of(HttpServletRequest.class.cast(req).getCookies()) - .filter(c -> name.equals(c.getName())) - .findFirst() - .map(Cookie::getValue) - .orElse(null) : - null; + return HttpServletRequest.class.isInstance(req) + ? Stream.of(HttpServletRequest.class.cast(req).getCookies()) + .filter(c -> name.equals(c.getName())) + .findFirst() + .map(Cookie::getValue) + .orElse(null) + : null; } if (key.startsWith(REQUEST_PARAMETER_PREFIX)) { final String name = key.substring(REQUEST_PARAMETER_PREFIX.length()); final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? - HttpServletRequest.class.cast(req).getParameter(name) : null; + return HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getParameter(name) + : null; } if (key.startsWith(SESSION_ATTR_PREFIX)) { @@ -105,57 +108,67 @@ public class WebLookup extends AbstractLookup { if ("request.method".equals(key)) { final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? HttpServletRequest.class.cast(req).getMethod() : null; + return HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getMethod() + : null; } if ("request.uri".equals(key)) { final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? HttpServletRequest.class.cast(req).getRequestURI() : null; + return HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getRequestURI() + : null; } if ("request.url".equals(key)) { final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? - HttpServletRequest.class.cast(req).getRequestURL().toString() : null; + return HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getRequestURL().toString() + : null; } if ("request.remoteAddress".equals(key)) { final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? - HttpServletRequest.class.cast(req).getRemoteAddr() : null; + return HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getRemoteAddr() + : null; } if ("request.remoteHost".equals(key)) { final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? - HttpServletRequest.class.cast(req).getRemoteHost() : null; + return HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getRemoteHost() + : null; } if ("request.remotePort".equals(key)) { final ServletRequest req = getRequest(); - return HttpServletRequest.class.isInstance(req) ? - Integer.toString(HttpServletRequest.class.cast(req).getRemotePort()) : null; + return HttpServletRequest.class.isInstance(req) + ? Integer.toString(HttpServletRequest.class.cast(req).getRemotePort()) + : null; } if ("request.principal".equals(key)) { final ServletRequest req = getRequest(); - final Principal pcp = req instanceof HttpServletRequest ? ((HttpServletRequest) req).getUserPrincipal() : null; + final Principal pcp = + req instanceof HttpServletRequest ? ((HttpServletRequest) req).getUserPrincipal() : null; return pcp == null ? null : pcp.getName(); } if ("session.id".equals(key)) { final ServletRequest req = getRequest(); - final HttpSession session = HttpServletRequest.class.isInstance(req) ? - HttpServletRequest.class.cast(req).getSession(false) : null; + final HttpSession session = HttpServletRequest.class.isInstance(req) + ? HttpServletRequest.class.cast(req).getSession(false) + : null; return session == null ? null : session.getId(); } if ("rootDir".equals(key)) { final String root = ctx.getRealPath("/"); if (root == null) { - final String msg = "Failed to resolve web:rootDir -- " + - "servlet container unable to translate virtual path " + - " to real path (probably not deployed as exploded"; + final String msg = + "Failed to resolve web:rootDir -- " + "servlet container unable to translate virtual path " + + " to real path (probably not deployed as exploded"; throw new IllegalStateException(msg); } return root; diff --git a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java index 406d255..738b686 100644 --- a/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java +++ b/log4j-jakarta-web/src/main/java/org/apache/logging/log4j/web/appender/ServletAppender.java @@ -17,7 +17,6 @@ package org.apache.logging.log4j.web.appender; import jakarta.servlet.ServletContext; - import org.apache.logging.log4j.core.Appender; import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.Layout; @@ -55,8 +54,8 @@ public final class ServletAppender extends AbstractAppender { return null; } Layout layout = getOrCreateLayout(); - return new ServletAppender(name, layout, getFilter(), servletContext, isIgnoreExceptions(), logThrowables, - getPropertyArray()); + return new ServletAppender( + name, layout, getFilter(), servletContext, isIgnoreExceptions(), logThrowables, getPropertyArray()); } /** @@ -74,7 +73,6 @@ public final class ServletAppender extends AbstractAppender { public void setLogThrowables(final boolean logThrowables) { this.logThrowables = logThrowables; } - } @Factory @@ -85,9 +83,14 @@ public final class ServletAppender extends AbstractAppender { private final ServletContext servletContext; private final boolean logThrowables; - private ServletAppender(final String name, final Layout layout, final Filter filter, - final ServletContext servletContext, final boolean ignoreExceptions, final boolean logThrowables, - Property[] properties) { + private ServletAppender( + final String name, + final Layout layout, + final Filter filter, + final ServletContext servletContext, + final boolean ignoreExceptions, + final boolean logThrowables, + Property[] properties) { super(name, filter, layout, ignoreExceptions, properties); this.servletContext = servletContext; this.logThrowables = logThrowables; diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContainerInitializerTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContainerInitializerTest.java index 449e52a..489941c 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContainerInitializerTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContainerInitializerTest.java @@ -16,17 +16,24 @@ */ package org.apache.logging.log4j.web; -import java.util.EnumSet; -import java.util.EventListener; -import java.util.ServiceLoader; -import java.util.stream.StreamSupport; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.any; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.never; +import static org.mockito.BDDMockito.then; +import static org.mockito.BDDMockito.willThrow; +import static org.mockito.Mockito.mock; import jakarta.servlet.DispatcherType; import jakarta.servlet.Filter; import jakarta.servlet.FilterRegistration; import jakarta.servlet.ServletContainerInitializer; import jakarta.servlet.ServletContext; - +import java.util.EnumSet; +import java.util.EventListener; +import java.util.ServiceLoader; +import java.util.stream.StreamSupport; import org.apache.logging.log4j.util.Strings; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -36,23 +43,17 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.any; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.never; -import static org.mockito.BDDMockito.then; -import static org.mockito.BDDMockito.willThrow; -import static org.mockito.Mockito.mock; - @ExtendWith(MockitoExtension.class) public class Log4jServletContainerInitializerTest { @Mock private ServletContext servletContext; + @Mock private Log4jWebLifeCycle initializer; + @Captor private ArgumentCaptor<Class<? extends Filter>> filterCaptor; + @Captor private ArgumentCaptor<EventListener> listenerCaptor; @@ -82,8 +83,8 @@ public class Log4jServletContainerInitializerTest { public void testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTrue() throws Exception { given(servletContext.getMajorVersion()).willReturn(3); given(servletContext.getEffectiveMajorVersion()).willReturn(3); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))).willReturn( - "true"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))) + .willReturn("true"); this.containerInitializer.onStartup(null, this.servletContext); } @@ -94,10 +95,11 @@ public class Log4jServletContainerInitializerTest { given(servletContext.getMajorVersion()).willReturn(3); given(servletContext.getEffectiveMajorVersion()).willReturn(3); given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_SHUTDOWN_DISABLED))) - .willReturn("true"); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))).willReturn( - null); - given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())).willReturn(registration); + .willReturn("true"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))) + .willReturn(null); + given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())) + .willReturn(registration); given(servletContext.getAttribute(Log4jWebSupport.SUPPORT_ATTRIBUTE)).willReturn(initializer); this.containerInitializer.onStartup(null, this.servletContext); @@ -105,7 +107,9 @@ public class Log4jServletContainerInitializerTest { then(initializer).should().start(); then(initializer).should().setLoggerContext(); then(registration).should().setAsyncSupported(eq(true)); - then(registration).should().addMappingForUrlPatterns(eq(EnumSet.allOf(DispatcherType.class)), eq(false), eq("/*")); + then(registration) + .should() + .addMappingForUrlPatterns(eq(EnumSet.allOf(DispatcherType.class)), eq(false), eq("/*")); // initParam IS_LOG4J_AUTO_SHUTDOWN_DISABLED is "true" so addListener shouldn't be called. then(servletContext).should(never()).addListener(any(Log4jServletContextListener.class)); @@ -115,8 +119,8 @@ public class Log4jServletContainerInitializerTest { public void testOnStartupWithServletVersion3_xEffectiveVersion3_xDisabledTRUE() throws Exception { given(servletContext.getMajorVersion()).willReturn(3); given(servletContext.getEffectiveMajorVersion()).willReturn(3); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))).willReturn( - "TRUE"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))) + .willReturn("TRUE"); this.containerInitializer.onStartup(null, this.servletContext); } @@ -126,9 +130,10 @@ public class Log4jServletContainerInitializerTest { final FilterRegistration.Dynamic registration = mock(FilterRegistration.Dynamic.class); given(servletContext.getMajorVersion()).willReturn(3); given(servletContext.getEffectiveMajorVersion()).willReturn(3); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))).willReturn( - null); - given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())).willReturn(registration); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))) + .willReturn(null); + given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())) + .willReturn(registration); given(servletContext.getAttribute(Log4jWebSupport.SUPPORT_ATTRIBUTE)).willReturn(initializer); containerInitializer.onStartup(null, servletContext); @@ -137,12 +142,15 @@ public class Log4jServletContainerInitializerTest { then(initializer).should().setLoggerContext(); then(servletContext).should().addListener(listenerCaptor.capture()); then(registration).should().setAsyncSupported(eq(true)); - then(registration).should().addMappingForUrlPatterns(eq(EnumSet.allOf(DispatcherType.class)), eq(false), eq("/*")); + then(registration) + .should() + .addMappingForUrlPatterns(eq(EnumSet.allOf(DispatcherType.class)), eq(false), eq("/*")); assertNotNull(listenerCaptor.getValue(), "The listener should not be null."); - assertSame(Log4jServletContextListener.class, - listenerCaptor.getValue().getClass(), - "The listener is not correct."); + assertSame( + Log4jServletContextListener.class, + listenerCaptor.getValue().getClass(), + "The listener is not correct."); assertNotNull(filterCaptor.getValue(), "The filter should not be null."); assertSame(Log4jServletFilter.class, filterCaptor.getValue(), "The filter is not correct."); @@ -152,9 +160,10 @@ public class Log4jServletContainerInitializerTest { public void testOnStartupCanceledDueToPreExistingFilter() throws Exception { given(servletContext.getMajorVersion()).willReturn(3); given(servletContext.getEffectiveMajorVersion()).willReturn(3); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))).willReturn( - "false"); - given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())).willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))) + .willReturn("false"); + given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())) + .willReturn(null); this.containerInitializer.onStartup(null, this.servletContext); @@ -168,9 +177,10 @@ public class Log4jServletContainerInitializerTest { final IllegalStateException exception = new IllegalStateException(Strings.EMPTY); given(servletContext.getMajorVersion()).willReturn(3); given(servletContext.getEffectiveMajorVersion()).willReturn(3); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))).willReturn( - "balderdash"); - given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())).willReturn(registration); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_AUTO_INITIALIZATION_DISABLED))) + .willReturn("balderdash"); + given(servletContext.addFilter(eq("log4jServletFilter"), filterCaptor.capture())) + .willReturn(registration); given(servletContext.getAttribute(Log4jWebSupport.SUPPORT_ATTRIBUTE)).willReturn(initializer); willThrow(exception).given(initializer).start(); @@ -190,7 +200,7 @@ public class Log4jServletContainerInitializerTest { public void testServiceIsDetected() { final ServiceLoader<ServletContainerInitializer> loader = ServiceLoader.load(ServletContainerInitializer.class); final boolean found = StreamSupport.stream(loader.spliterator(), false) - .anyMatch(s -> s instanceof Log4jServletContainerInitializer); + .anyMatch(s -> s instanceof Log4jServletContainerInitializer); assertTrue(found, "ServletContainerInitializer not found."); } } diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java index f2e5d86..f7eb1f6 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletContextListenerTest.java @@ -16,11 +16,20 @@ */ package org.apache.logging.log4j.web; -import java.util.concurrent.atomic.AtomicReference; +import static org.apache.logging.log4j.web.Log4jServletContextListener.DEFAULT_STOP_TIMEOUT; +import static org.apache.logging.log4j.web.Log4jServletContextListener.DEFAULT_STOP_TIMEOUT_TIMEUNIT; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.AdditionalAnswers.answerVoid; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.BDDMockito.willThrow; +import static org.mockito.Mockito.doAnswer; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletContextEvent; - +import java.util.concurrent.atomic.AtomicReference; import org.apache.logging.log4j.util.Strings; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -31,17 +40,6 @@ import org.mockito.Mock; import org.mockito.Mock.Strictness; import org.mockito.junit.jupiter.MockitoExtension; -import static org.apache.logging.log4j.web.Log4jServletContextListener.DEFAULT_STOP_TIMEOUT; -import static org.apache.logging.log4j.web.Log4jServletContextListener.DEFAULT_STOP_TIMEOUT_TIMEUNIT; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.AdditionalAnswers.answerVoid; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.BDDMockito.willThrow; -import static org.mockito.Mockito.doAnswer; - @ExtendWith(MockitoExtension.class) public class Log4jServletContextListenerTest { /* event and servletContext are marked lenient because they aren't used in the @@ -49,8 +47,10 @@ public class Log4jServletContextListenerTest { */ @Mock(strictness = Strictness.LENIENT) private ServletContextEvent event; + @Mock(strictness = Strictness.LENIENT) private ServletContext servletContext; + @Mock private Log4jWebLifeCycle initializer; @@ -64,13 +64,11 @@ public class Log4jServletContextListenerTest { doAnswer(answerVoid((k, v) -> count.set(v))) .when(servletContext) .setAttribute(eq(Log4jServletContextListener.START_COUNT_ATTR), any()); - doAnswer(__ -> count.get()) - .when(servletContext) - .getAttribute(Log4jServletContextListener.START_COUNT_ATTR); + doAnswer(__ -> count.get()).when(servletContext).getAttribute(Log4jServletContextListener.START_COUNT_ATTR); } @ParameterizedTest - @ValueSource(ints = { 1, 2, 3 }) + @ValueSource(ints = {1, 2, 3}) public void testInitAndDestroy(final int listenerCount) throws Exception { final Log4jServletContextListener[] listeners = new Log4jServletContextListener[listenerCount]; for (int idx = 0; idx < listenerCount; idx++) { @@ -104,7 +102,9 @@ public class Log4jServletContextListenerTest { willThrow(new IllegalStateException(Strings.EMPTY)).given(initializer).start(); final Log4jServletContextListener listener = new Log4jServletContextListener(); - assertThrows(RuntimeException.class, () -> listener.contextInitialized(this.event), + assertThrows( + RuntimeException.class, + () -> listener.contextInitialized(this.event), "Failed to initialize Log4j properly."); } diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java index 69261f2..e998798 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jServletFilterTest.java @@ -16,37 +16,41 @@ */ package org.apache.logging.log4j.web; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.same; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.reset; + import jakarta.servlet.FilterChain; import jakarta.servlet.FilterConfig; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletRequest; import jakarta.servlet.ServletResponse; - import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.ArgumentMatchers.same; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.reset; - @ExtendWith(MockitoExtension.class) public class Log4jServletFilterTest { @Mock(lenient = true) // because filterConfig is not used in testDestroy private FilterConfig filterConfig; + @Mock(lenient = true) // because filterConfig is not used in testDestroy private ServletContext servletContext; + @Mock private Log4jWebLifeCycle initializer; + @Mock private ServletRequest request; + @Mock private ServletResponse response; + @Mock private FilterChain chain; @@ -84,7 +88,8 @@ public class Log4jServletFilterTest { then(initializer).should().clearLoggerContext(); reset(initializer); - given(request.getAttribute(Log4jServletFilter.ALREADY_FILTERED_ATTRIBUTE)).willReturn(null); + given(request.getAttribute(Log4jServletFilter.ALREADY_FILTERED_ATTRIBUTE)) + .willReturn(null); this.filter.doFilter(request, response, chain); @@ -102,7 +107,8 @@ public class Log4jServletFilterTest { then(initializer).should().clearLoggerContext(); - given(request.getAttribute(Log4jServletFilter.ALREADY_FILTERED_ATTRIBUTE)).willReturn(true); + given(request.getAttribute(Log4jServletFilter.ALREADY_FILTERED_ATTRIBUTE)) + .willReturn(true); this.filter.doFilter(request, response, chain); diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListenerTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListenerTest.java index 9d6bc9c..abf72b5 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListenerTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jShutdownOnContextDestroyedListenerTest.java @@ -16,14 +16,6 @@ */ package org.apache.logging.log4j.web; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletContextEvent; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - import static org.apache.logging.log4j.web.Log4jShutdownOnContextDestroyedListener.DEFAULT_STOP_TIMEOUT; import static org.apache.logging.log4j.web.Log4jShutdownOnContextDestroyedListener.DEFAULT_STOP_TIMEOUT_TIMEUNIT; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -31,12 +23,21 @@ import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.then; import static org.mockito.Mockito.never; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletContextEvent; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + @ExtendWith(MockitoExtension.class) public class Log4jShutdownOnContextDestroyedListenerTest { @Mock(lenient = true) private ServletContextEvent event; + @Mock(lenient = true) private ServletContext servletContext; + @Mock private Log4jWebLifeCycle initializer; diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java index 4e83008..9bde13d 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/Log4jWebInitializerImplTest.java @@ -16,12 +16,21 @@ */ package org.apache.logging.log4j.web; +import static java.util.Arrays.asList; +import static java.util.Collections.singletonList; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; + +import jakarta.servlet.ServletContext; import java.net.URI; import java.net.URL; import java.util.HashSet; - -import jakarta.servlet.ServletContext; - import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.DefaultConfiguration; import org.apache.logging.log4j.core.config.composite.CompositeConfiguration; @@ -34,18 +43,6 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import static java.util.Arrays.asList; -import static java.util.Collections.singletonList; - -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - @ExtendWith(MockitoExtension.class) public class Log4jWebInitializerImplTest { /* Marking servletContext lenient because otherwise testCompositeLocationParameterWithEmptyUriListSetsDefaultConfiguration fails @@ -53,8 +50,10 @@ public class Log4jWebInitializerImplTest { */ @Mock(lenient = true) private ServletContext servletContext; + @Captor private ArgumentCaptor<Log4jWebLifeCycle> initializerCaptor; + @Captor private ArgumentCaptor<LoggerContext> loggerContextCaptor; @@ -101,15 +100,20 @@ public class Log4jWebInitializerImplTest { @Test public void testInitializeWithNoParametersThenSetLoggerContextThenDeinitialize() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn(null); given(servletContext.getServletContextName()).willReturn("helloWorld01"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); final org.apache.logging.log4j.spi.LoggerContext loggerContext = loggerContextCaptor.getValue(); @@ -138,9 +142,12 @@ public class Log4jWebInitializerImplTest { @Test public void testInitializeWithClassLoaderNoParametersThenSetLoggerContextThenDeinitialize() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn("false"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn("false"); given(servletContext.getServletContextName()).willReturn("helloWorld02"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); given(servletContext.getClassLoader()).willReturn(getClass().getClassLoader()); @@ -148,7 +155,9 @@ public class Log4jWebInitializerImplTest { this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); final org.apache.logging.log4j.spi.LoggerContext loggerContext = loggerContextCaptor.getValue(); @@ -177,9 +186,12 @@ public class Log4jWebInitializerImplTest { @Test public void testInitializeIsIdempotent() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn("nothing"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn("nothing"); given(servletContext.getServletContextName()).willReturn("helloWorld03"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); given(servletContext.getClassLoader()).willReturn(getClass().getClassLoader()); @@ -187,7 +199,9 @@ public class Log4jWebInitializerImplTest { this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); this.initializerImpl.start(); @@ -200,9 +214,12 @@ public class Log4jWebInitializerImplTest { @Test public void testInitializeFailsAfterDeinitialize() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn(null); given(servletContext.getServletContextName()).willReturn("helloWorld04"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); given(servletContext.getClassLoader()).willReturn(getClass().getClassLoader()); @@ -210,7 +227,9 @@ public class Log4jWebInitializerImplTest { this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); this.initializerImpl.stop(); @@ -224,9 +243,12 @@ public class Log4jWebInitializerImplTest { @Test public void testDeinitializeIsIdempotent() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn(null); given(servletContext.getServletContextName()).willReturn("helloWorld05"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); given(servletContext.getClassLoader()).willReturn(getClass().getClassLoader()); @@ -234,7 +256,9 @@ public class Log4jWebInitializerImplTest { this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); this.initializerImpl.stop(); @@ -245,9 +269,12 @@ public class Log4jWebInitializerImplTest { @Test public void testInitializeUsingJndiSelectorFails() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn("true"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn("true"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); assertNull(ContextAnchor.THREAD_CONTEXT.get(), "The context should be null."); @@ -258,15 +285,20 @@ public class Log4jWebInitializerImplTest { @Test public void testInitializeUsingJndiSelector() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn("helloWorld06"); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn("true"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn("helloWorld06"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn("true"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); assertNull(ContextAnchor.THREAD_CONTEXT.get(), "The context should be null."); this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNull(loggerContextCaptor.getValue(), "The context attribute should be null."); assertNull(ContextAnchor.THREAD_CONTEXT.get(), "The context should still be null."); @@ -290,16 +322,21 @@ public class Log4jWebInitializerImplTest { @Test public void testWrapExecutionWithNoParameters() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(null); - given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))).willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(null); + given(servletContext.getInitParameter(eq(Log4jWebSupport.IS_LOG4J_CONTEXT_SELECTOR_NAMED))) + .willReturn(null); given(servletContext.getServletContextName()).willReturn("helloWorld07"); given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(null); assertNull(ContextAnchor.THREAD_CONTEXT.get(), "The context should be null."); this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); final org.apache.logging.log4j.spi.LoggerContext loggerContext = loggerContextCaptor.getValue(); @@ -332,7 +369,9 @@ public class Log4jWebInitializerImplTest { this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); assertThat(loggerContextCaptor.getValue().getConfigLocation(), is(nullValue())); @@ -342,33 +381,43 @@ public class Log4jWebInitializerImplTest { @Test public void testMissingLocationParameterWithOneMatchingResourceUsesResourceConfigLocation() throws Exception { - given(servletContext.getResourcePaths("/WEB-INF/")).willReturn(new HashSet<>(singletonList("/WEB-INF/log4j2.xml"))); + given(servletContext.getResourcePaths("/WEB-INF/")) + .willReturn(new HashSet<>(singletonList("/WEB-INF/log4j2.xml"))); given(servletContext.getResource("/WEB-INF/log4j2.xml")).willReturn(new URL("file:/a/b/c/WEB-INF/log4j2.xml")); this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); - assertThat(loggerContextCaptor.getValue().getConfigLocation(), is(URI.create("file:/a/b/c/WEB-INF/log4j2.xml"))); + assertThat( + loggerContextCaptor.getValue().getConfigLocation(), is(URI.create("file:/a/b/c/WEB-INF/log4j2.xml"))); this.initializerImpl.stop(); } @Test - public void testMissingLocationParameterWithManyMatchingResourcesUsesFirstMatchingResourceConfigLocation() throws Exception { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn("mycontext"); - given(servletContext.getResourcePaths("/WEB-INF/")).willReturn( - new HashSet<>(asList("/WEB-INF/a.xml", "/WEB-INF/log4j2-mycontext.xml", "/WEB-INF/log4j2.xml"))); - given(servletContext.getResource("/WEB-INF/log4j2-mycontext.xml")).willReturn( - new URL("file:/a/b/c/WEB-INF/log4j2-mycontext.xml")); + public void testMissingLocationParameterWithManyMatchingResourcesUsesFirstMatchingResourceConfigLocation() + throws Exception { + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn("mycontext"); + given(servletContext.getResourcePaths("/WEB-INF/")) + .willReturn(new HashSet<>( + asList("/WEB-INF/a.xml", "/WEB-INF/log4j2-mycontext.xml", "/WEB-INF/log4j2.xml"))); + given(servletContext.getResource("/WEB-INF/log4j2-mycontext.xml")) + .willReturn(new URL("file:/a/b/c/WEB-INF/log4j2-mycontext.xml")); this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); - assertThat(loggerContextCaptor.getValue().getConfigLocation(), + assertThat( + loggerContextCaptor.getValue().getConfigLocation(), is(URI.create("file:/a/b/c/WEB-INF/log4j2-mycontext.xml"))); this.initializerImpl.stop(); @@ -376,11 +425,14 @@ public class Log4jWebInitializerImplTest { @Test public void testCompositeLocationParameterWithEmptyUriListSetsDefaultConfiguration() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn(",,,"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn(",,,"); this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); assertThat(loggerContextCaptor.getValue().getConfiguration(), is(instanceOf(DefaultConfiguration.class))); @@ -390,13 +442,16 @@ public class Log4jWebInitializerImplTest { @Test public void testCompositeLocationParameterSetsCompositeConfiguration() { - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))).willReturn("mycontext"); - given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))).willReturn( - "log4j2-combined.xml,log4j2-override.xml"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONTEXT_NAME))) + .willReturn("mycontext"); + given(servletContext.getInitParameter(eq(Log4jWebSupport.LOG4J_CONFIG_LOCATION))) + .willReturn("log4j2-combined.xml,log4j2-override.xml"); this.initializerImpl.start(); - then(servletContext).should().setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); + then(servletContext) + .should() + .setAttribute(eq(Log4jWebSupport.CONTEXT_ATTRIBUTE), loggerContextCaptor.capture()); assertNotNull(loggerContextCaptor.getValue(), "The context attribute should not be null."); assertThat(loggerContextCaptor.getValue().getConfiguration(), is(instanceOf(CompositeConfiguration.class))); diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/PropertyTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/PropertyTest.java index 764235c..870fb08 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/PropertyTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/PropertyTest.java @@ -16,14 +16,14 @@ */ package org.apache.logging.log4j.web; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.impl.Log4jContextFactory; import org.apache.logging.log4j.util.Constants; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - /** * */ @@ -38,6 +38,7 @@ public class PropertyTest { @Test public void testIsWebApp() { - assertTrue(Constants.isWebApp(), "When servlet classes are available Constants.isWebApp() should default to true"); + assertTrue( + Constants.isWebApp(), "When servlet classes are available Constants.isWebApp() should default to true"); } } diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/ServletAppenderTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/ServletAppenderTest.java index 9aab04b..01c87ad 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/ServletAppenderTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/ServletAppenderTest.java @@ -16,6 +16,9 @@ */ package org.apache.logging.log4j.web; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.fail; + import jakarta.servlet.ServletContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -26,9 +29,6 @@ import org.apache.logging.log4j.core.impl.ContextAnchor; import org.junit.jupiter.api.Test; import org.springframework.mock.web.MockServletContext; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.fail; - /** * */ diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java index 88c6c14..11c824c 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/TestAsyncServlet.java @@ -16,14 +16,12 @@ */ package org.apache.logging.log4j.web; -import java.io.IOException; - import jakarta.servlet.AsyncContext; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; - +import java.io.IOException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -33,7 +31,8 @@ public class TestAsyncServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override - protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { + protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) + throws ServletException, IOException { final AsyncContext asyncContext = req.startAsync(); asyncContext.start(WebLoggerContextUtils.wrapExecutionContext(this.getServletContext(), () -> { final Logger logger = LogManager.getLogger(TestAsyncServlet.class); @@ -42,11 +41,12 @@ public class TestAsyncServlet extends HttpServlet { } @Override - protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException { + protected void doPost(final HttpServletRequest req, final HttpServletResponse resp) + throws ServletException, IOException { final AsyncContext asyncContext = req.startAsync(); asyncContext.start(() -> { final Log4jWebSupport webSupport = - WebLoggerContextUtils.getWebLifeCycle(TestAsyncServlet.this.getServletContext()); + WebLoggerContextUtils.getWebLifeCycle(TestAsyncServlet.this.getServletContext()); webSupport.setLoggerContext(); // do stuff webSupport.clearLoggerContext(); diff --git a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/WebLookupTest.java b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/WebLookupTest.java index f719314..a4b3908 100644 --- a/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/WebLookupTest.java +++ b/log4j-jakarta-web/src/test/java/org/apache/logging/log4j/web/WebLookupTest.java @@ -16,6 +16,11 @@ */ package org.apache.logging.log4j.web; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.fail; + import jakarta.servlet.ServletContext; import java.util.Map; import org.apache.logging.log4j.core.Appender; @@ -28,11 +33,6 @@ import org.junit.jupiter.api.Test; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockServletContext; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.fail; - public class WebLookupTest { @Test @@ -178,5 +178,4 @@ public class WebLookupTest { initializer.setLoggerContext(); return initializer; } - }
