GradleCompatibilityExtension Class — spring-boot Architecture
Architecture documentation for the GradleCompatibilityExtension class in GradleCompatibilityExtension.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilityExtension.java lines 48–116
final class GradleCompatibilityExtension implements TestTemplateInvocationContextProvider {
private static final List<String> GRADLE_VERSIONS = GradleVersions.allCompatible();
@Override
public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) {
GradleVersion highestVersion = GRADLE_VERSIONS.stream()
.map(GradleVersion::version)
.collect(Collectors.toCollection(TreeSet::new))
.last();
Class<?> testClass = context.getRequiredTestClass();
GradleCompatibility gradleCompatibility = AnnotationUtils.findAnnotation(testClass, GradleCompatibility.class)
.get();
Stream<String> gradleVersions = GRADLE_VERSIONS.stream();
if (StringUtils.hasText(gradleCompatibility.minimumVersion())) {
GradleVersion lowerInclusive = GradleVersion.version(gradleCompatibility.minimumVersion());
gradleVersions = gradleVersions
.filter((version) -> GradleVersion.version(version).compareTo(lowerInclusive) >= 0);
}
return gradleVersions.flatMap((version) -> {
List<TestTemplateInvocationContext> invocationContexts = new ArrayList<>();
BuildOutput buildOutput = new BuildOutput(testClass);
invocationContexts.add(new GradleVersionTestTemplateInvocationContext(version, false, buildOutput));
boolean configurationCache = gradleCompatibility.configurationCache();
if (configurationCache && GradleVersion.version(version).equals(highestVersion)) {
invocationContexts.add(new GradleVersionTestTemplateInvocationContext(version, true, buildOutput));
}
return invocationContexts.stream();
});
}
@Override
public boolean supportsTestTemplate(ExtensionContext context) {
return true;
}
private static final class GradleVersionTestTemplateInvocationContext implements TestTemplateInvocationContext {
private final BuildOutput buildOutput;
private final String gradleVersion;
private final boolean configurationCache;
GradleVersionTestTemplateInvocationContext(String gradleVersion, boolean configurationCache,
BuildOutput buildOutput) {
this.buildOutput = buildOutput;
this.gradleVersion = gradleVersion;
this.configurationCache = configurationCache;
}
@Override
public String getDisplayName(int invocationIndex) {
return "Gradle " + this.gradleVersion + ((this.configurationCache) ? " --configuration-cache" : "");
}
@Override
public List<Extension> getAdditionalExtensions() {
GradleBuild gradleBuild = new PluginClasspathGradleBuild(this.buildOutput)
.gradleVersion(this.gradleVersion);
if (this.configurationCache) {
gradleBuild.configurationCache();
}
return Arrays.asList(new GradleBuildFieldSetter(gradleBuild), new GradleBuildExtension());
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free