You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2022/10/15 09:08:36 UTC
[logging-log4j2] 02/03: Fix `log4j-core-test` JPMS encapsulation
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 <pi...@karwasz.org>
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>