From 387ef90e099302734ccbfc0c0492f2c227e32e76 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Fri, 24 Sep 2021 15:33:14 -0700 Subject: [PATCH 1/7] Initial JavaInfoContributor --- .../actuate/info/JavaInfoContributor.java | 37 +++++++++++++++++++ .../info/JavaInfoContributorTests.java | 31 ++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java create mode 100644 spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java new file mode 100644 index 000000000000..36d007a053e2 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java @@ -0,0 +1,37 @@ +package org.springframework.boot.actuate.info; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +public class JavaInfoContributor implements InfoContributor { + private final Map javaInfo; + + public JavaInfoContributor() { + this.javaInfo = new LinkedHashMap<>(); + javaInfo.put("runtime", runtimeInfo()); + javaInfo.put("vm", vmInfo()); + javaInfo.put("vendor", System.getProperty("java.vendor")); + } + + @Override + public void contribute(Info.Builder builder) { + builder.withDetail("java", javaInfo); + } + + private Map runtimeInfo() { + Map runtimeInfo = new HashMap<>(); + runtimeInfo.put("name", System.getProperty("java.runtime.name")); + runtimeInfo.put("version", System.getProperty("java.runtime.version")); + + return runtimeInfo; + } + + private Map vmInfo() { + Map vmInfo = new HashMap<>(); + vmInfo.put("name", System.getProperty("java.vm.name")); + vmInfo.put("version", System.getProperty("java.vm.version")); + + return vmInfo; + } +} diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java new file mode 100644 index 000000000000..c21db2d98fae --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java @@ -0,0 +1,31 @@ +package org.springframework.boot.actuate.info; + +import java.util.LinkedHashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class JavaInfoContributorTests { + @Test + void javaInfoShouldBeAdded() { + JavaInfoContributor javaInfoContributor = new JavaInfoContributor(); + Info.Builder builder = new Info.Builder(); + javaInfoContributor.contribute(builder); + + @SuppressWarnings("unchecked") + Map javaDetails = (Map) builder.build().getDetails().get("java"); + assertThat(javaDetails.get("vendor")).isEqualTo(System.getProperty("java.vendor")); + + @SuppressWarnings("unchecked") + Map jreDetails = (Map) javaDetails.get("runtime"); + assertThat(jreDetails.get("name")).isEqualTo(System.getProperty("java.runtime.name")); + assertThat(jreDetails.get("version")).isEqualTo(System.getProperty("java.runtime.version")); + + @SuppressWarnings("unchecked") + Map jvmDetails = (Map) javaDetails.get("vm"); + assertThat(jvmDetails.get("name")).isEqualTo(System.getProperty("java.vm.name")); + assertThat(jvmDetails.get("version")).isEqualTo(System.getProperty("java.vm.version")); + } +} From 3c604ae4da9c9315a8a7e9d8f315bdddc0537eca Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Sat, 25 Sep 2021 23:06:40 -0700 Subject: [PATCH 2/7] Use real objects instead of Map + javadoc --- .../actuate/info/JavaInfoContributor.java | 37 --------------- .../boot/actuate/info/java/JavaInfo.java | 47 +++++++++++++++++++ .../info/java/JavaInfoContributor.java | 39 +++++++++++++++ .../boot/actuate/info/java/JreInfo.java | 41 ++++++++++++++++ .../boot/actuate/info/java/VmInfo.java | 40 ++++++++++++++++ .../boot/actuate/info/java/package-info.java | 20 ++++++++ .../info/JavaInfoContributorTests.java | 31 ------------ .../info/java/JavaInfoContributorTests.java | 46 ++++++++++++++++++ 8 files changed, 233 insertions(+), 68 deletions(-) delete mode 100644 spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java create mode 100644 spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java create mode 100644 spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java create mode 100644 spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java create mode 100644 spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java create mode 100644 spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/package-info.java delete mode 100644 spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java create mode 100644 spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java deleted file mode 100644 index 36d007a053e2..000000000000 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/JavaInfoContributor.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.springframework.boot.actuate.info; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -public class JavaInfoContributor implements InfoContributor { - private final Map javaInfo; - - public JavaInfoContributor() { - this.javaInfo = new LinkedHashMap<>(); - javaInfo.put("runtime", runtimeInfo()); - javaInfo.put("vm", vmInfo()); - javaInfo.put("vendor", System.getProperty("java.vendor")); - } - - @Override - public void contribute(Info.Builder builder) { - builder.withDetail("java", javaInfo); - } - - private Map runtimeInfo() { - Map runtimeInfo = new HashMap<>(); - runtimeInfo.put("name", System.getProperty("java.runtime.name")); - runtimeInfo.put("version", System.getProperty("java.runtime.version")); - - return runtimeInfo; - } - - private Map vmInfo() { - Map vmInfo = new HashMap<>(); - vmInfo.put("name", System.getProperty("java.vm.name")); - vmInfo.put("version", System.getProperty("java.vm.version")); - - return vmInfo; - } -} diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java new file mode 100644 index 000000000000..831d703ebd54 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java @@ -0,0 +1,47 @@ +/* + * Copyright 2021-2021 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.actuate.info.java; + +/** + * A simple DTO that holds information about the Java environment the application is running in. + * + * @author Jonatan Ivanov + * @since 2.6.0 + */ +public class JavaInfo { + private final String vendor; + private final JreInfo runtime; + private final VmInfo vm; + + public JavaInfo() { + this.vendor = System.getProperty("java.vendor"); + this.runtime = new JreInfo(); + this.vm = new VmInfo(); + } + + public String getVendor() { + return this.vendor; + } + + public JreInfo getRuntime() { + return this.runtime; + } + + public VmInfo getVm() { + return this.vm; + } +} \ No newline at end of file diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java new file mode 100644 index 000000000000..d4c668cd10dc --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java @@ -0,0 +1,39 @@ +/* + * Copyright 2021-2021 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.actuate.info.java; + +import org.springframework.boot.actuate.info.Info.Builder; +import org.springframework.boot.actuate.info.InfoContributor; + +/** + * An {@link InfoContributor} that exposes {@link JavaInfo}. + * + * @author Jonatan Ivanov + * @since 2.6.0 + */ +public class JavaInfoContributor implements InfoContributor { + private final JavaInfo javaInfo; + + public JavaInfoContributor() { + this.javaInfo = new JavaInfo(); + } + + @Override + public void contribute(Builder builder) { + builder.withDetail("java", this.javaInfo); + } +} diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java new file mode 100644 index 000000000000..08f32ca22c5b --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java @@ -0,0 +1,41 @@ +/* + * Copyright 2021-2021 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.actuate.info.java; + +/** + * A simple DTO that holds information about the JRE (Java Runtime Environment) the application is running in. + * + * @author Jonatan Ivanov + * @since 2.6.0 + */ +public class JreInfo { + private final String name; + private final String version; + + public JreInfo() { + this.name = System.getProperty("java.runtime.name"); + this.version = System.getProperty("java.runtime.version"); + } + + public String getName() { + return this.name; + } + + public String getVersion() { + return this.version; + } +} diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java new file mode 100644 index 000000000000..d4b8754d1c00 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java @@ -0,0 +1,40 @@ +/* + * Copyright 2021-2021 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.actuate.info.java; + +/** + * A simple DTO that holds information about the JVM (Java Virtual Machine) the application is running in. + * + * @author Jonatan Ivanov + * @since 2.6.0 + */ +public class VmInfo { + private final String name; + private final String version; + + public VmInfo() { + this.name = System.getProperty("java.vm.name"); + this.version = System.getProperty("java.vm.version"); + } + + public String getName() { + return this.name; + } + + public String getVersion() { + return this.version; + } +} \ No newline at end of file diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/package-info.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/package-info.java new file mode 100644 index 000000000000..3d53a37834d9 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/package-info.java @@ -0,0 +1,20 @@ +/* + * Copyright 2021-2021 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. + */ + +/** + * Classes for java info. + */ +package org.springframework.boot.actuate.info.java; diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java deleted file mode 100644 index c21db2d98fae..000000000000 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/JavaInfoContributorTests.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.springframework.boot.actuate.info; - -import java.util.LinkedHashMap; -import java.util.Map; - -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -class JavaInfoContributorTests { - @Test - void javaInfoShouldBeAdded() { - JavaInfoContributor javaInfoContributor = new JavaInfoContributor(); - Info.Builder builder = new Info.Builder(); - javaInfoContributor.contribute(builder); - - @SuppressWarnings("unchecked") - Map javaDetails = (Map) builder.build().getDetails().get("java"); - assertThat(javaDetails.get("vendor")).isEqualTo(System.getProperty("java.vendor")); - - @SuppressWarnings("unchecked") - Map jreDetails = (Map) javaDetails.get("runtime"); - assertThat(jreDetails.get("name")).isEqualTo(System.getProperty("java.runtime.name")); - assertThat(jreDetails.get("version")).isEqualTo(System.getProperty("java.runtime.version")); - - @SuppressWarnings("unchecked") - Map jvmDetails = (Map) javaDetails.get("vm"); - assertThat(jvmDetails.get("name")).isEqualTo(System.getProperty("java.vm.name")); - assertThat(jvmDetails.get("version")).isEqualTo(System.getProperty("java.vm.version")); - } -} diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java new file mode 100644 index 000000000000..7d2acd7da2f9 --- /dev/null +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java @@ -0,0 +1,46 @@ +/* + * Copyright 2021-2021 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.actuate.info.java; + +import org.junit.jupiter.api.Test; + +import org.springframework.boot.actuate.info.Info; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests for {@link JavaInfoContributor} + * + * @author Jonatan Ivanov + */ +class JavaInfoContributorTests { + @Test + void javaInfoShouldBeAdded() { + JavaInfoContributor javaInfoContributor = new JavaInfoContributor(); + Info.Builder builder = new Info.Builder(); + javaInfoContributor.contribute(builder); + + assertThat(builder.build().getDetails().get("java")).isInstanceOf(JavaInfo.class); + JavaInfo javaInfo = (JavaInfo) builder.build().getDetails().get("java"); + + assertThat(javaInfo.getVendor()).isEqualTo(System.getProperty("java.vendor")); + assertThat(javaInfo.getRuntime().getName()).isEqualTo(System.getProperty("java.runtime.name")); + assertThat(javaInfo.getRuntime().getVersion()).isEqualTo(System.getProperty("java.runtime.version")); + assertThat(javaInfo.getVm().getName()).isEqualTo(System.getProperty("java.vm.name")); + assertThat(javaInfo.getVm().getVersion()).isEqualTo(System.getProperty("java.vm.version")); + } +} From daad9e878dbd3b526c50c549d4e3beeb953eb1a0 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Sat, 25 Sep 2021 23:08:36 -0700 Subject: [PATCH 3/7] autoformatting --- .../springframework/boot/actuate/info/java/JavaInfo.java | 7 ++++++- .../boot/actuate/info/java/JavaInfoContributor.java | 2 ++ .../springframework/boot/actuate/info/java/JreInfo.java | 6 +++++- .../springframework/boot/actuate/info/java/VmInfo.java | 8 ++++++-- .../boot/actuate/info/java/JavaInfoContributorTests.java | 2 ++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java index 831d703ebd54..446f108b8bf3 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java @@ -17,14 +17,18 @@ package org.springframework.boot.actuate.info.java; /** - * A simple DTO that holds information about the Java environment the application is running in. + * A simple DTO that holds information about the Java environment the application is + * running in. * * @author Jonatan Ivanov * @since 2.6.0 */ public class JavaInfo { + private final String vendor; + private final JreInfo runtime; + private final VmInfo vm; public JavaInfo() { @@ -44,4 +48,5 @@ public JreInfo getRuntime() { public VmInfo getVm() { return this.vm; } + } \ No newline at end of file diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java index d4c668cd10dc..5c44d9380cbb 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfoContributor.java @@ -26,6 +26,7 @@ * @since 2.6.0 */ public class JavaInfoContributor implements InfoContributor { + private final JavaInfo javaInfo; public JavaInfoContributor() { @@ -36,4 +37,5 @@ public JavaInfoContributor() { public void contribute(Builder builder) { builder.withDetail("java", this.javaInfo); } + } diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java index 08f32ca22c5b..1f8dd8132090 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JreInfo.java @@ -17,13 +17,16 @@ package org.springframework.boot.actuate.info.java; /** - * A simple DTO that holds information about the JRE (Java Runtime Environment) the application is running in. + * A simple DTO that holds information about the JRE (Java Runtime Environment) the + * application is running in. * * @author Jonatan Ivanov * @since 2.6.0 */ public class JreInfo { + private final String name; + private final String version; public JreInfo() { @@ -38,4 +41,5 @@ public String getName() { public String getVersion() { return this.version; } + } diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java index d4b8754d1c00..ba7633d78506 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java @@ -16,13 +16,16 @@ package org.springframework.boot.actuate.info.java; /** - * A simple DTO that holds information about the JVM (Java Virtual Machine) the application is running in. + * A simple DTO that holds information about the JVM (Java Virtual Machine) the + * application is running in. * * @author Jonatan Ivanov * @since 2.6.0 */ -public class VmInfo { +public class VmInfo { + private final String name; + private final String version; public VmInfo() { @@ -37,4 +40,5 @@ public String getName() { public String getVersion() { return this.version; } + } \ No newline at end of file diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java index 7d2acd7da2f9..064c818afd53 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java @@ -28,6 +28,7 @@ * @author Jonatan Ivanov */ class JavaInfoContributorTests { + @Test void javaInfoShouldBeAdded() { JavaInfoContributor javaInfoContributor = new JavaInfoContributor(); @@ -43,4 +44,5 @@ void javaInfoShouldBeAdded() { assertThat(javaInfo.getVm().getName()).isEqualTo(System.getProperty("java.vm.name")); assertThat(javaInfo.getVm().getVersion()).isEqualTo(System.getProperty("java.vm.version")); } + } From a63939e662f88c3900a240746af14d9532fb28c0 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Sat, 25 Sep 2021 23:13:13 -0700 Subject: [PATCH 4/7] manual formatting --- .../org/springframework/boot/actuate/info/java/JavaInfo.java | 2 +- .../org/springframework/boot/actuate/info/java/VmInfo.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java index 446f108b8bf3..b40f35479b49 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java @@ -49,4 +49,4 @@ public VmInfo getVm() { return this.vm; } -} \ No newline at end of file +} diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java index ba7633d78506..a8b205f218f6 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.boot.actuate.info.java; /** @@ -41,4 +42,4 @@ public String getVersion() { return this.version; } -} \ No newline at end of file +} From 9d2cf9df8019f269c7e1562bdfe4968387b06b47 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Sun, 26 Sep 2021 00:05:31 -0700 Subject: [PATCH 5/7] Add java version and vm vendor --- .../springframework/boot/actuate/info/java/JavaInfo.java | 7 +++++++ .../org/springframework/boot/actuate/info/java/VmInfo.java | 7 +++++++ .../boot/actuate/info/java/JavaInfoContributorTests.java | 2 ++ 3 files changed, 16 insertions(+) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java index b40f35479b49..b9898f155ba5 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/JavaInfo.java @@ -27,12 +27,15 @@ public class JavaInfo { private final String vendor; + private final String version; + private final JreInfo runtime; private final VmInfo vm; public JavaInfo() { this.vendor = System.getProperty("java.vendor"); + this.version = System.getProperty("java.version"); this.runtime = new JreInfo(); this.vm = new VmInfo(); } @@ -41,6 +44,10 @@ public String getVendor() { return this.vendor; } + public String getVersion() { + return this.version; + } + public JreInfo getRuntime() { return this.runtime; } diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java index a8b205f218f6..76be01f4c37e 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/info/java/VmInfo.java @@ -27,10 +27,13 @@ public class VmInfo { private final String name; + private final String vendor; + private final String version; public VmInfo() { this.name = System.getProperty("java.vm.name"); + this.vendor = System.getProperty("java.vm.vendor"); this.version = System.getProperty("java.vm.version"); } @@ -38,6 +41,10 @@ public String getName() { return this.name; } + public String getVendor() { + return this.vendor; + } + public String getVersion() { return this.version; } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java index 064c818afd53..f17638817cb3 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/info/java/JavaInfoContributorTests.java @@ -39,9 +39,11 @@ void javaInfoShouldBeAdded() { JavaInfo javaInfo = (JavaInfo) builder.build().getDetails().get("java"); assertThat(javaInfo.getVendor()).isEqualTo(System.getProperty("java.vendor")); + assertThat(javaInfo.getVersion()).isEqualTo(System.getProperty("java.version")); assertThat(javaInfo.getRuntime().getName()).isEqualTo(System.getProperty("java.runtime.name")); assertThat(javaInfo.getRuntime().getVersion()).isEqualTo(System.getProperty("java.runtime.version")); assertThat(javaInfo.getVm().getName()).isEqualTo(System.getProperty("java.vm.name")); + assertThat(javaInfo.getVm().getVendor()).isEqualTo(System.getProperty("java.vm.vendor")); assertThat(javaInfo.getVm().getVersion()).isEqualTo(System.getProperty("java.vm.version")); } From 248c3f28da8a4efb5dee0fe3ce2ce136d0c1f673 Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Sun, 26 Sep 2021 14:26:14 -0700 Subject: [PATCH 6/7] Add autoconfig for JavInfoContributor --- .../InfoContributorAutoConfiguration.java | 9 +++++ ...InfoContributorAutoConfigurationTests.java | 38 ++++++++++++++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfiguration.java index 92ffca446b4e..f50f73f56cd7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfiguration.java @@ -20,6 +20,7 @@ import org.springframework.boot.actuate.info.EnvironmentInfoContributor; import org.springframework.boot.actuate.info.GitInfoContributor; import org.springframework.boot.actuate.info.InfoContributor; +import org.springframework.boot.actuate.info.java.JavaInfoContributor; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; @@ -40,6 +41,7 @@ * * @author Meang Akira Tanaka * @author Stephane Nicoll + * @author Jonatan Ivanov * @since 2.0.0 */ @Configuration(proxyBeanMethods = false) @@ -77,4 +79,11 @@ public InfoContributor buildInfoContributor(BuildProperties buildProperties) { return new BuildInfoContributor(buildProperties); } + @Bean + @ConditionalOnEnabledInfoContributor("java") + @Order(DEFAULT_ORDER) + public InfoContributor javaInfoContributor() { + return new JavaInfoContributor(); + } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java index efa37a54b0cd..c2072c4e4e7e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java @@ -23,9 +23,12 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.info.BuildInfoContributor; +import org.springframework.boot.actuate.info.EnvironmentInfoContributor; import org.springframework.boot.actuate.info.GitInfoContributor; import org.springframework.boot.actuate.info.Info; import org.springframework.boot.actuate.info.InfoContributor; +import org.springframework.boot.actuate.info.java.JavaInfo; +import org.springframework.boot.actuate.info.java.JavaInfoContributor; import org.springframework.boot.info.BuildProperties; import org.springframework.boot.info.GitProperties; import org.springframework.boot.test.util.TestPropertyValues; @@ -39,6 +42,7 @@ * Tests for {@link InfoContributorAutoConfiguration}. * * @author Stephane Nicoll + * @author Jonatan Ivanov */ class InfoContributorAutoConfigurationTests { @@ -55,7 +59,29 @@ void close() { void disableEnvContributor() { load("management.info.env.enabled:false"); Map beans = this.context.getBeansOfType(InfoContributor.class); - assertThat(beans).hasSize(0); + assertThat(beans) + .extractingFromEntries(Map.Entry::getValue) + .allSatisfy(infoContributor -> assertThat(infoContributor).isNotInstanceOf(EnvironmentInfoContributor.class)); + } + + @Test + void disableJavaContributor() { + load("management.info.java.enabled:false"); + Map beans = this.context.getBeansOfType(InfoContributor.class); + assertThat(beans) + .extractingFromEntries(Map.Entry::getValue) + .allSatisfy(infoContributor -> assertThat(infoContributor).isNotInstanceOf(JavaInfoContributor.class)); + } + + @Test + void defaultInfoContributorsEnabled() { + load(); + Map beans = this.context.getBeansOfType(InfoContributor.class); + assertThat(beans) + .hasSize(2) + .extractingFromEntries(Map.Entry::getValue) + .anySatisfy(infoContributor -> assertThat(infoContributor).isInstanceOf(EnvironmentInfoContributor.class)) + .anySatisfy(infoContributor -> assertThat(infoContributor).isInstanceOf(JavaInfoContributor.class)); } @Test @@ -129,6 +155,16 @@ void customBuildInfoContributor() { .isSameAs(this.context.getBean("customBuildInfoContributor")); } + @Test + void javaInfoContributor() { + load(); + Map beans = this.context.getBeansOfType(InfoContributor.class); + assertThat(beans).containsKeys("javaInfoContributor"); + Map content = invokeContributor(this.context.getBean("javaInfoContributor", InfoContributor.class)); + Object javaInfo = content.get("java"); + assertThat(javaInfo).isInstanceOf(JavaInfo.class); + } + private Map invokeContributor(InfoContributor contributor) { Info.Builder builder = new Info.Builder(); contributor.contribute(builder); From aff3173266ae956865a8390a90c6479c3127cb9d Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Sun, 26 Sep 2021 14:31:52 -0700 Subject: [PATCH 7/7] autoformatting + manual formatting for checkstyle --- ...InfoContributorAutoConfigurationTests.java | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java index c2072c4e4e7e..40b7390d4042 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/info/InfoContributorAutoConfigurationTests.java @@ -59,29 +59,26 @@ void close() { void disableEnvContributor() { load("management.info.env.enabled:false"); Map beans = this.context.getBeansOfType(InfoContributor.class); - assertThat(beans) - .extractingFromEntries(Map.Entry::getValue) - .allSatisfy(infoContributor -> assertThat(infoContributor).isNotInstanceOf(EnvironmentInfoContributor.class)); + assertThat(beans).extractingFromEntries(Map.Entry::getValue).allSatisfy( + (infoContributor) -> assertThat(infoContributor).isNotInstanceOf(EnvironmentInfoContributor.class)); } @Test void disableJavaContributor() { load("management.info.java.enabled:false"); Map beans = this.context.getBeansOfType(InfoContributor.class); - assertThat(beans) - .extractingFromEntries(Map.Entry::getValue) - .allSatisfy(infoContributor -> assertThat(infoContributor).isNotInstanceOf(JavaInfoContributor.class)); + assertThat(beans).extractingFromEntries(Map.Entry::getValue).allSatisfy( + (infoContributor) -> assertThat(infoContributor).isNotInstanceOf(JavaInfoContributor.class)); } @Test void defaultInfoContributorsEnabled() { load(); Map beans = this.context.getBeansOfType(InfoContributor.class); - assertThat(beans) - .hasSize(2) - .extractingFromEntries(Map.Entry::getValue) - .anySatisfy(infoContributor -> assertThat(infoContributor).isInstanceOf(EnvironmentInfoContributor.class)) - .anySatisfy(infoContributor -> assertThat(infoContributor).isInstanceOf(JavaInfoContributor.class)); + assertThat(beans).hasSize(2).extractingFromEntries(Map.Entry::getValue) + .anySatisfy( + (infoContributor) -> assertThat(infoContributor).isInstanceOf(EnvironmentInfoContributor.class)) + .anySatisfy((infoContributor) -> assertThat(infoContributor).isInstanceOf(JavaInfoContributor.class)); } @Test @@ -160,7 +157,8 @@ void javaInfoContributor() { load(); Map beans = this.context.getBeansOfType(InfoContributor.class); assertThat(beans).containsKeys("javaInfoContributor"); - Map content = invokeContributor(this.context.getBean("javaInfoContributor", InfoContributor.class)); + Map content = invokeContributor( + this.context.getBean("javaInfoContributor", InfoContributor.class)); Object javaInfo = content.get("java"); assertThat(javaInfo).isInstanceOf(JavaInfo.class); }