Merge pull request #19948 from jcordoba95
* pr/19948: Polish "Fix condition source in OnBeanCondition" Fix condition source in OnBeanCondition Closes gh-19948
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -387,7 +387,7 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat
|
||||
|
||||
private final ClassLoader classLoader;
|
||||
|
||||
private final Class<?> annotationType;
|
||||
private final Class<? extends Annotation> annotationType;
|
||||
|
||||
private final Set<String> names;
|
||||
|
||||
@@ -581,11 +581,11 @@ class OnBeanCondition extends FilteringSpringBootCondition implements Configurat
|
||||
}
|
||||
|
||||
ConditionMessage.Builder message() {
|
||||
return ConditionMessage.forCondition(ConditionalOnBean.class, this);
|
||||
return ConditionMessage.forCondition(this.annotationType, this);
|
||||
}
|
||||
|
||||
ConditionMessage.Builder message(ConditionMessage message) {
|
||||
return message.andCondition(ConditionalOnBean.class, this);
|
||||
return message.andCondition(this.annotationType, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -29,6 +30,7 @@ import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.FactoryBean;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
|
||||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport.ConditionAndOutcomes;
|
||||
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
@@ -134,6 +136,17 @@ class ConditionalOnBeanTests {
|
||||
assertThat(context.getBean("bar")).isEqualTo("bar");
|
||||
}
|
||||
|
||||
@Test
|
||||
void onBeanConditionOutputShouldNotContainConditionalOnMissingBeanClassInMessage() {
|
||||
this.contextRunner.withUserConfiguration(OnBeanNameConfiguration.class).run((context) -> {
|
||||
Collection<ConditionAndOutcomes> conditionAndOutcomes = ConditionEvaluationReport
|
||||
.get(context.getSourceApplicationContext().getBeanFactory()).getConditionAndOutcomesBySource()
|
||||
.values();
|
||||
String message = conditionAndOutcomes.iterator().next().iterator().next().getOutcome().getMessage();
|
||||
assertThat(message).doesNotContain("@ConditionalOnMissingBean");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void conditionEvaluationConsidersChangeInTypeWhenBeanIsOverridden() {
|
||||
this.contextRunner.withUserConfiguration(OriginalDefinition.class, OverridingDefinition.class,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -21,6 +21,7 @@ import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@@ -136,6 +137,17 @@ public class ConditionalOnMissingBeanTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void testOnMissingBeanConditionOutputShouldNotContainConditionalOnBeanClassInMessage() {
|
||||
this.contextRunner.withUserConfiguration(OnBeanNameConfiguration.class).run((context) -> {
|
||||
Collection<ConditionEvaluationReport.ConditionAndOutcomes> conditionAndOutcomes = ConditionEvaluationReport
|
||||
.get(context.getSourceApplicationContext().getBeanFactory()).getConditionAndOutcomesBySource()
|
||||
.values();
|
||||
String message = conditionAndOutcomes.iterator().next().iterator().next().getOutcome().getMessage();
|
||||
assertThat(message).doesNotContain("@ConditionalOnBean");
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void testOnMissingBeanConditionWithFactoryBean() {
|
||||
this.contextRunner
|
||||
|
||||
Reference in New Issue
Block a user