diff --git a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/AutoConfigureRestDocs.java b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/AutoConfigureRestDocs.java index b7f8dcfa32..901107d84d 100644 --- a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/AutoConfigureRestDocs.java +++ b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/AutoConfigureRestDocs.java @@ -25,6 +25,7 @@ import java.lang.annotation.Target; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.test.autoconfigure.properties.PropertyMapping; import org.springframework.context.annotation.Import; +import org.springframework.core.annotation.AliasFor; /** * Annotation that can be applied to a test class to enable and configure @@ -46,17 +47,19 @@ import org.springframework.context.annotation.Import; public @interface AutoConfigureRestDocs { /** - * The output directory to which generated snippets will be written. A synonym for + * The output directory to which generated snippets will be written. A alias for * {@link #outputDir}. * @return the output directory */ + @AliasFor("outputDir") String value() default ""; /** - * The output directory to which generated snippets will be written. A synonym for + * The output directory to which generated snippets will be written. A alias for * {@link #value}. * @return the output directory */ + @AliasFor("value") String outputDir() default ""; /** diff --git a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocumentationContextProviderRegistrar.java b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocumentationContextProviderRegistrar.java index 0963da774a..7b5a62f456 100644 --- a/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocumentationContextProviderRegistrar.java +++ b/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocumentationContextProviderRegistrar.java @@ -24,38 +24,26 @@ import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; import org.springframework.core.type.AnnotationMetadata; import org.springframework.restdocs.ManualRestDocumentation; -import org.springframework.util.StringUtils; /** * {@link ImportBeanDefinitionRegistrar} used by {@link AutoConfigureRestDocs}. * * @author Andy Wilkinson + * @see AutoConfigureRestDocs */ class RestDocumentationContextProviderRegistrar implements ImportBeanDefinitionRegistrar { @Override public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) { + Map annotationAttributes = importingClassMetadata + .getAnnotationAttributes(AutoConfigureRestDocs.class.getName()); + String outputDir = (String) annotationAttributes.get("outputDir"); AbstractBeanDefinition beanDefinition = BeanDefinitionBuilder .genericBeanDefinition(ManualRestDocumentation.class) - .addConstructorArgValue(determineOutputDir(importingClassMetadata)) - .getBeanDefinition(); + .addConstructorArgValue(outputDir).getBeanDefinition(); registry.registerBeanDefinition(ManualRestDocumentation.class.getName(), beanDefinition); } - private String determineOutputDir(AnnotationMetadata annotationMetadata) { - Map annotationAttributes = annotationMetadata - .getAnnotationAttributes(AutoConfigureRestDocs.class.getName()); - String outputDir = (String) annotationAttributes.get("outputDir"); - if (!StringUtils.hasText(outputDir)) { - outputDir = (String) annotationAttributes.get("value"); - if (!StringUtils.hasText(outputDir)) { - throw new IllegalStateException( - "Either value or outputDir must be specified on @AutoConfigureRestDocs"); - } - } - return outputDir; - } - } diff --git a/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocsAutoConfigurationAdvancedConfigurationIntegrationTests.java b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocsAutoConfigurationAdvancedConfigurationIntegrationTests.java index 08f1d6af0a..d27d6b2047 100644 --- a/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocsAutoConfigurationAdvancedConfigurationIntegrationTests.java +++ b/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/restdocs/RestDocsAutoConfigurationAdvancedConfigurationIntegrationTests.java @@ -47,7 +47,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder */ @RunWith(SpringRunner.class) @WebMvcTest(controllers = RestDocsTestController.class, secure = false) -@AutoConfigureRestDocs(outputDir = "target/generated-snippets") +@AutoConfigureRestDocs("target/generated-snippets") public class RestDocsAutoConfigurationAdvancedConfigurationIntegrationTests { @Before