Cache default EnclosingConfiguration mode in TestContextAnnotationUtils

This commit is contained in:
Sam Brannen
2020-10-24 22:26:29 +02:00
parent a40cc8bbe0
commit af4d68b1a5
2 changed files with 18 additions and 3 deletions

View File

@@ -75,6 +75,7 @@ public abstract class TestContextAnnotationUtils {
private static final ConcurrentLruCache<Class<?>, EnclosingConfiguration> cachedEnclosingConfigurationModes =
new ConcurrentLruCache<>(32, TestContextAnnotationUtils::lookUpEnclosingConfiguration);
private static EnclosingConfiguration defaultEnclosingConfigurationMode;
/**
* Find the first annotation of the specified {@code annotationType} within
@@ -383,6 +384,10 @@ public abstract class TestContextAnnotationUtils {
return (ClassUtils.isInnerClass(clazz) &&
getEnclosingConfiguration(clazz) == EnclosingConfiguration.INHERIT);
}
static void clearCaches() {
defaultEnclosingConfigurationMode = null;
}
/**
* Get the {@link EnclosingConfiguration} mode for the supplied class.
@@ -405,9 +410,13 @@ public abstract class TestContextAnnotationUtils {
}
private static EnclosingConfiguration getDefaultEnclosingConfigurationMode() {
String value = SpringProperties.getProperty(NestedTestConfiguration.ENCLOSING_CONFIGURATION_PROPERTY_NAME);
EnclosingConfiguration enclosingConfigurationMode = EnclosingConfiguration.from(value);
return (enclosingConfigurationMode != null ? enclosingConfigurationMode : EnclosingConfiguration.INHERIT);
if (defaultEnclosingConfigurationMode == null) {
String value = SpringProperties.getProperty(NestedTestConfiguration.ENCLOSING_CONFIGURATION_PROPERTY_NAME);
EnclosingConfiguration enclosingConfigurationMode = EnclosingConfiguration.from(value);
defaultEnclosingConfigurationMode =
(enclosingConfigurationMode != null ? enclosingConfigurationMode : EnclosingConfiguration.INHERIT);
}
return defaultEnclosingConfigurationMode;
}
private static void assertNonEmptyAnnotationTypeArray(Class<?>[] annotationTypes, String message) {