Home / Class/ MavenBuildExtension Class — spring-boot Architecture

MavenBuildExtension Class — spring-boot Architecture

Architecture documentation for the MavenBuildExtension class in MavenBuildExtension.java from the spring-boot codebase.

Entity Profile

Source Code

build-plugin/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/MavenBuildExtension.java lines 40–99

class MavenBuildExtension implements TestTemplateInvocationContextProvider {

	@Override
	public boolean supportsTestTemplate(ExtensionContext context) {
		return true;
	}

	@Override
	public Stream<TestTemplateInvocationContext> provideTestTemplateInvocationContexts(ExtensionContext context) {
		try {
			// Returning a stream which must be closed here is fine, as JUnit will take
			// care of closing it
			return Files.list(Paths.get("build/maven-binaries")).map(MavenVersionTestTemplateInvocationContext::new);
		}
		catch (IOException ex) {
			throw new RuntimeException(ex);
		}
	}

	private static final class MavenVersionTestTemplateInvocationContext implements TestTemplateInvocationContext {

		private final Path mavenHome;

		private MavenVersionTestTemplateInvocationContext(Path mavenHome) {
			this.mavenHome = mavenHome;
		}

		@Override
		public String getDisplayName(int invocationIndex) {
			return this.mavenHome.getFileName().toString();
		}

		@Override
		public List<Extension> getAdditionalExtensions() {
			return Arrays.asList(new MavenBuildParameterResolver(this.mavenHome));
		}

	}

	private static final class MavenBuildParameterResolver implements ParameterResolver {

		private final Path mavenHome;

		private MavenBuildParameterResolver(Path mavenHome) {
			this.mavenHome = mavenHome;
		}

		@Override
		public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
			return parameterContext.getParameter().getType().equals(MavenBuild.class);
		}

		@Override
		public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
			return new MavenBuild(this.mavenHome.toFile());
		}

	}

}

Analyze Your Own Codebase

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

Try Supermodel Free