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>

Reply via email to