You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2022/06/05 22:03:50 UTC
[logging-log4j2] branch master updated: Simplify namespace usage in LoggerContextResolver
This is an automated email from the ASF dual-hosted git repository.
mattsicker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/master by this push:
new 576c69ab61 Simplify namespace usage in LoggerContextResolver
576c69ab61 is described below
commit 576c69ab61d8bcbc9b48cc23a6dd52f7af1d37d8
Author: Matt Sicker <ma...@apache.org>
AuthorDate: Sun Jun 5 17:01:12 2022 -0500
Simplify namespace usage in LoggerContextResolver
This uses the ExtensionContext.Namespace API properly by using the same namespace for storing items whether it's for a BeforeAllCallback or BeforeEachCallback. As both of those callbacks have nested ExtensionContexts, this means that getting and putting items in the store work fairly naturally compared to how I initially understood them to work. Now the scope of a LoggerContextSource annotation maps logically to the annotated element itself (the test class or test method).
Signed-off-by: Matt Sicker <ma...@apache.org>
---
.../core/test/junit/LoggerContextResolver.java | 23 +++++++++++-----------
1 file changed, 11 insertions(+), 12 deletions(-)
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 482876ef55..b1d6072122 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
@@ -29,6 +29,8 @@ import org.junit.jupiter.api.extension.AfterEachCallback;
import org.junit.jupiter.api.extension.BeforeAllCallback;
import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
+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;
@@ -43,6 +45,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> implements BeforeAllCallback,
BeforeEachCallback, AfterEachCallback {
private static final String FQCN = LoggerContextResolver.class.getName();
+ private static final Namespace BASE_NAMESPACE = Namespace.create(LoggerContext.class);
@Override
public void beforeAll(ExtensionContext context) throws Exception {
@@ -55,7 +58,7 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
public void beforeEach(ExtensionContext context) throws Exception {
final Class<?> testClass = context.getRequiredTestClass();
if (AnnotationUtils.isAnnotated(testClass, LoggerContextSource.class)) {
- final ExtensionContext.Store testClassStore = context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, testClass));
+ final Store testClassStore = context.getStore(BASE_NAMESPACE.append(testClass));
final LoggerContextAccessor accessor = testClassStore.get(LoggerContextAccessor.class, LoggerContextAccessor.class);
if (accessor == null) {
throw new IllegalStateException(
@@ -79,7 +82,7 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
public void afterEach(ExtensionContext context) throws Exception {
final Class<?> testClass = context.getRequiredTestClass();
if (AnnotationUtils.isAnnotated(testClass, LoggerContextSource.class)) {
- final ExtensionContext.Store testClassStore = context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, testClass));
+ final Store testClassStore = getTestStore(context);
if (testClassStore.get(ReconfigurationPolicy.class, ReconfigurationPolicy.class) == ReconfigurationPolicy.AFTER_EACH) {
testClassStore.get(LoggerContextAccessor.class, LoggerContextAccessor.class).getLoggerContext().reconfigure();
}
@@ -93,18 +96,14 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
}
static LoggerContext getLoggerContext(ExtensionContext context) {
- final LoggerContextAccessor accessor = context.getTestInstance()
- .map(instance -> context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, instance))
- .get(LoggerContextAccessor.class, LoggerContextAccessor.class))
- .orElseGet(() -> context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, context.getRequiredTestClass()))
- .get(LoggerContextAccessor.class, LoggerContextAccessor.class));
+ final Store store = getTestStore(context);
+ final LoggerContextAccessor accessor = store.get(LoggerContextAccessor.class, LoggerContextAccessor.class);
assertNotNull(accessor);
return accessor.getLoggerContext();
}
- private static ExtensionContext.Store getTestStore(final ExtensionContext context) {
- final Object storeContext = context.getTestInstance().orElseGet(context::getRequiredTestClass);
- return context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, storeContext));
+ private static Store getTestStore(final ExtensionContext context) {
+ return context.getStore(BASE_NAMESPACE.append(context.getRequiredTestClass()));
}
private static LoggerContext setUpLoggerContext(final LoggerContextSource source, final ExtensionContext extensionContext) {
@@ -131,13 +130,13 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
}
final LoggerContext context = loggerContextFactory.getContext(FQCN, classLoader, injectorContext, false, configUri, displayName);
assertNotNull(context, () -> "No LoggerContext created for " + testClass + " and config file " + configLocation);
- final ExtensionContext.Store store = getTestStore(extensionContext);
+ final Store store = getTestStore(extensionContext);
store.put(ReconfigurationPolicy.class, source.reconfigure());
store.put(LoggerContextAccessor.class, new ContextHolder(context, source.timeout(), source.unit()));
return context;
}
- private static class ContextHolder implements ExtensionContext.Store.CloseableResource, LoggerContextAccessor {
+ private static class ContextHolder implements Store.CloseableResource, LoggerContextAccessor {
private final LoggerContext context;
private final long shutdownTimeout;
private final TimeUnit unit;