Skip to content

Commit af4d68b

Browse files
committed
Cache default EnclosingConfiguration mode in TestContextAnnotationUtils
1 parent a40cc8b commit af4d68b

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

spring-test/src/main/java/org/springframework/test/context/TestContextAnnotationUtils.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public abstract class TestContextAnnotationUtils {
7575
private static final ConcurrentLruCache<Class<?>, EnclosingConfiguration> cachedEnclosingConfigurationModes =
7676
new ConcurrentLruCache<>(32, TestContextAnnotationUtils::lookUpEnclosingConfiguration);
7777

78+
private static EnclosingConfiguration defaultEnclosingConfigurationMode;
7879

7980
/**
8081
* Find the first annotation of the specified {@code annotationType} within
@@ -383,6 +384,10 @@ public static boolean searchEnclosingClass(Class<?> clazz) {
383384
return (ClassUtils.isInnerClass(clazz) &&
384385
getEnclosingConfiguration(clazz) == EnclosingConfiguration.INHERIT);
385386
}
387+
388+
static void clearCaches() {
389+
defaultEnclosingConfigurationMode = null;
390+
}
386391

387392
/**
388393
* Get the {@link EnclosingConfiguration} mode for the supplied class.
@@ -405,9 +410,13 @@ private static EnclosingConfiguration lookUpEnclosingConfiguration(Class<?> claz
405410
}
406411

407412
private static EnclosingConfiguration getDefaultEnclosingConfigurationMode() {
408-
String value = SpringProperties.getProperty(NestedTestConfiguration.ENCLOSING_CONFIGURATION_PROPERTY_NAME);
409-
EnclosingConfiguration enclosingConfigurationMode = EnclosingConfiguration.from(value);
410-
return (enclosingConfigurationMode != null ? enclosingConfigurationMode : EnclosingConfiguration.INHERIT);
413+
if (defaultEnclosingConfigurationMode == null) {
414+
String value = SpringProperties.getProperty(NestedTestConfiguration.ENCLOSING_CONFIGURATION_PROPERTY_NAME);
415+
EnclosingConfiguration enclosingConfigurationMode = EnclosingConfiguration.from(value);
416+
defaultEnclosingConfigurationMode =
417+
(enclosingConfigurationMode != null ? enclosingConfigurationMode : EnclosingConfiguration.INHERIT);
418+
}
419+
return defaultEnclosingConfigurationMode;
411420
}
412421

413422
private static void assertNonEmptyAnnotationTypeArray(Class<?>[] annotationTypes, String message) {

spring-test/src/test/java/org/springframework/test/context/TestContextAnnotationUtilsTests.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import java.lang.annotation.Target;
2424

2525
import org.junit.jupiter.api.AfterEach;
26+
import org.junit.jupiter.api.BeforeEach;
2627
import org.junit.jupiter.api.DisplayName;
2728
import org.junit.jupiter.api.Nested;
2829
import org.junit.jupiter.api.Test;
@@ -54,6 +55,11 @@ class TestContextAnnotationUtilsTests {
5455
@Nested
5556
@DisplayName("searchEnclosingClass() tests")
5657
class SearchEnclosingClassTests {
58+
59+
@BeforeEach
60+
void clearCaches() {
61+
TestContextAnnotationUtils.clearCaches();
62+
}
5763

5864
@AfterEach
5965
void clearGlobalFlag() {

0 commit comments

Comments
 (0)