From 6d50e26b704058d27e302896178d43ae7eca7854 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Sun, 30 Oct 2016 10:57:11 +0100 Subject: [PATCH] Polish contribution Closes gh-7215 --- spring-boot-actuator-docs/pom.xml | 2 ++ .../src/main/asciidoc/index.adoc | 16 +++++++++------- .../HypermediaEndpointDocumentation.java | 6 ++++-- ...additional-spring-configuration-metadata.json | 6 ++++++ .../appendix-application-properties.adoc | 2 +- .../main/asciidoc/production-ready-features.adoc | 5 +++-- 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/spring-boot-actuator-docs/pom.xml b/spring-boot-actuator-docs/pom.xml index 1273fefc0c..0ed51cbf08 100644 --- a/spring-boot-actuator-docs/pom.xml +++ b/spring-boot-actuator-docs/pom.xml @@ -86,10 +86,12 @@ org.springframework.hateoas spring-hateoas + provided org.springframework.plugin spring-plugin-core + provided org.springframework.restdocs diff --git a/spring-boot-actuator-docs/src/main/asciidoc/index.adoc b/spring-boot-actuator-docs/src/main/asciidoc/index.adoc index fcf66b8e72..cec828cf48 100644 --- a/spring-boot-actuator-docs/src/main/asciidoc/index.adoc +++ b/spring-boot-actuator-docs/src/main/asciidoc/index.adoc @@ -57,13 +57,15 @@ HAL browser is not active). == Hypermedia Support -If https://projects.spring.io/spring-hateoas[Spring HATEOAS] is enabled (i.e. if it is -on the classpath by default) and `endpoints.hypermedia.enabled` is set to `true` then the Actuator endpoint responses are enhanced with -hypermedia in the form of "links". The default media type for responses is -http://stateless.co/hal_specification.html[HAL], resulting in each resource having an -extra property called "_links". You can change the media type to another one supported by -Spring HATEOAS by providing your own `@EnableHypermedia` annotation and custom providers -as necessary. +If `endpoints.hypermedia.enabled` is set to `true` and +https://projects.spring.io/spring-hateoas[Spring HATEOAS] is on the classpath (e.g. +through the `spring-boot-starter-hateoas` or if you are using +http://projects.spring.io/spring-data-rest[Spring Data REST]) then the Actuator endpoint +responses are enhanced with hypermedia in the form of "links". The default media type for +responses is http://stateless.co/hal_specification.html[HAL], resulting in each resource +having an extra property called "_links". You can change the media type to another one +supported by Spring HATEOAS by providing your own `@EnableHypermedia` annotation and +custom providers as necessary. Example enhanced "/metrics" endpoint with additional "_links": diff --git a/spring-boot-actuator-docs/src/restdoc/java/org/springframework/boot/actuate/hypermedia/HypermediaEndpointDocumentation.java b/spring-boot-actuator-docs/src/restdoc/java/org/springframework/boot/actuate/hypermedia/HypermediaEndpointDocumentation.java index 9ac4f15b29..00b6e7852d 100644 --- a/spring-boot-actuator-docs/src/restdoc/java/org/springframework/boot/actuate/hypermedia/HypermediaEndpointDocumentation.java +++ b/spring-boot-actuator-docs/src/restdoc/java/org/springframework/boot/actuate/hypermedia/HypermediaEndpointDocumentation.java @@ -39,7 +39,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. @RunWith(SpringRunner.class) @ContextConfiguration(classes = SpringBootHypermediaApplication.class, loader = SpringBootContextLoader.class) @WebAppConfiguration -@TestPropertySource(properties = { "spring.jackson.serialization.indent_output=true", "endpoints.hypermedia.enabled=true" }) +@TestPropertySource(properties = { "spring.jackson.serialization.indent_output=true", + "endpoints.hypermedia.enabled=true" }) @DirtiesContext @AutoConfigureMockMvc @AutoConfigureRestDocs("target/generated-snippets") @@ -58,7 +59,8 @@ public class HypermediaEndpointDocumentation { public void metrics() throws Exception { this.mockMvc.perform(get("/metrics").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) - .andExpect(jsonPath("$._links.self.href").value("http://localhost:8080/metrics")) + .andExpect(jsonPath("$._links.self.href") + .value("http://localhost:8080/metrics")) .andDo(document("metrics/hypermedia")); } diff --git a/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 8e774d1de4..11b53d42ed 100644 --- a/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-actuator/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -47,6 +47,12 @@ "vcap_services" ] }, + { + "name": "endpoints.hypermedia.enabled", + "type": "java.lang.Boolean", + "description": "Enable hypermedia support for endpoints.", + "defaultValue": false + }, { "name": "endpoints.info.path", "type": "java.lang.String", diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 6b884f9f68..aa7e059b46 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -930,7 +930,6 @@ content into your application; rather pick only the properties that you need. # ENDPOINTS ({sc-spring-boot-actuator}/endpoint/AbstractEndpoint.{sc-ext}[AbstractEndpoint] subclasses) endpoints.enabled=true # Enable endpoints. endpoints.sensitive= # Default endpoint sensitive setting. - endpoints.hypermedia.enabled=false # Enable hypermedia support for endpoints. endpoints.actuator.enabled=true # Enable the endpoint. endpoints.actuator.path= # Endpoint URL path. endpoints.actuator.sensitive=false # Enable security on the endpoint. @@ -972,6 +971,7 @@ content into your application; rather pick only the properties that you need. endpoints.heapdump.enabled= # Enable the endpoint. endpoints.heapdump.path= # Endpoint path. endpoints.heapdump.sensitive= # Mark if the endpoint exposes sensitive information. + endpoints.hypermedia.enabled=false # Enable hypermedia support for endpoints. endpoints.info.enabled= # Enable the endpoint. endpoints.info.id= # Endpoint identifier. endpoints.info.path= # Endpoint path. diff --git a/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc b/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc index b83bbc4ad4..0d4d75f42f 100644 --- a/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc +++ b/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc @@ -203,9 +203,10 @@ For example, to mark _all_ endpoints as sensitive except `info`: [[production-ready-endpoint-hypermedia]] === Hypermedia for actuator MVC endpoints -If http://projects.spring.io/spring-hateoas[Spring HATEOAS] is on the classpath (e.g. +If `endpoints.hypermedia.enabled` is set to `true` and +http://projects.spring.io/spring-hateoas[Spring HATEOAS] is on the classpath (e.g. through the `spring-boot-starter-hateoas` or if you are using -http://projects.spring.io/spring-data-rest[Spring Data REST]) and `endpoints.hypermedia.enabled` is set to `true` then the HTTP endpoints +http://projects.spring.io/spring-data-rest[Spring Data REST]) then the HTTP endpoints from the Actuator are enhanced with hypermedia links, and a "`discovery page`" is added with links to all the endpoints. The "`discovery page`" is available on `/actuator` by default. It is implemented as an endpoint, allowing properties to be used to configure