From 5690791261ddcf0e1d34fce3016fb3a97b868126 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Tue, 20 May 2025 14:37:44 -0700 Subject: [PATCH] Document the java info contribution Closes gh-45566 --- .../modules/api/pages/rest/actuator/info.adoc | 10 +++++ .../info/InfoEndpointDocumentationTests.java | 38 ++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/docs/antora/modules/api/pages/rest/actuator/info.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/docs/antora/modules/api/pages/rest/actuator/info.adoc index 4030bb1bdfb..1128987a674 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/docs/antora/modules/api/pages/rest/actuator/info.adoc +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/docs/antora/modules/api/pages/rest/actuator/info.adoc @@ -66,3 +66,13 @@ The following table describes the structure of the `process` section of the resp [cols="2,1,3"] include::partial$rest/actuator/info/response-fields-beneath-process.adoc[] + + + +[[info.retrieving.response-structure.java]] +==== Java Response Structure + +The following table describes the structure of the `java` section of the response: + +[cols="2,1,3"] +include::partial$rest/actuator/info/response-fields-beneath-java.adoc[] diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoEndpointDocumentationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoEndpointDocumentationTests.java index 3d812155938..0c193506c7e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoEndpointDocumentationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoEndpointDocumentationTests.java @@ -27,6 +27,7 @@ import org.springframework.boot.actuate.info.BuildInfoContributor; import org.springframework.boot.actuate.info.GitInfoContributor; import org.springframework.boot.actuate.info.InfoContributor; import org.springframework.boot.actuate.info.InfoEndpoint; +import org.springframework.boot.actuate.info.JavaInfoContributor; import org.springframework.boot.actuate.info.OsInfoContributor; import org.springframework.boot.actuate.info.ProcessInfoContributor; import org.springframework.boot.info.BuildProperties; @@ -55,7 +56,8 @@ class InfoEndpointDocumentationTests extends MockMvcEndpointDocumentationTests { void info() throws Exception { this.mockMvc.perform(get("/actuator/info")) .andExpect(status().isOk()) - .andDo(MockMvcRestDocumentation.document("info", gitInfo(), buildInfo(), osInfo(), processInfo())); + .andDo(MockMvcRestDocumentation.document("info", gitInfo(), buildInfo(), osInfo(), processInfo(), + javaInfo())); } private ResponseFieldsSnippet gitInfo() { @@ -100,6 +102,35 @@ class InfoEndpointDocumentationTests extends MockMvcEndpointDocumentationTests { .type(JsonFieldType.NUMBER)); } + private ResponseFieldsSnippet javaInfo() { + return responseFields(beneathPath("java"), + fieldWithPath("version").description("Java version, if available.") + .type(JsonFieldType.STRING) + .optional(), + fieldWithPath("vendor").description("Vendor details."), + fieldWithPath("vendor.name").description("Vendor name, if available.") + .type(JsonFieldType.STRING) + .optional(), + fieldWithPath("vendor.version").description("Vendor version, if available.") + .type(JsonFieldType.STRING) + .optional(), + fieldWithPath("runtime").description("Runtime details."), + fieldWithPath("runtime.name").description("Runtime name, if available.") + .type(JsonFieldType.STRING) + .optional(), + fieldWithPath("runtime.version").description("Runtime version, if available.") + .type(JsonFieldType.STRING) + .optional(), + fieldWithPath("jvm").description("JVM details."), + fieldWithPath("jvm.name").description("JVM name, if available.").type(JsonFieldType.STRING).optional(), + fieldWithPath("jvm.vendor").description("JVM vendor, if available.") + .type(JsonFieldType.STRING) + .optional(), + fieldWithPath("jvm.version").description("JVM version, if available.") + .type(JsonFieldType.STRING) + .optional()); + } + @Configuration(proxyBeanMethods = false) static class TestConfiguration { @@ -139,6 +170,11 @@ class InfoEndpointDocumentationTests extends MockMvcEndpointDocumentationTests { return new ProcessInfoContributor(); } + @Bean + JavaInfoContributor javaInfoContributor() { + return new JavaInfoContributor(); + } + } }