From 83b72f7962829abdc77d8eb38bae8e0ac86f22a4 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 5 Feb 2016 20:57:46 +0000 Subject: [PATCH] Introduce constants for common attribute names Closes gh-193 --- .../restdocs/config/SnippetConfigurer.java | 9 ++---- .../generate/RestDocumentationGenerator.java | 29 ++++++++++++------- .../request/PathParametersSnippet.java | 3 +- .../RestDocumentationGeneratorTests.java | 3 +- .../RestDocumentationConfigurerTests.java | 11 ++++--- .../PathParametersSnippetFailureTests.java | 10 +++++-- .../request/PathParametersSnippetTests.java | 24 ++++++++++----- .../MockMvcRestDocumentationConfigurer.java | 10 ++++--- .../RestDocumentationRequestBuilders.java | 23 ++++++++------- .../RestDocumentationResultHandler.java | 4 ++- ...RestDocumentationRequestBuildersTests.java | 4 ++- ...estAssuredRestDocumentationConfigurer.java | 2 +- .../restassured/RestDocumentationFilter.java | 6 ++-- ...suredRestDocumentationConfigurerTests.java | 8 +++-- 14 files changed, 89 insertions(+), 57 deletions(-) diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/SnippetConfigurer.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/SnippetConfigurer.java index b82ee82c..0827c519 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/SnippetConfigurer.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/config/SnippetConfigurer.java @@ -22,6 +22,7 @@ import java.util.Map; import org.springframework.restdocs.RestDocumentationContext; import org.springframework.restdocs.curl.CurlDocumentation; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.http.HttpDocumentation; import org.springframework.restdocs.snippet.Snippet; import org.springframework.restdocs.templates.TemplateFormat; @@ -36,11 +37,6 @@ import org.springframework.restdocs.templates.TemplateFormats; */ public abstract class SnippetConfigurer extends AbstractNestedConfigurer

{ - /** - * The name of the attribute that is used to hold the default snippets. - */ - public static final String ATTRIBUTE_DEFAULT_SNIPPETS = "org.springframework.restdocs.defaultSnippets"; - private List defaultSnippets = Arrays.asList( CurlDocumentation.curlRequest(), HttpDocumentation.httpRequest(), HttpDocumentation.httpResponse()); @@ -77,7 +73,8 @@ public abstract class SnippetConfigurer extends AbstractNestedConfigurer

configuration, RestDocumentationContext context) { configuration.put(SnippetConfiguration.class.getName(), new SnippetConfiguration( this.snippetEncoding, this.templateFormat)); - configuration.put(ATTRIBUTE_DEFAULT_SNIPPETS, this.defaultSnippets); + configuration.put(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS, + this.defaultSnippets); } /** diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/generate/RestDocumentationGenerator.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/generate/RestDocumentationGenerator.java index b60f5d9f..2a46d7e1 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/generate/RestDocumentationGenerator.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/generate/RestDocumentationGenerator.java @@ -23,7 +23,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.springframework.restdocs.config.SnippetConfigurer; import org.springframework.restdocs.operation.Operation; import org.springframework.restdocs.operation.OperationRequest; import org.springframework.restdocs.operation.OperationResponse; @@ -45,6 +44,16 @@ import org.springframework.util.Assert; */ public final class RestDocumentationGenerator { + /** + * Name of the operation attribute used to hold the request's URL template. + */ + public static final String ATTRIBUTE_NAME_URL_TEMPLATE = "org.springframework.restdocs.urlTemplate"; + + /** + * Name of the operation attribute used to hold the {@link List} of default snippets. + */ + public static final String ATTRIBUTE_NAME_DEFAULT_SNIPPETS = "org.springframework.restdocs.defaultSnippets"; + private final String identifier; private final OperationRequestPreprocessor requestPreprocessor; @@ -58,8 +67,8 @@ public final class RestDocumentationGenerator { private final ResponseConverter responseConverter; /** - * Creates a new {@code RestDocumentationGenerator} for the operation identified by the - * given {@code identifier}. The given {@code requestConverter} and + * Creates a new {@code RestDocumentationGenerator} for the operation identified by + * the given {@code identifier}. The given {@code requestConverter} and * {@code responseConverter} are used to convert the operation's request and response * into generic {@code OperationRequest} and {@code OperationResponse} instances that * can then be documented. The given documentation {@code snippets} will be produced. @@ -78,8 +87,8 @@ public final class RestDocumentationGenerator { } /** - * Creates a new {@code RestDocumentationGenerator} for the operation identified by the - * given {@code identifier}. The given {@code requestConverter} and + * Creates a new {@code RestDocumentationGenerator} for the operation identified by + * the given {@code identifier}. The given {@code requestConverter} and * {@code responseConverter} are used to convert the operation's request and response * into generic {@code OperationRequest} and {@code OperationResponse} instances that * can then be documented. The given {@code requestPreprocessor} is applied to the @@ -101,8 +110,8 @@ public final class RestDocumentationGenerator { } /** - * Creates a new {@code RestDocumentationGenerator} for the operation identified by the - * given {@code identifier}. The given {@code requestConverter} and + * Creates a new {@code RestDocumentationGenerator} for the operation identified by + * the given {@code identifier}. The given {@code requestConverter} and * {@code responseConverter} are used to convert the operation's request and response * into generic {@code OperationRequest} and {@code OperationResponse} instances that * can then be documented. The given {@code responsePreprocessor} is applied to the @@ -125,8 +134,8 @@ public final class RestDocumentationGenerator { } /** - * Creates a new {@code RestDocumentationGenerator} for the operation identified by the - * given {@code identifier}. The given {@code requestConverter} and + * Creates a new {@code RestDocumentationGenerator} for the operation identified by + * the given {@code identifier}. The given {@code requestConverter} and * {@code responseConverter} are used to convert the operation's request and response * into generic {@code OperationRequest} and {@code OperationResponse} instances that * can then be documented. The given {@code requestPreprocessor} and @@ -202,7 +211,7 @@ public final class RestDocumentationGenerator { private List getSnippets(Map configuration) { List combinedSnippets = new ArrayList<>(this.snippets); List defaultSnippets = (List) configuration - .get(SnippetConfigurer.ATTRIBUTE_DEFAULT_SNIPPETS); + .get(ATTRIBUTE_NAME_DEFAULT_SNIPPETS); if (defaultSnippets != null) { combinedSnippets.addAll(defaultSnippets); } diff --git a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java index 0670be1d..b09b59fa 100644 --- a/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java +++ b/spring-restdocs-core/src/main/java/org/springframework/restdocs/request/PathParametersSnippet.java @@ -23,6 +23,7 @@ import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.operation.Operation; import org.springframework.restdocs.snippet.Snippet; import org.springframework.restdocs.snippet.SnippetException; @@ -91,7 +92,7 @@ public class PathParametersSnippet extends AbstractParametersSnippet { private String extractUrlTemplate(Operation operation) { String urlTemplate = (String) operation.getAttributes().get( - "org.springframework.restdocs.urlTemplate"); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE); Assert.notNull( urlTemplate, "urlTemplate not found. If you are using MockMvc, did you use RestDocumentationRequestBuilders to " diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/RestDocumentationGeneratorTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/RestDocumentationGeneratorTests.java index d03aa6da..a202eb35 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/RestDocumentationGeneratorTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/RestDocumentationGeneratorTests.java @@ -25,7 +25,6 @@ import java.util.Map; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.springframework.http.HttpHeaders; -import org.springframework.restdocs.config.SnippetConfigurer; import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.operation.Operation; import org.springframework.restdocs.operation.OperationRequest; @@ -91,7 +90,7 @@ public class RestDocumentationGeneratorTests { HashMap configuration = new HashMap<>(); Snippet defaultSnippet1 = mock(Snippet.class); Snippet defaultSnippet2 = mock(Snippet.class); - configuration.put(SnippetConfigurer.ATTRIBUTE_DEFAULT_SNIPPETS, + configuration.put(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS, Arrays.asList(defaultSnippet1, defaultSnippet2)); new RestDocumentationGenerator<>("id", this.requestConverter, this.responseConverter, this.snippet).handle(this.request, this.response, diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java index 9819d8c5..a18eebc7 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/config/RestDocumentationConfigurerTests.java @@ -25,6 +25,7 @@ import org.junit.Test; import org.springframework.restdocs.RestDocumentationContext; import org.springframework.restdocs.curl.CurlDocumentation; import org.springframework.restdocs.curl.CurlRequestSnippet; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.http.HttpRequestSnippet; import org.springframework.restdocs.http.HttpResponseSnippet; import org.springframework.restdocs.snippet.Snippet; @@ -67,10 +68,11 @@ public class RestDocumentationConfigurerTests { instanceOf(StandardWriterResolver.class))); assertThat( configuration, - hasEntry(equalTo("org.springframework.restdocs.defaultSnippets"), + hasEntry( + equalTo(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS), instanceOf(List.class))); List defaultSnippets = (List) configuration - .get("org.springframework.restdocs.defaultSnippets"); + .get(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS); assertThat( defaultSnippets, contains(instanceOf(CurlRequestSnippet.class), @@ -115,11 +117,12 @@ public class RestDocumentationConfigurerTests { .apply(configuration, context); assertThat( configuration, - hasEntry(equalTo("org.springframework.restdocs.defaultSnippets"), + hasEntry( + equalTo(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS), instanceOf(List.class))); @SuppressWarnings("unchecked") List defaultSnippets = (List) configuration - .get("org.springframework.restdocs.defaultSnippets"); + .get(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS); assertThat(defaultSnippets, contains(instanceOf(CurlRequestSnippet.class))); } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetFailureTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetFailureTests.java index 06310faf..c389c280 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetFailureTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetFailureTests.java @@ -23,6 +23,7 @@ import java.util.Collections; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.snippet.SnippetException; import org.springframework.restdocs.templates.TemplateFormats; import org.springframework.restdocs.test.ExpectedSnippet; @@ -53,7 +54,8 @@ public class PathParametersSnippetFailureTests { new PathParametersSnippet(Collections.emptyList()) .document(new OperationBuilder("undocumented-path-parameter", this.snippet.getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/{a}/").build()); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, "/{a}/") + .build()); } @Test @@ -65,7 +67,8 @@ public class PathParametersSnippetFailureTests { Arrays.asList(parameterWithName("a").description("one"))) .document(new OperationBuilder("missing-path-parameter", this.snippet .getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/").build()); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, "/") + .build()); } @Test @@ -79,7 +82,8 @@ public class PathParametersSnippetFailureTests { .document(new OperationBuilder( "undocumented-and-missing-path-parameters", this.snippet .getOutputDirectory()).attribute( - "org.springframework.restdocs.urlTemplate", "/{b}").build()); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, "/{b}") + .build()); } } diff --git a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java index 7f989a82..bb17db10 100644 --- a/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java +++ b/spring-restdocs-core/src/test/java/org/springframework/restdocs/request/PathParametersSnippetTests.java @@ -21,6 +21,7 @@ import java.util.Arrays; import org.junit.Test; import org.springframework.restdocs.AbstractSnippetTests; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.templates.TemplateEngine; import org.springframework.restdocs.templates.TemplateFormat; import org.springframework.restdocs.templates.TemplateResourceResolver; @@ -51,9 +52,10 @@ public class PathParametersSnippetTests extends AbstractSnippetTests { "one").row("b", "two")); new PathParametersSnippet(Arrays.asList( parameterWithName("a").description("one"), parameterWithName("b") - .description("two"))).document(operationBuilder("path-parameters") - .attribute("org.springframework.restdocs.urlTemplate", "/{a}/{b}") - .build()); + .description("two"))) + .document(operationBuilder("path-parameters").attribute( + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, + "/{a}/{b}").build()); } @Test @@ -64,7 +66,8 @@ public class PathParametersSnippetTests extends AbstractSnippetTests { new PathParametersSnippet(Arrays.asList(parameterWithName("a").ignored(), parameterWithName("b").description("two"))).document(operationBuilder( "ignored-path-parameter").attribute( - "org.springframework.restdocs.urlTemplate", "/{a}/{b}").build()); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, "/{a}/{b}") + .build()); } @Test @@ -77,7 +80,8 @@ public class PathParametersSnippetTests extends AbstractSnippetTests { parameterWithName("a").description("one"), parameterWithName("b") .description("two"))).document(operationBuilder( "path-parameters-with-query-string").attribute( - "org.springframework.restdocs.urlTemplate", "/{a}/{b}?foo=bar").build()); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, + "/{a}/{b}?foo=bar").build()); } @Test @@ -93,7 +97,8 @@ public class PathParametersSnippetTests extends AbstractSnippetTests { .description("two").attributes(key("foo").value("bravo"))), attributes(key("title").value("The title"))).document(operationBuilder( "path-parameters-with-custom-attributes") - .attribute("org.springframework.restdocs.urlTemplate", "/{a}/{b}") + .attribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, + "/{a}/{b}") .attribute(TemplateEngine.class.getName(), new MustacheTemplateEngine(resolver)).build()); @@ -112,8 +117,11 @@ public class PathParametersSnippetTests extends AbstractSnippetTests { new PathParametersSnippet(Arrays.asList(parameterWithName("a").description("one") .attributes(key("foo").value("alpha")), parameterWithName("b") .description("two").attributes(key("foo").value("bravo")))) - .document(operationBuilder("path-parameters-with-custom-descriptor-attributes") - .attribute("org.springframework.restdocs.urlTemplate", "/{a}/{b}") + .document(operationBuilder( + "path-parameters-with-custom-descriptor-attributes") + .attribute( + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, + "/{a}/{b}") .attribute(TemplateEngine.class.getName(), new MustacheTemplateEngine(resolver)).build()); } diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurer.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurer.java index 7921cab8..e20ecd01 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurer.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/MockMvcRestDocumentationConfigurer.java @@ -23,6 +23,7 @@ import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.restdocs.RestDocumentation; import org.springframework.restdocs.RestDocumentationContext; import org.springframework.restdocs.config.RestDocumentationConfigurer; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.test.web.servlet.request.RequestPostProcessor; import org.springframework.test.web.servlet.setup.ConfigurableMockMvcBuilder; import org.springframework.test.web.servlet.setup.MockMvcConfigurer; @@ -90,11 +91,12 @@ public class MockMvcRestDocumentationConfigurer RestDocumentationContext context = this.restDocumentation.beforeOperation(); Map configuration = new HashMap<>(); configuration.put(MockHttpServletRequest.class.getName(), request); - String urlTemplateAttribute = "org.springframework.restdocs.urlTemplate"; - configuration.put(urlTemplateAttribute, - request.getAttribute(urlTemplateAttribute)); + configuration + .put(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, + request.getAttribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE)); configuration.put(RestDocumentationContext.class.getName(), context); - request.setAttribute("org.springframework.restdocs.configuration", + request.setAttribute( + RestDocumentationResultHandler.ATTRIBUTE_NAME_CONFIGURATION, configuration); MockMvcRestDocumentationConfigurer.this.apply(configuration, context); MockMvcRestDocumentationConfigurer.this.uriConfigurer.apply(configuration, diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java index 2c9dc452..ffe7220d 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuilders.java @@ -19,6 +19,7 @@ package org.springframework.restdocs.mockmvc; import java.net.URI; import org.springframework.http.HttpMethod; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.request.RequestDocumentation; import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; import org.springframework.test.web.servlet.request.MockMultipartHttpServletRequestBuilder; @@ -38,8 +39,6 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; */ public abstract class RestDocumentationRequestBuilders { - private static final String ATTRIBUTE_NAME_URL_TEMPLATE = "org.springframework.restdocs.urlTemplate"; - private RestDocumentationRequestBuilders() { } @@ -55,7 +54,7 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder get(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.get(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -79,7 +78,7 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder post(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.post(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -103,7 +102,7 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder put(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.put(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -127,7 +126,7 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder patch(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.patch(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -151,7 +150,7 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder delete(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.delete(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -175,7 +174,7 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder options(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.options(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -199,7 +198,7 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder head(String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.head(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); } /** @@ -224,7 +223,8 @@ public abstract class RestDocumentationRequestBuilders { public static MockHttpServletRequestBuilder request(HttpMethod httpMethod, String urlTemplate, Object... urlVariables) { return MockMvcRequestBuilders.request(httpMethod, urlTemplate, urlVariables) - .requestAttr(ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + .requestAttr(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, + urlTemplate); } /** @@ -250,7 +250,8 @@ public abstract class RestDocumentationRequestBuilders { Object... urlVariables) { return (MockMultipartHttpServletRequestBuilder) MockMvcRequestBuilders .fileUpload(urlTemplate, urlVariables).requestAttr( - ATTRIBUTE_NAME_URL_TEMPLATE, urlTemplate); + RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, + urlTemplate); } /** diff --git a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java index d536da13..ac43bdd6 100644 --- a/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java +++ b/spring-restdocs-mockmvc/src/main/java/org/springframework/restdocs/mockmvc/RestDocumentationResultHandler.java @@ -35,6 +35,8 @@ import org.springframework.util.Assert; */ public class RestDocumentationResultHandler implements ResultHandler { + static final String ATTRIBUTE_NAME_CONFIGURATION = "org.springframework.restdocs.configuration"; + private final RestDocumentationGenerator delegate; RestDocumentationResultHandler( @@ -47,7 +49,7 @@ public class RestDocumentationResultHandler implements ResultHandler { public void handle(MvcResult result) throws Exception { @SuppressWarnings("unchecked") Map configuration = (Map) result.getRequest() - .getAttribute("org.springframework.restdocs.configuration"); + .getAttribute(ATTRIBUTE_NAME_CONFIGURATION); this.delegate.handle(result.getRequest(), result.getResponse(), configuration); } diff --git a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java index a5bd3159..06968789 100644 --- a/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java +++ b/spring-restdocs-mockmvc/src/test/java/org/springframework/restdocs/mockmvc/RestDocumentationRequestBuildersTests.java @@ -24,6 +24,7 @@ import org.junit.Test; import org.springframework.http.HttpMethod; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockServletContext; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; import static org.hamcrest.CoreMatchers.equalTo; @@ -143,7 +144,8 @@ public class RestDocumentationRequestBuildersTests { HttpMethod httpMethod) { MockHttpServletRequest request = builder.buildRequest(this.servletContext); assertThat( - (String) request.getAttribute("org.springframework.restdocs.urlTemplate"), + (String) request + .getAttribute(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE), is(equalTo("{template}"))); assertThat(request.getRequestURI(), is(equalTo("t"))); assertThat(request.getMethod(), is(equalTo(httpMethod.name()))); diff --git a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurer.java b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurer.java index 25afe0ec..4702a752 100644 --- a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurer.java +++ b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurer.java @@ -59,7 +59,7 @@ public final class RestAssuredRestDocumentationConfigurer RestDocumentationContext context = this.restDocumentation.beforeOperation(); filterContext.setValue(RestDocumentationContext.class.getName(), context); Map configuration = new HashMap<>(); - filterContext.setValue("org.springframework.restdocs.configuration", + filterContext.setValue(RestDocumentationFilter.CONTEXT_KEY_CONFIGURATION, configuration); apply(configuration, context); return filterContext.next(requestSpec, responseSpec); diff --git a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestDocumentationFilter.java b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestDocumentationFilter.java index 29a0b257..fdb3b068 100644 --- a/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestDocumentationFilter.java +++ b/spring-restdocs-restassured/src/main/java/org/springframework/restdocs/restassured/RestDocumentationFilter.java @@ -37,6 +37,8 @@ import com.jayway.restassured.specification.FilterableResponseSpecification; */ public final class RestDocumentationFilter implements Filter { + static final String CONTEXT_KEY_CONFIGURATION = "org.springframework.restdocs.configuration"; + private final RestDocumentationGenerator delegate; RestDocumentationFilter( @@ -51,11 +53,11 @@ public final class RestDocumentationFilter implements Filter { Response response = context.next(requestSpec, responseSpec); Map configuration = new HashMap<>( - context.>getValue("org.springframework.restdocs.configuration")); + context.>getValue(CONTEXT_KEY_CONFIGURATION)); configuration.put(RestDocumentationContext.class.getName(), context .getValue(RestDocumentationContext.class .getName())); - configuration.put("org.springframework.restdocs.urlTemplate", + configuration.put(RestDocumentationGenerator.ATTRIBUTE_NAME_URL_TEMPLATE, requestSpec.getUserDefinedPath()); this.delegate.handle(requestSpec, response, configuration); diff --git a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java index 1f7bbbd4..6b4e02c6 100644 --- a/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java +++ b/spring-restdocs-restassured/src/test/java/org/springframework/restdocs/restassured/RestAssuredRestDocumentationConfigurerTests.java @@ -23,6 +23,7 @@ import org.junit.Rule; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.springframework.restdocs.RestDocumentation; +import org.springframework.restdocs.generate.RestDocumentationGenerator; import org.springframework.restdocs.snippet.WriterResolver; import org.springframework.restdocs.templates.TemplateEngine; @@ -62,7 +63,7 @@ public class RestAssuredRestDocumentationConfigurerTests { public void nextFilterIsCalled() { this.configurer.filter(this.requestSpec, this.responseSpec, this.filterContext); verify(this.filterContext).setValue( - eq("org.springframework.restdocs.configuration"), any(Map.class)); + eq(RestDocumentationFilter.CONTEXT_KEY_CONFIGURATION), any(Map.class)); } @Test @@ -71,7 +72,7 @@ public class RestAssuredRestDocumentationConfigurerTests { @SuppressWarnings("rawtypes") ArgumentCaptor configurationCaptor = ArgumentCaptor.forClass(Map.class); verify(this.filterContext).setValue( - eq("org.springframework.restdocs.configuration"), + eq(RestDocumentationFilter.CONTEXT_KEY_CONFIGURATION), configurationCaptor.capture()); @SuppressWarnings("unchecked") Map configuration = configurationCaptor.getValue(); @@ -85,7 +86,8 @@ public class RestAssuredRestDocumentationConfigurerTests { instanceOf(WriterResolver.class))); assertThat( configuration, - hasEntry(equalTo("org.springframework.restdocs.defaultSnippets"), + hasEntry( + equalTo(RestDocumentationGenerator.ATTRIBUTE_NAME_DEFAULT_SNIPPETS), instanceOf(List.class))); } }