diff --git a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureRules.java b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureRules.java index 7349128d4b3..6ed88affbb1 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureRules.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitectureRules.java @@ -80,8 +80,6 @@ final class ArchitectureRules { private static final String AUTOCONFIGURATION_ANNOTATION = "org.springframework.boot.autoconfigure.AutoConfiguration"; - private static final String TEST_AUTOCONFIGURATION_ANNOTATION = "org.springframework.boot.test.autoconfigure.TestAutoConfiguration"; - private ArchitectureRules() { } @@ -377,6 +375,16 @@ final class ArchitectureRules { .allowEmptyShould(true); } + private static ArchRule testAutoConfigurationClassesShouldBePackagePrivateAndFinal() { + return ArchRuleDefinition.classes() + .that(areTestAutoConfiguration()) + .should() + .bePackagePrivate() + .andShould() + .haveModifier(JavaModifier.FINAL) + .allowEmptyShould(true); + } + private static ArchRule autoConfigurationClassesShouldHaveNoPublicMembers() { return ArchRuleDefinition.members() .that() @@ -399,22 +407,16 @@ final class ArchitectureRules { .allowEmptyShould(true); } - private static ArchRule testAutoConfigurationClassesShouldBePackagePrivateAndFinal() { - return ArchRuleDefinition.classes() - .that() - .areAnnotatedWith(TEST_AUTOCONFIGURATION_ANNOTATION) - .should() - .bePackagePrivate() - .andShould() - .haveModifier(JavaModifier.FINAL) - .allowEmptyShould(true); - } - static DescribedPredicate areRegularAutoConfiguration() { return DescribedPredicate.describe("Regular @AutoConfiguration", - (javaClass) -> javaClass.isMetaAnnotatedWith(AUTOCONFIGURATION_ANNOTATION) - && !javaClass.isMetaAnnotatedWith(TEST_AUTOCONFIGURATION_ANNOTATION) - && !javaClass.isAnnotation()); + (javaClass) -> javaClass.isAnnotatedWith(AUTOCONFIGURATION_ANNOTATION) + && !javaClass.getName().contains("TestAutoConfiguration") && !javaClass.isAnnotation()); + } + + static DescribedPredicate areTestAutoConfiguration() { + return DescribedPredicate.describe("Test @AutoConfiguration", + (javaClass) -> javaClass.isAnnotatedWith(AUTOCONFIGURATION_ANNOTATION) + && javaClass.getName().contains("TestAutoConfiguration") && !javaClass.isAnnotation()); } private static DescribedPredicate dontOverridePublicMethods() { diff --git a/core/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/TestAutoConfiguration.java b/core/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/TestAutoConfiguration.java deleted file mode 100644 index 40c9741ff59..00000000000 --- a/core/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/TestAutoConfiguration.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2012-present 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. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.test.autoconfigure; - -import java.lang.annotation.Documented; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.annotation.AliasFor; - -/** - * Indicates that a class provides configuration that can be automatically applied by - * Spring Boot tests. Test Auto-configuration classes are regular - * {@link AutoConfiguration @AutoConfiguration} classes but may be package-private. - * - * @author Phillip Webb - * @see AutoConfiguration - * @since 4.0.0 - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -@Configuration(proxyBeanMethods = false) -@AutoConfiguration -public @interface TestAutoConfiguration { - - /** - * Alias for {@link AutoConfiguration#value()}. - * @return the aliased value - */ - @AliasFor(annotation = AutoConfiguration.class) - String value() default ""; - - /** - * Alias for {@link AutoConfiguration#before()}. - * @return the aliased value - */ - @AliasFor(annotation = AutoConfiguration.class) - Class[] before() default {}; - - /** - * Alias for {@link AutoConfiguration#beforeName()}. - * @return the aliased value - */ - @AliasFor(annotation = AutoConfiguration.class) - String[] beforeName() default {}; - - /** - * Alias for {@link AutoConfiguration#after()}. - * @return the aliased value - */ - @AliasFor(annotation = AutoConfiguration.class) - Class[] after() default {}; - - /** - * Alias for {@link AutoConfiguration#afterName()}. - * @return the aliased value - */ - @AliasFor(annotation = AutoConfiguration.class) - String[] afterName() default {}; - -} diff --git a/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfiguration.java b/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterTestAutoConfiguration.java similarity index 91% rename from module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfiguration.java rename to module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterTestAutoConfiguration.java index b9a3da68a69..515b0b46789 100644 --- a/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfiguration.java +++ b/module/spring-boot-gson/src/main/java/org/springframework/boot/gson/autoconfigure/GsonTesterTestAutoConfiguration.java @@ -20,9 +20,9 @@ import com.google.gson.Gson; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.test.autoconfigure.TestAutoConfiguration; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; @@ -36,9 +36,9 @@ import org.springframework.context.annotation.Scope; * * @author Phjllip Webb */ -@TestAutoConfiguration(after = GsonAutoConfiguration.class) +@AutoConfiguration(after = GsonAutoConfiguration.class) @ConditionalOnJsonTesters -final class GsonTesterAutoConfiguration { +final class GsonTesterTestAutoConfiguration { @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) diff --git a/module/spring-boot-gson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports b/module/spring-boot-gson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports index d2bb9af22da..ac13fbde0ac 100644 --- a/module/spring-boot-gson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports +++ b/module/spring-boot-gson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports @@ -1 +1 @@ -org.springframework.boot.gson.autoconfigure.GsonTesterAutoConfiguration \ No newline at end of file +org.springframework.boot.gson.autoconfigure.GsonTesterTestAutoConfiguration \ No newline at end of file diff --git a/module/spring-boot-gson/src/test/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfigurationTests.java b/module/spring-boot-gson/src/test/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfigurationTests.java index 7eb0efbccfa..fcf119002eb 100644 --- a/module/spring-boot-gson/src/test/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfigurationTests.java +++ b/module/spring-boot-gson/src/test/java/org/springframework/boot/gson/autoconfigure/GsonTesterAutoConfigurationTests.java @@ -31,14 +31,14 @@ import org.springframework.context.support.GenericApplicationContext; import static org.assertj.core.api.Assertions.assertThat; /** - * Tests for {@link GsonTesterAutoConfiguration}. + * Tests for {@link GsonTesterTestAutoConfiguration}. * * @author Andy Wilkinson */ class GsonTesterAutoConfigurationTests { private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations - .of(JsonTestersAutoConfiguration.class, GsonAutoConfiguration.class, GsonTesterAutoConfiguration.class)); + .of(JsonTestersAutoConfiguration.class, GsonAutoConfiguration.class, GsonTesterTestAutoConfiguration.class)); @Test void hintsAreContributed() { diff --git a/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfiguration.java b/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterTestAutoConfiguration.java similarity index 92% rename from module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfiguration.java rename to module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterTestAutoConfiguration.java index a165d50c266..7959b32c9c1 100644 --- a/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfiguration.java +++ b/module/spring-boot-jackson/src/main/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterTestAutoConfiguration.java @@ -20,9 +20,9 @@ import tools.jackson.databind.json.JsonMapper; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.test.autoconfigure.TestAutoConfiguration; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; @@ -37,9 +37,9 @@ import org.springframework.context.annotation.Scope; * * @author Phjllip Webb */ -@TestAutoConfiguration(after = JacksonAutoConfiguration.class) +@AutoConfiguration(after = JacksonAutoConfiguration.class) @ConditionalOnJsonTesters -final class JacksonTesterAutoConfiguration { +final class JacksonTesterTestAutoConfiguration { @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) diff --git a/module/spring-boot-jackson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports b/module/spring-boot-jackson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports index 48e94bd77b0..73611b1e605 100644 --- a/module/spring-boot-jackson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports +++ b/module/spring-boot-jackson/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports @@ -1 +1 @@ -org.springframework.boot.jackson.autoconfigure.JacksonTesterAutoConfiguration +org.springframework.boot.jackson.autoconfigure.JacksonTesterTestAutoConfiguration diff --git a/module/spring-boot-jackson/src/test/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfigurationTests.java b/module/spring-boot-jackson/src/test/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfigurationTests.java index 2411c7ccef2..74ca3dfca4f 100644 --- a/module/spring-boot-jackson/src/test/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfigurationTests.java +++ b/module/spring-boot-jackson/src/test/java/org/springframework/boot/jackson/autoconfigure/JacksonTesterAutoConfigurationTests.java @@ -37,8 +37,9 @@ import static org.assertj.core.api.Assertions.assertThat; */ class JacksonTesterAutoConfigurationTests { - private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations - .of(JsonTestersAutoConfiguration.class, JacksonAutoConfiguration.class, JacksonTesterAutoConfiguration.class)); + private final ApplicationContextRunner runner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(JsonTestersAutoConfiguration.class, JacksonAutoConfiguration.class, + JacksonTesterTestAutoConfiguration.class)); @Test void hintsAreContributed() { diff --git a/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterAutoConfiguration.java b/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterTestAutoConfiguration.java similarity index 92% rename from module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterAutoConfiguration.java rename to module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterTestAutoConfiguration.java index 09a5a100739..2159f321f86 100644 --- a/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterAutoConfiguration.java +++ b/module/spring-boot-jackson2/src/main/java/org/springframework/boot/jackson2/autoconfigure/Jackson2TesterTestAutoConfiguration.java @@ -20,9 +20,9 @@ import com.fasterxml.jackson.databind.json.JsonMapper; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.test.autoconfigure.TestAutoConfiguration; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; @@ -39,10 +39,10 @@ import org.springframework.context.annotation.Scope; * @deprecated since 4.0.0 for removal in 4.2.0 in favor of Jackson 3. */ @Deprecated(since = "4.0.0", forRemoval = true) -@TestAutoConfiguration(after = Jackson2AutoConfiguration.class) +@AutoConfiguration(after = Jackson2AutoConfiguration.class) @ConditionalOnJsonTesters @SuppressWarnings("removal") -final class Jackson2TesterAutoConfiguration { +final class Jackson2TesterTestAutoConfiguration { @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) diff --git a/module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfiguration.java b/module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterTestAutoConfiguration.java similarity index 91% rename from module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfiguration.java rename to module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterTestAutoConfiguration.java index 849da29e240..a4b9df7d358 100644 --- a/module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfiguration.java +++ b/module/spring-boot-jsonb/src/main/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterTestAutoConfiguration.java @@ -20,9 +20,9 @@ import jakarta.json.bind.Jsonb; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.test.autoconfigure.TestAutoConfiguration; import org.springframework.boot.test.autoconfigure.json.ConditionalOnJsonTesters; import org.springframework.boot.test.autoconfigure.json.JsonMarshalTesterRuntimeHints; import org.springframework.boot.test.autoconfigure.json.JsonTesterFactoryBean; @@ -36,9 +36,9 @@ import org.springframework.context.annotation.Scope; * * @author Phjllip Webb */ -@TestAutoConfiguration(after = JsonbAutoConfiguration.class) +@AutoConfiguration(after = JsonbAutoConfiguration.class) @ConditionalOnJsonTesters -final class JsonbTesterAutoConfiguration { +final class JsonbTesterTestAutoConfiguration { @Bean @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) diff --git a/module/spring-boot-jsonb/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports b/module/spring-boot-jsonb/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports index 8b0d01c7477..8508fddf65a 100644 --- a/module/spring-boot-jsonb/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports +++ b/module/spring-boot-jsonb/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.json.AutoConfigureJsonTesters.imports @@ -1 +1 @@ -org.springframework.boot.jsonb.autoconfigure.JsonbTesterAutoConfiguration +org.springframework.boot.jsonb.autoconfigure.JsonbTesterTestAutoConfiguration diff --git a/module/spring-boot-jsonb/src/test/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfigurationTests.java b/module/spring-boot-jsonb/src/test/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfigurationTests.java index e30646d2c87..3e291c420c3 100644 --- a/module/spring-boot-jsonb/src/test/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfigurationTests.java +++ b/module/spring-boot-jsonb/src/test/java/org/springframework/boot/jsonb/autoconfigure/JsonbTesterAutoConfigurationTests.java @@ -31,14 +31,14 @@ import org.springframework.context.support.GenericApplicationContext; import static org.assertj.core.api.Assertions.assertThat; /** - * Tests for {@link JsonbTesterAutoConfiguration}. + * Tests for {@link JsonbTesterTestAutoConfiguration}. * * @author Andy Wilkinson */ class JsonbTesterAutoConfigurationTests { private final ApplicationContextRunner runner = new ApplicationContextRunner().withConfiguration(AutoConfigurations - .of(JsonTestersAutoConfiguration.class, JsonbAutoConfiguration.class, JsonbTesterAutoConfiguration.class)); + .of(JsonTestersAutoConfiguration.class, JsonbAutoConfiguration.class, JsonbTesterTestAutoConfiguration.class)); @Test void hintsAreContributed() {