Skip to content

Commit d9bf313

Browse files
committed
Polish "Improve testing of architecture checks"
See gh-48139
1 parent 8e65122 commit d9bf313

File tree

3 files changed

+50
-36
lines changed

3 files changed

+50
-36
lines changed

buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureCheck.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,6 @@
5959
import org.gradle.api.tasks.TaskAction;
6060
import org.gradle.api.tasks.VerificationException;
6161

62-
import org.springframework.boot.build.architecture.ArchitectureCheckAnnotations.Annotation;
63-
6462
/**
6563
* {@link Task} that checks for architecture problems.
6664
*
@@ -77,22 +75,22 @@ public abstract class ArchitectureCheck extends DefaultTask {
7775

7876
public ArchitectureCheck() {
7977
getOutputDirectory().convention(getProject().getLayout().getBuildDirectory().dir(getName()));
80-
getAnnotationClasses().convention(ArchitectureCheckAnnotations.asMap());
78+
getAnnotationClasses().convention(ArchitectureCheckAnnotation.asMap());
8179
getRules().addAll(getProhibitObjectsRequireNonNull().convention(true)
8280
.map(whenTrue(ArchitectureRules::noClassesShouldCallObjectsRequireNonNull)));
8381
getRules().addAll(ArchitectureRules.standard());
84-
getRules().addAll(whenMainSources(() -> ArchitectureRules.beanMethods(
85-
ArchitectureCheckAnnotations.classFor(getAnnotationClasses().get(), Annotation.CONDITIONAL_ON_CLASS))));
86-
getRules().addAll(whenMainSources(() -> ArchitectureRules.conditionalOnMissingBean(ArchitectureCheckAnnotations
87-
.classFor(getAnnotationClasses().get(), Annotation.CONDITIONAL_ON_MISSING_BEAN))));
88-
getRules().addAll(whenMainSources(() -> ArchitectureRules.configurationProperties(ArchitectureCheckAnnotations
89-
.classFor(getAnnotationClasses().get(), Annotation.CONFIGURATION_PROPERTIES))));
90-
getRules()
91-
.addAll(whenMainSources(() -> ArchitectureRules.configurationPropertiesBinding(ArchitectureCheckAnnotations
92-
.classFor(getAnnotationClasses().get(), Annotation.CONFIGURATION_PROPERTIES_BINDING))));
93-
getRules().addAll(
94-
whenMainSources(() -> ArchitectureRules.configurationPropertiesDeprecation(ArchitectureCheckAnnotations
95-
.classFor(getAnnotationClasses().get(), Annotation.DEPRECATED_CONFIGURATION_PROPERTY))));
82+
getRules().addAll(whenMainSources(() -> ArchitectureRules.beanMethods(ArchitectureCheckAnnotation
83+
.classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONDITIONAL_ON_CLASS))));
84+
getRules().addAll(whenMainSources(() -> ArchitectureRules.conditionalOnMissingBean(ArchitectureCheckAnnotation
85+
.classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONDITIONAL_ON_MISSING_BEAN))));
86+
getRules().addAll(whenMainSources(() -> ArchitectureRules.configurationProperties(ArchitectureCheckAnnotation
87+
.classFor(getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES))));
88+
getRules().addAll(whenMainSources(
89+
() -> ArchitectureRules.configurationPropertiesBinding(ArchitectureCheckAnnotation.classFor(
90+
getAnnotationClasses().get(), ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES_BINDING))));
91+
getRules().addAll(whenMainSources(
92+
() -> ArchitectureRules.configurationPropertiesDeprecation(ArchitectureCheckAnnotation.classFor(
93+
getAnnotationClasses().get(), ArchitectureCheckAnnotation.DEPRECATED_CONFIGURATION_PROPERTY))));
9694
getRuleDescriptions().set(getRules().map(this::asDescriptions));
9795
}
9896

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,35 +23,49 @@
2323
* tests.
2424
*
2525
* @author Scott Frederick
26+
* @author Stephane Nicoll
2627
*/
27-
public final class ArchitectureCheckAnnotations {
28+
public enum ArchitectureCheckAnnotation {
2829

29-
enum Annotation {
30+
/**
31+
* Condition on class check.
32+
*/
33+
CONDITIONAL_ON_CLASS,
3034

31-
CONDITIONAL_ON_CLASS, CONDITIONAL_ON_MISSING_BEAN, CONFIGURATION_PROPERTIES, DEPRECATED_CONFIGURATION_PROPERTY,
32-
CONFIGURATION_PROPERTIES_BINDING
35+
/**
36+
* Condition on missing bean check.
37+
*/
38+
CONDITIONAL_ON_MISSING_BEAN,
3339

34-
}
40+
/**
41+
* Configuration properties bean.
42+
*/
43+
CONFIGURATION_PROPERTIES,
3544

36-
private ArchitectureCheckAnnotations() {
37-
}
45+
/**
46+
* Deprecated configuration property.
47+
*/
48+
DEPRECATED_CONFIGURATION_PROPERTY,
49+
50+
/**
51+
* Custom implementation to bind configuration properties.
52+
*/
53+
CONFIGURATION_PROPERTIES_BINDING;
3854

39-
private static final Map<String, String> annotationNameToClassName = Map.of(Annotation.CONDITIONAL_ON_CLASS.name(),
40-
"org.springframework.boot.autoconfigure.condition.ConditionalOnClass",
41-
Annotation.CONDITIONAL_ON_MISSING_BEAN.name(),
55+
private static final Map<String, String> annotationNameToClassName = Map.of(CONDITIONAL_ON_CLASS.name(),
56+
"org.springframework.boot.autoconfigure.condition.ConditionalOnClass", CONDITIONAL_ON_MISSING_BEAN.name(),
4257
"org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean",
43-
Annotation.CONFIGURATION_PROPERTIES.name(),
44-
"org.springframework.boot.context.properties.ConfigurationProperties",
45-
Annotation.DEPRECATED_CONFIGURATION_PROPERTY.name(),
58+
CONFIGURATION_PROPERTIES.name(), "org.springframework.boot.context.properties.ConfigurationProperties",
59+
DEPRECATED_CONFIGURATION_PROPERTY.name(),
4660
"org.springframework.boot.context.properties.DeprecatedConfigurationProperty",
47-
Annotation.CONFIGURATION_PROPERTIES_BINDING.name(),
61+
CONFIGURATION_PROPERTIES_BINDING.name(),
4862
"org.springframework.boot.context.properties.ConfigurationPropertiesBinding");
4963

5064
static Map<String, String> asMap() {
5165
return annotationNameToClassName;
5266
}
5367

54-
static String classFor(Map<String, String> annotationProperty, Annotation annotation) {
68+
static String classFor(Map<String, String> annotationProperty, ArchitectureCheckAnnotation annotation) {
5569
String name = annotation.name();
5670
return annotationProperty.getOrDefault(name, asMap().get(name));
5771
}

buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import org.junit.jupiter.params.ParameterizedTest;
4444
import org.junit.jupiter.params.provider.EnumSource;
4545

46-
import org.springframework.boot.build.architecture.ArchitectureCheckAnnotations.Annotation;
4746
import org.springframework.boot.build.architecture.annotations.TestConditionalOnClass;
4847
import org.springframework.boot.build.architecture.annotations.TestConditionalOnMissingBean;
4948
import org.springframework.boot.build.architecture.annotations.TestConfigurationProperties;
@@ -530,28 +529,31 @@ GradleBuild withProhibitObjectsRequireNonNull(Boolean prohibitObjectsRequireNonN
530529
}
531530

532531
GradleBuild withConditionalOnClassAnnotation() {
533-
configureTasks(Annotation.CONDITIONAL_ON_CLASS.name(), TestConditionalOnClass.class.getName());
532+
configureTasks(ArchitectureCheckAnnotation.CONDITIONAL_ON_CLASS.name(),
533+
TestConditionalOnClass.class.getName());
534534
return this;
535535
}
536536

537537
GradleBuild withConditionalOnMissingBeanAnnotation() {
538-
configureTasks(Annotation.CONDITIONAL_ON_MISSING_BEAN.name(), TestConditionalOnMissingBean.class.getName());
538+
configureTasks(ArchitectureCheckAnnotation.CONDITIONAL_ON_MISSING_BEAN.name(),
539+
TestConditionalOnMissingBean.class.getName());
539540
return this;
540541
}
541542

542543
GradleBuild withConfigurationPropertiesAnnotation() {
543-
configureTasks(Annotation.CONFIGURATION_PROPERTIES.name(), TestConfigurationProperties.class.getName());
544+
configureTasks(ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES.name(),
545+
TestConfigurationProperties.class.getName());
544546
return this;
545547
}
546548

547549
GradleBuild withConfigurationPropertiesBindingAnnotation() {
548-
configureTasks(Annotation.CONFIGURATION_PROPERTIES_BINDING.name(),
550+
configureTasks(ArchitectureCheckAnnotation.CONFIGURATION_PROPERTIES_BINDING.name(),
549551
TestConfigurationPropertiesBinding.class.getName());
550552
return this;
551553
}
552554

553555
GradleBuild withDeprecatedConfigurationPropertyAnnotation() {
554-
configureTasks(Annotation.DEPRECATED_CONFIGURATION_PROPERTY.name(),
556+
configureTasks(ArchitectureCheckAnnotation.DEPRECATED_CONFIGURATION_PROPERTY.name(),
555557
TestDeprecatedConfigurationProperty.class.getName());
556558
return this;
557559
}

0 commit comments

Comments
 (0)