Home / Class/ GradleCompatibilityExtension Class — spring-boot Architecture

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

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free