diff --git a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java index d54858ba37b..50100af51d9 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java @@ -59,8 +59,6 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.VerificationException; -import org.springframework.boot.build.architecture.ArchitectureCheckAnnotations.Annotation; - /** * {@link Task} that checks for architecture problems. * @@ -77,22 +75,22 @@ public abstract class ArchitectureCheck extends DefaultTask { public ArchitectureCheck() { getOutputDirectory().convention(getProject().getLayout().getBuildDirectory().dir(getName())); - getAnnotationClasses().convention(ArchitectureCheckAnnotations.asMap()); + getAnnotationClasses().convention(ArchitectureCheckAnnotation.asMap()); getRules().addAll(getProhibitObjectsRequireNonNull().convention(true) .map(whenTrue(ArchitectureRules::noClassesShouldCallObjectsRequireNonNull))); getRules().addAll(ArchitectureRules.standard()); - getRules().addAll(whenMainSources(() -> ArchitectureRules.beanMethods( - ArchitectureCheckAnnotations.classFor(getAnnotationClasses().get(), Annotation.CONDITIONAL_ON_CLASS)))); - getRules().addAll(whenMainSources(() -> ArchitectureRules.conditionalOnMissingBean(ArchitectureCheckAnnotations - .classFor(getAnnotationClasses().get(), Annotation.CONDITIONAL_ON_MISSING_BEAN)))); - getRules().addAll(whenMainSources(() -> ArchitectureRules.configurationProperties(ArchitectureCheckAnnotations - .classFor(getAnnotationClasses().get(), Annotation.CONFIGURATION_PROPERTIES)))); - getRules() - .addAll(whenMainSources(() -> ArchitectureRules.configurationPropertiesBinding(ArchitectureCheckAnnotations - .classFor(getAnnotationClasses().get(), Annotation.CONFIGURATION_PROPERTIES_BINDING)))); - getRules().addAll( - whenMainSources(() -> ArchitectureRules.configurationPropertiesDeprecation(ArchitectureCheckAnnotations - .classFor(getAnnotationClasses().get(), Annotation.DEPRECATED_CONFIGURATION_PROPERTY)))); + getRules().addAll(whenMainSources(() -> ArchitectureRules.beanMethods(ArchitectureCheckAnnotation + .classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONDITIONAL_ON_CLASS)))); + getRules().addAll(whenMainSources(() -> ArchitectureRules.conditionalOnMissingBean(ArchitectureCheckAnnotation + .classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONDITIONAL_ON_MISSING_BEAN)))); + getRules().addAll(whenMainSources(() -> ArchitectureRules.configurationProperties(ArchitectureCheckAnnotation + .classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES)))); + getRules().addAll(whenMainSources( + () -> ArchitectureRules.configurationPropertiesBinding(ArchitectureCheckAnnotation.classFor( + getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES_BINDING)))); + getRules().addAll(whenMainSources( + () -> ArchitectureRules.configurationPropertiesDeprecation(ArchitectureCheckAnnotation.classFor( + getAnnotationClasses().get(), ArchitectureCheckAnnotation.DEPRECATED_CONFIGURATION_PROPERTY)))); getRuleDescriptions().set(getRules().map(this::asDescriptions)); } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotations.java b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotation.java similarity index 64% rename from buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotations.java rename to buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotation.java index cd0f6c6d12f..991bdaa7c27 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotations.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheckAnnotation.java @@ -23,35 +23,49 @@ import java.util.Map; * tests. * * @author Scott Frederick + * @author Stephane Nicoll */ -public final class ArchitectureCheckAnnotations { +public enum ArchitectureCheckAnnotation { - enum Annotation { + /** + * Condition on class check. + */ + CONDITIONAL_ON_CLASS, - CONDITIONAL_ON_CLASS, CONDITIONAL_ON_MISSING_BEAN, CONFIGURATION_PROPERTIES, DEPRECATED_CONFIGURATION_PROPERTY, - CONFIGURATION_PROPERTIES_BINDING + /** + * Condition on missing bean check. + */ + CONDITIONAL_ON_MISSING_BEAN, - } + /** + * Configuration properties bean. + */ + CONFIGURATION_PROPERTIES, - private ArchitectureCheckAnnotations() { - } + /** + * Deprecated configuration property. + */ + DEPRECATED_CONFIGURATION_PROPERTY, + + /** + * Custom implementation to bind configuration properties. + */ + CONFIGURATION_PROPERTIES_BINDING; - private static final Map annotationNameToClassName = Map.of(Annotation.CONDITIONAL_ON_CLASS.name(), - "org.springframework.boot.autoconfigure.condition.ConditionalOnClass", - Annotation.CONDITIONAL_ON_MISSING_BEAN.name(), + private static final Map annotationNameToClassName = Map.of(CONDITIONAL_ON_CLASS.name(), + "org.springframework.boot.autoconfigure.condition.ConditionalOnClass", CONDITIONAL_ON_MISSING_BEAN.name(), "org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean", - Annotation.CONFIGURATION_PROPERTIES.name(), - "org.springframework.boot.context.properties.ConfigurationProperties", - Annotation.DEPRECATED_CONFIGURATION_PROPERTY.name(), + CONFIGURATION_PROPERTIES.name(), "org.springframework.boot.context.properties.ConfigurationProperties", + DEPRECATED_CONFIGURATION_PROPERTY.name(), "org.springframework.boot.context.properties.DeprecatedConfigurationProperty", - Annotation.CONFIGURATION_PROPERTIES_BINDING.name(), + CONFIGURATION_PROPERTIES_BINDING.name(), "org.springframework.boot.context.properties.ConfigurationPropertiesBinding"); static Map asMap() { return annotationNameToClassName; } - static String classFor(Map annotationProperty, Annotation annotation) { + static String classFor(Map annotationProperty, ArchitectureCheckAnnotation annotation) { String name = annotation.name(); return annotationProperty.getOrDefault(name, asMap().get(name)); } diff --git a/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java b/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java index 9571f05e887..a96dbdf081d 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java @@ -43,7 +43,6 @@ import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; -import org.springframework.boot.build.architecture.ArchitectureCheckAnnotations.Annotation; import org.springframework.boot.build.architecture.annotations.TestConditionalOnClass; import org.springframework.boot.build.architecture.annotations.TestConditionalOnMissingBean; import org.springframework.boot.build.architecture.annotations.TestConfigurationProperties; @@ -530,28 +529,31 @@ class ArchitectureCheckTests { } GradleBuild withConditionalOnClassAnnotation() { - configureTasks(Annotation.CONDITIONAL_ON_CLASS.name(), TestConditionalOnClass.class.getName()); + configureTasks(ArchitectureCheckAnnotation.CONDITIONAL_ON_CLASS.name(), + TestConditionalOnClass.class.getName()); return this; } GradleBuild withConditionalOnMissingBeanAnnotation() { - configureTasks(Annotation.CONDITIONAL_ON_MISSING_BEAN.name(), TestConditionalOnMissingBean.class.getName()); + configureTasks(ArchitectureCheckAnnotation.CONDITIONAL_ON_MISSING_BEAN.name(), + TestConditionalOnMissingBean.class.getName()); return this; } GradleBuild withConfigurationPropertiesAnnotation() { - configureTasks(Annotation.CONFIGURATION_PROPERTIES.name(), TestConfigurationProperties.class.getName()); + configureTasks(ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES.name(), + TestConfigurationProperties.class.getName()); return this; } GradleBuild withConfigurationPropertiesBindingAnnotation() { - configureTasks(Annotation.CONFIGURATION_PROPERTIES_BINDING.name(), + configureTasks(ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES_BINDING.name(), TestConfigurationPropertiesBinding.class.getName()); return this; } GradleBuild withDeprecatedConfigurationPropertyAnnotation() { - configureTasks(Annotation.DEPRECATED_CONFIGURATION_PROPERTY.name(), + configureTasks(ArchitectureCheckAnnotation.DEPRECATED_CONFIGURATION_PROPERTY.name(), TestDeprecatedConfigurationProperty.class.getName()); return this; }