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/05/30 22:52:38 UTC

[logging-log4j2] 02/03: Update LoggerContextResolver to support meta-annotations

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

commit f19bfcdc9a8a82db1af667828798d98426b10adf
Author: Matt Sicker <ma...@apache.org>
AuthorDate: Mon May 30 17:01:50 2022 -0500

    Update LoggerContextResolver to support meta-annotations
    
    Signed-off-by: Matt Sicker <ma...@apache.org>
---
 .../core/test/junit/LoggerContextResolver.java     | 36 +++++++++++-----------
 1 file changed, 18 insertions(+), 18 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 72410a93c2..02e83d04de 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
@@ -31,6 +31,7 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
+import org.junit.platform.commons.util.AnnotationUtils;
 
 import java.net.URI;
 import java.util.Map;
@@ -45,17 +46,15 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
     @Override
     public void beforeAll(ExtensionContext context) throws Exception {
         final Class<?> testClass = context.getRequiredTestClass();
-        final LoggerContextSource testSource = testClass.getAnnotation(LoggerContextSource.class);
-        if (testSource != null) {
-            setUpLoggerContext(testSource, context);
-        }
+        AnnotationUtils.findAnnotation(testClass, LoggerContextSource.class)
+                .ifPresent(testSource -> setUpLoggerContext(testSource, context));
     }
 
     @Override
     public void beforeEach(ExtensionContext context) throws Exception {
         final Class<?> testClass = context.getRequiredTestClass();
-        if (testClass.isAnnotationPresent(LoggerContextSource.class)) {
-            final ExtensionContext.Store testClassStore = context.getStore(ExtensionContext.Namespace.create(LoggerContextSource.class, testClass));
+        if (AnnotationUtils.isAnnotated(testClass, LoggerContextSource.class)) {
+            final ExtensionContext.Store testClassStore = context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, testClass));
             final LoggerContextAccessor accessor = testClassStore.get(LoggerContextAccessor.class, LoggerContextAccessor.class);
             if (accessor == null) {
                 throw new IllegalStateException(
@@ -66,19 +65,20 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
                 accessor.getLoggerContext().reconfigure();
             }
         }
-        final LoggerContextSource source = context.getRequiredTestMethod().getAnnotation(LoggerContextSource.class);
-        if (source != null) {
-            final LoggerContext loggerContext = setUpLoggerContext(source, context);
-            if (source.reconfigure() == ReconfigurationPolicy.BEFORE_EACH) {
-                loggerContext.reconfigure();
-            }
-        }
+        AnnotationUtils.findAnnotation(context.getRequiredTestMethod(), LoggerContextSource.class)
+                .ifPresent(source -> {
+                    final LoggerContext loggerContext = setUpLoggerContext(source, context);
+                    if (source.reconfigure() == ReconfigurationPolicy.BEFORE_EACH) {
+                        loggerContext.reconfigure();
+                    }
+                });
     }
 
     @Override
     public void afterEach(ExtensionContext context) throws Exception {
-        if (context.getRequiredTestClass().isAnnotationPresent(LoggerContextSource.class)) {
-            final ExtensionContext.Store testClassStore = context.getStore(ExtensionContext.Namespace.create(LoggerContextSource.class, context.getRequiredTestClass()));
+        final Class<?> testClass = context.getRequiredTestClass();
+        if (AnnotationUtils.isAnnotated(testClass, LoggerContextSource.class)) {
+            final ExtensionContext.Store testClassStore = context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, testClass));
             if (testClassStore.get(ReconfigurationPolicy.class, ReconfigurationPolicy.class) == ReconfigurationPolicy.AFTER_EACH) {
                 testClassStore.get(LoggerContextAccessor.class, LoggerContextAccessor.class).getLoggerContext().reconfigure();
             }
@@ -93,9 +93,9 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
 
     static LoggerContext getLoggerContext(ExtensionContext context) {
         final LoggerContextAccessor accessor = context.getTestInstance()
-                .map(instance -> context.getStore(ExtensionContext.Namespace.create(LoggerContextSource.class, instance))
+                .map(instance -> context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, instance))
                         .get(LoggerContextAccessor.class, LoggerContextAccessor.class))
-                .orElseGet(() -> context.getStore(ExtensionContext.Namespace.create(LoggerContextSource.class, context.getRequiredTestClass()))
+                .orElseGet(() -> context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, context.getRequiredTestClass()))
                         .get(LoggerContextAccessor.class, LoggerContextAccessor.class));
         assertNotNull(accessor);
         return accessor.getLoggerContext();
@@ -103,7 +103,7 @@ class LoggerContextResolver extends TypeBasedParameterResolver<LoggerContext> im
 
     private static ExtensionContext.Store getTestStore(final ExtensionContext context) {
         final Object storeContext = context.getTestInstance().orElseGet(context::getRequiredTestClass);
-        return context.getStore(ExtensionContext.Namespace.create(LoggerContextSource.class, storeContext));
+        return context.getStore(ExtensionContext.Namespace.create(LoggerContextResolver.class, storeContext));
     }
 
     private static LoggerContext setUpLoggerContext(final LoggerContextSource source, final ExtensionContext extensionContext) {