ConditionalOnMissingFilterBeanTests Class — spring-boot Architecture
Architecture documentation for the ConditionalOnMissingFilterBeanTests class in ConditionalOnMissingFilterBeanTests.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingFilterBeanTests.java lines 43–199
class ConditionalOnMissingFilterBeanTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
@Test
void outcomeWhenValueIsOfMissingBeanReturnsMatch() {
this.contextRunner.withUserConfiguration(WithoutTestFilterConfig.class, OnMissingWithValueConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myOtherFilter", "testFilter")));
}
@Test
void outcomeWhenValueIsOfExistingBeanReturnsNoMatch() {
this.contextRunner.withUserConfiguration(WithTestFilterConfig.class, OnMissingWithValueConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myTestFilter")));
}
@Test
void outcomeWhenValueIsOfMissingBeanRegistrationReturnsMatch() {
this.contextRunner
.withUserConfiguration(WithoutTestFilterRegistrationConfig.class, OnMissingWithValueConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myOtherFilter", "testFilter")));
}
@Test
void outcomeWhenValueIsOfExistingBeanRegistrationReturnsNoMatch() {
this.contextRunner.withUserConfiguration(WithTestFilterRegistrationConfig.class, OnMissingWithValueConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myTestFilter")));
}
@Test
void outcomeWhenReturnTypeIsOfExistingBeanReturnsNoMatch() {
this.contextRunner.withUserConfiguration(WithTestFilterConfig.class, OnMissingWithReturnTypeConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myTestFilter")));
}
@Test
void outcomeWhenReturnTypeIsOfExistingBeanRegistrationReturnsNoMatch() {
this.contextRunner
.withUserConfiguration(WithTestFilterRegistrationConfig.class, OnMissingWithReturnTypeConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myTestFilter")));
}
@Test
void outcomeWhenReturnRegistrationTypeIsOfExistingBeanReturnsNoMatch() {
this.contextRunner
.withUserConfiguration(WithTestFilterConfig.class, OnMissingWithReturnRegistrationTypeConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myTestFilter")));
}
@Test
void outcomeWhenReturnRegistrationTypeIsOfExistingBeanRegistrationReturnsNoMatch() {
this.contextRunner
.withUserConfiguration(WithTestFilterRegistrationConfig.class,
OnMissingWithReturnRegistrationTypeConfig.class)
.run((context) -> assertThat(context).satisfies(filterBeanRequirement("myTestFilter")));
}
private Consumer<ConfigurableApplicationContext> filterBeanRequirement(String... names) {
return (context) -> {
String[] filters = context.getBeanNamesForType(Filter.class);
String[] registrations = context.getBeanNamesForType(FilterRegistrationBean.class);
assertThat(StringUtils.concatenateStringArrays(filters, registrations)).containsOnly(names);
};
}
@Configuration(proxyBeanMethods = false)
static class WithTestFilterConfig {
@Bean
TestFilter myTestFilter() {
return new TestFilter();
}
}
@Configuration(proxyBeanMethods = false)
static class WithoutTestFilterConfig {
@Bean
OtherFilter myOtherFilter() {
return new OtherFilter();
}
}
@Configuration(proxyBeanMethods = false)
static class WithoutTestFilterRegistrationConfig {
@Bean
FilterRegistrationBean<OtherFilter> myOtherFilter() {
return new FilterRegistrationBean<>(new OtherFilter());
}
}
@Configuration(proxyBeanMethods = false)
static class WithTestFilterRegistrationConfig {
@Bean
FilterRegistrationBean<TestFilter> myTestFilter() {
return new FilterRegistrationBean<>(new TestFilter());
}
}
@Configuration(proxyBeanMethods = false)
static class OnMissingWithValueConfig {
@Bean
@ConditionalOnMissingFilterBean(TestFilter.class)
TestFilter testFilter() {
return new TestFilter();
}
}
@Configuration(proxyBeanMethods = false)
static class OnMissingWithReturnTypeConfig {
@Bean
@ConditionalOnMissingFilterBean
TestFilter testFilter() {
return new TestFilter();
}
}
@Configuration(proxyBeanMethods = false)
static class OnMissingWithReturnRegistrationTypeConfig {
@Bean
@ConditionalOnMissingFilterBean
FilterRegistrationBean<TestFilter> testFilter() {
return new FilterRegistrationBean<>(new TestFilter());
}
}
static class TestFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
}
}
static class OtherFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free