This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit f02ee891dc4d57d80d2a82f821e163191fc13a4b Author: Piotr P. Karwasz <[email protected]> AuthorDate: Fri Oct 14 21:58:09 2022 +0200 Fix `log4j-core-test` JPMS encapsulation Since `TypeBasedParameterResolver` is not exported by JUnit5 we need our (simplified) version. --- log4j-core-test/pom.xml | 45 +++++++++++++++++++++- .../core/test/junit/ConfigurationResolver.java | 6 ++- .../core/test/junit/LoggerContextResolver.java | 15 +++++--- ...solver.java => TypeBasedParameterResolver.java} | 30 ++++++++------- log4j-core-test/src/main/java9/module-info.java | 7 ++++ .../core/impl/ThreadContextDataInjectorTest.java | 2 +- log4j-core/src/main/java/module-info.java | 26 ++++++------- pom.xml | 2 +- 8 files changed, 97 insertions(+), 36 deletions(-) diff --git a/log4j-core-test/pom.xml b/log4j-core-test/pom.xml index 239ae6d5cd..c3dd458333 100644 --- a/log4j-core-test/pom.xml +++ b/log4j-core-test/pom.xml @@ -305,6 +305,23 @@ </dependencies> <build> <plugins> + <!-- We add the module descriptor to the source path --> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <executions> + <execution> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>${project.basedir}/src/main/java9</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> @@ -328,6 +345,31 @@ </instructions> </configuration> </plugin> + <!-- We delete the module descriptor to prevent compiling tests as a module --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-clean-plugin</artifactId> + <executions> + <execution> + <id>remove-module-info</id> + <phase>process-classes</phase> + <goals> + <goal>clean</goal> + </goals> + <configuration> + <excludeDefaultDirectories>true</excludeDefaultDirectories> + <filesets> + <fileset> + <directory>${project.build.outputDirectory}</directory> + <includes> + <include>module-info.class</include> + </includes> + </fileset> + </filesets> + </configuration> + </execution> + </executions> + </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> @@ -365,10 +407,11 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> + <runOrder>random</runOrder> <systemPropertyVariables> <log4j2.is.webapp>false</log4j2.is.webapp> </systemPropertyVariables> - <runOrder>random</runOrder> + <useModulePath>false</useModulePath> </configuration> </plugin> </plugins> diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/ConfigurationResolver.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/ConfigurationResolver.java index be3a9a9e20..97d19ab225 100644 --- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/ConfigurationResolver.java +++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/ConfigurationResolver.java @@ -22,11 +22,15 @@ import org.apache.logging.log4j.core.config.Configuration; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.api.extension.ParameterResolutionException; -import org.junit.jupiter.api.extension.support.TypeBasedParameterResolver; import static org.apache.logging.log4j.core.test.junit.LoggerContextResolver.getLoggerContext; class ConfigurationResolver extends TypeBasedParameterResolver<Configuration> { + + public ConfigurationResolver() { + super(Configuration.class); + } + @Override public Configuration resolveParameter( ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java index b1d6072122..657b72a65d 100644 --- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java +++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/LoggerContextResolver.java @@ -33,8 +33,7 @@ import org.junit.jupiter.api.extension.ExtensionContext.Namespace; import org.junit.jupiter.api.extension.ExtensionContext.Store; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.api.extension.ParameterResolutionException; -import org.junit.jupiter.api.extension.support.TypeBasedParameterResolver; -import org.junit.platform.commons.util.AnnotationUtils; +import org.junit.platform.commons.support.AnnotationSupport; import java.net.URI; import java.util.Map; @@ -47,17 +46,21 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im private static final String FQCN = LoggerContextResolver.class.getName(); private static final Namespace BASE_NAMESPACE = Namespace.create(LoggerContext.class); + public LoggerContextResolver() { + super(LoggerContext.class); + } + @Override public void beforeAll(ExtensionContext context) throws Exception { final Class<?> testClass = context.getRequiredTestClass(); - AnnotationUtils.findAnnotation(testClass, LoggerContextSource.class) + AnnotationSupport.findAnnotation(testClass, LoggerContextSource.class) .ifPresent(testSource -> setUpLoggerContext(testSource, context)); } @Override public void beforeEach(ExtensionContext context) throws Exception { final Class<?> testClass = context.getRequiredTestClass(); - if (AnnotationUtils.isAnnotated(testClass, LoggerContextSource.class)) { + if (AnnotationSupport.isAnnotated(testClass, LoggerContextSource.class)) { final Store testClassStore = context.getStore(BASE_NAMESPACE.append(testClass)); final LoggerContextAccessor accessor = testClassStore.get(LoggerContextAccessor.class, LoggerContextAccessor.class); if (accessor == null) { @@ -69,7 +72,7 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im accessor.getLoggerContext().reconfigure(); } } - AnnotationUtils.findAnnotation(context.getRequiredTestMethod(), LoggerContextSource.class) + AnnotationSupport.findAnnotation(context.getRequiredTestMethod(), LoggerContextSource.class) .ifPresent(source -> { final LoggerContext loggerContext = setUpLoggerContext(source, context); if (source.reconfigure() == ReconfigurationPolicy.BEFORE_EACH) { @@ -81,7 +84,7 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im @Override public void afterEach(ExtensionContext context) throws Exception { final Class<?> testClass = context.getRequiredTestClass(); - if (AnnotationUtils.isAnnotated(testClass, LoggerContextSource.class)) { + if (AnnotationSupport.isAnnotated(testClass, LoggerContextSource.class)) { final Store testClassStore = getTestStore(context); if (testClassStore.get(ReconfigurationPolicy.class, ReconfigurationPolicy.class) == ReconfigurationPolicy.AFTER_EACH) { testClassStore.get(LoggerContextAccessor.class, LoggerContextAccessor.class).getLoggerContext().reconfigure(); diff --git a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/ConfigurationResolver.java b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/TypeBasedParameterResolver.java similarity index 57% copy from log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/ConfigurationResolver.java copy to log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/TypeBasedParameterResolver.java index be3a9a9e20..5e0e76782e 100644 --- a/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/ConfigurationResolver.java +++ b/log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/junit/TypeBasedParameterResolver.java @@ -14,26 +14,30 @@ * See the license for the specific language governing permissions and * limitations under the license. */ - package org.apache.logging.log4j.core.test.junit; -import org.apache.logging.log4j.core.LoggerContext; -import org.apache.logging.log4j.core.config.Configuration; +import java.lang.reflect.Type; + import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.api.extension.ParameterResolutionException; -import org.junit.jupiter.api.extension.support.TypeBasedParameterResolver; +import org.junit.jupiter.api.extension.ParameterResolver; -import static org.apache.logging.log4j.core.test.junit.LoggerContextResolver.getLoggerContext; +abstract class TypeBasedParameterResolver<T> implements ParameterResolver { + + private final Type supportedParameterType; + + public TypeBasedParameterResolver(Type supportedParameterType) { + this.supportedParameterType = supportedParameterType; + } -class ConfigurationResolver extends TypeBasedParameterResolver<Configuration> { @Override - public Configuration resolveParameter( - ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException { - final LoggerContext loggerContext = getLoggerContext(extensionContext); - if (loggerContext == null) { - throw new ParameterResolutionException("No LoggerContext defined"); - } - return loggerContext.getConfiguration(); + public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) + throws ParameterResolutionException { + return this.supportedParameterType.equals(parameterContext.getParameter().getParameterizedType()); } + + @Override + public abstract T resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) + throws ParameterResolutionException; } diff --git a/log4j-core-test/src/main/java9/module-info.java b/log4j-core-test/src/main/java9/module-info.java index f84c4ac9b8..2299153583 100644 --- a/log4j-core-test/src/main/java9/module-info.java +++ b/log4j-core-test/src/main/java9/module-info.java @@ -14,6 +14,8 @@ * See the license for the specific language governing permissions and * limitations under the license. */ +import org.apache.logging.log4j.core.test.plugins.Log4jPlugins; +import org.apache.logging.log4j.plugins.model.PluginService; module org.apache.logging.log4j.core.test { exports org.apache.logging.log4j.core.test; exports org.apache.logging.log4j.core.test.appender; @@ -26,6 +28,9 @@ module org.apache.logging.log4j.core.test { exports org.apache.logging.log4j.core.test.parser; exports org.apache.logging.log4j.core.test.util; + opens org.apache.logging.log4j.core.test.junit to + org.junit.platform.commons; + requires java.naming; requires org.apache.logging.log4j; requires org.apache.logging.log4j.test; @@ -34,9 +39,11 @@ module org.apache.logging.log4j.core.test { requires org.apache.logging.log4j.core; requires com.fasterxml.jackson.core; requires com.fasterxml.jackson.databind; + requires junit; requires org.junit.jupiter.api; requires org.junit.jupiter.engine; requires org.junit.jupiter.params; requires org.junit.platform.commons; requires org.junit.platform.engine; + provides PluginService with Log4jPlugins; } diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java index 0f9c7ddd6c..365f876593 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjectorTest.java @@ -33,7 +33,7 @@ import java.util.Collection; import java.util.concurrent.ExecutionException; import org.apache.logging.log4j.ThreadContext; -import org.apache.logging.log4j.ThreadContextUtilityClass; +import org.apache.logging.log4j.test.ThreadContextUtilityClass; import org.apache.logging.log4j.core.ContextDataInjector; import org.apache.logging.log4j.spi.ReadOnlyThreadContextMap; import org.apache.logging.log4j.util.PropertiesUtil; diff --git a/log4j-core/src/main/java/module-info.java b/log4j-core/src/main/java/module-info.java index a3bbeb46f8..6c29146711 100644 --- a/log4j-core/src/main/java/module-info.java +++ b/log4j-core/src/main/java/module-info.java @@ -1,16 +1,3 @@ -import org.apache.logging.log4j.core.impl.DefaultCallback; -import org.apache.logging.log4j.core.impl.Log4jProvider; -import org.apache.logging.log4j.core.impl.ThreadContextDataProvider; -import org.apache.logging.log4j.core.message.ExtendedThreadInfoFactory; -import org.apache.logging.log4j.core.plugins.Log4jPlugins; -import org.apache.logging.log4j.core.script.ScriptManagerFactory; -import org.apache.logging.log4j.core.util.ContextDataProvider; -import org.apache.logging.log4j.core.util.WatchEventService; -import org.apache.logging.log4j.message.ThreadDumpMessage.ThreadInfoFactory; -import org.apache.logging.log4j.plugins.di.InjectorCallback; -import org.apache.logging.log4j.plugins.model.PluginService; -import org.apache.logging.log4j.spi.Provider; - /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -27,6 +14,19 @@ import org.apache.logging.log4j.spi.Provider; * See the license for the specific language governing permissions and * limitations under the license. */ +import org.apache.logging.log4j.core.impl.DefaultCallback; +import org.apache.logging.log4j.core.impl.Log4jProvider; +import org.apache.logging.log4j.core.impl.ThreadContextDataProvider; +import org.apache.logging.log4j.core.message.ExtendedThreadInfoFactory; +import org.apache.logging.log4j.core.plugins.Log4jPlugins; +import org.apache.logging.log4j.core.script.ScriptManagerFactory; +import org.apache.logging.log4j.core.util.ContextDataProvider; +import org.apache.logging.log4j.core.util.WatchEventService; +import org.apache.logging.log4j.message.ThreadDumpMessage.ThreadInfoFactory; +import org.apache.logging.log4j.plugins.di.InjectorCallback; +import org.apache.logging.log4j.plugins.model.PluginService; +import org.apache.logging.log4j.spi.Provider; + module org.apache.logging.log4j.core { exports org.apache.logging.log4j.core; exports org.apache.logging.log4j.core.appender; diff --git a/pom.xml b/pom.xml index a1d381e7a2..3c0a45ca2a 100644 --- a/pom.xml +++ b/pom.xml @@ -269,7 +269,7 @@ <!-- surefire.plugin.version 2.19 yields https://issues.apache.org/jira/browse/SUREFIRE-1193. --> <!-- all versions after 2.13 yield https://issues.apache.org/jira/browse/SUREFIRE-720 --> <!-- property used in `apache.org:apache` --> - <surefire.version>3.0.0-M5</surefire.version> + <surefire.version>3.0.0-M7</surefire.version> <!-- Maven site depends on Velocity and the escaping rules are different in newer versions. --> <!-- See https://maven.apache.org/plugins/maven-site-plugin/migrate.html --> <velocity.plugin.version>1.5</velocity.plugin.version>
