AbstractNestedConditionTests Class — spring-boot Architecture
Architecture documentation for the AbstractNestedConditionTests class in AbstractNestedConditionTests.java from the spring-boot codebase.
Entity Profile
Source Code
core/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/AbstractNestedConditionTests.java lines 33–151
class AbstractNestedConditionTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner();
@Test
void validPhase() {
this.contextRunner.withUserConfiguration(ValidConfig.class)
.run((context) -> assertThat(context).hasBean("myBean"));
}
@Test
void invalidMemberPhase() {
this.contextRunner.withUserConfiguration(InvalidConfig.class).run((context) -> {
assertThat(context).hasFailed();
Throwable startupFailure = context.getStartupFailure();
assertThat(startupFailure).isNotNull();
assertThat(startupFailure.getCause()).isInstanceOf(IllegalStateException.class)
.hasMessageContaining("Nested condition " + InvalidNestedCondition.class.getName()
+ " uses a configuration phase that is inappropriate for class "
+ OnBeanCondition.class.getName());
});
}
@Test
void invalidNestedMemberPhase() {
this.contextRunner.withUserConfiguration(DoubleNestedConfig.class).run((context) -> {
assertThat(context).hasFailed();
Throwable startupFailure = context.getStartupFailure();
assertThat(startupFailure).isNotNull();
assertThat(startupFailure.getCause()).isInstanceOf(IllegalStateException.class)
.hasMessageContaining("Nested condition " + DoubleNestedCondition.class.getName()
+ " uses a configuration phase that is inappropriate for class "
+ ValidNestedCondition.class.getName());
});
}
@Configuration(proxyBeanMethods = false)
@Conditional(ValidNestedCondition.class)
static class ValidConfig {
@Bean
String myBean() {
return "myBean";
}
}
static class ValidNestedCondition extends AbstractNestedCondition {
ValidNestedCondition() {
super(ConfigurationPhase.REGISTER_BEAN);
}
@Override
protected ConditionOutcome getFinalMatchOutcome(MemberMatchOutcomes memberOutcomes) {
return ConditionOutcome.match();
}
@ConditionalOnMissingBean(name = "myBean")
static class MissingMyBean {
}
}
@Configuration(proxyBeanMethods = false)
@Conditional(InvalidNestedCondition.class)
static class InvalidConfig {
@Bean
String myBean() {
return "myBean";
}
}
static class InvalidNestedCondition extends AbstractNestedCondition {
InvalidNestedCondition() {
super(ConfigurationPhase.PARSE_CONFIGURATION);
}
@Override
protected ConditionOutcome getFinalMatchOutcome(MemberMatchOutcomes memberOutcomes) {
return ConditionOutcome.match();
}
@ConditionalOnMissingBean(name = "myBean")
static class MissingMyBean {
}
}
@Configuration(proxyBeanMethods = false)
@Conditional(DoubleNestedCondition.class)
static class DoubleNestedConfig {
}
static class DoubleNestedCondition extends AbstractNestedCondition {
DoubleNestedCondition() {
super(ConfigurationPhase.PARSE_CONFIGURATION);
}
@Override
protected ConditionOutcome getFinalMatchOutcome(MemberMatchOutcomes memberOutcomes) {
return ConditionOutcome.match();
}
@Conditional(ValidNestedCondition.class)
static class NestedConditionThatIsValid {
}
}
}
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free