diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java index cd80f8b0206..4b6b535df9f 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnClassCondition.java @@ -158,7 +158,7 @@ class OnClassCondition extends SpringBootCondition MultiValueMap attributes = metadata .getAllAnnotationAttributes(annotationType.getName(), true); if (attributes == null) { - return Collections.emptyList(); + return null; } List candidates = new ArrayList<>(); addAll(candidates, attributes.get("value")); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClassTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClassTests.java index 087771c93d6..ebbcbbe898c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClassTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnClassTests.java @@ -16,6 +16,8 @@ package org.springframework.boot.autoconfigure.condition; +import java.util.Collection; + import org.junit.Test; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; @@ -68,6 +70,20 @@ public class ConditionalOnClassTests { .run(this::hasBarBean); } + @Test + public void onClassConditionOutputShouldNotContainConditionalOnMissingClassInMessage() { + this.contextRunner.withUserConfiguration(BasicConfiguration.class) + .run((context) -> { + Collection conditionAndOutcomes = ConditionEvaluationReport + .get(context.getSourceApplicationContext().getBeanFactory()) + .getConditionAndOutcomesBySource().values(); + String message = conditionAndOutcomes.iterator().next().iterator() + .next().getOutcome().getMessage(); + assertThat(message).doesNotContain( + "@ConditionalOnMissingClass did not find unwanted class"); + }); + } + private void hasBarBean(AssertableApplicationContext context) { assertThat(context).hasBean("bar"); assertThat(context.getBean("bar")).isEqualTo("bar");