diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/AbstractHealthAggregator.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/AbstractHealthAggregator.java index 82e799bbc9dd..8b77fb869fa1 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/AbstractHealthAggregator.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/AbstractHealthAggregator.java @@ -17,7 +17,6 @@ package org.springframework.boot.actuate.health; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -26,6 +25,7 @@ * aggregating the {@link Status} instances and not deal with contextual details etc. * * @author Christian Dupuis + * @author Vedran Pavic * @since 1.1.0 */ public abstract class AbstractHealthAggregator implements HealthAggregator { @@ -33,12 +33,11 @@ public abstract class AbstractHealthAggregator implements HealthAggregator { @Override public final Health aggregate(Map healths) { List statusCandidates = new ArrayList(); - Map details = new LinkedHashMap(); for (Map.Entry entry : healths.entrySet()) { - details.put(entry.getKey(), entry.getValue()); statusCandidates.add(entry.getValue().getStatus()); } - return new Health.Builder(aggregateStatus(statusCandidates), details).build(); + return new Health.Builder( + aggregateStatus(statusCandidates), aggregateDetails(healths)).build(); } /** @@ -49,4 +48,12 @@ public final Health aggregate(Map healths) { */ protected abstract Status aggregateStatus(List candidates); + /** + * Return the map of 'aggregate' details that should be used from the specified + * healths. + * @param healths the health instances to aggregate + * @return a map of details + */ + protected abstract Map aggregateDetails(Map healths); + } diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/OrderedHealthAggregator.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/OrderedHealthAggregator.java index bebf0c544598..c73041adbbde 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/OrderedHealthAggregator.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/OrderedHealthAggregator.java @@ -20,7 +20,9 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import org.springframework.util.Assert; @@ -32,6 +34,7 @@ * can be set by calling {@link #setStatusOrder(List)}. * * @author Christian Dupuis + * @author Vedran Pavic * @since 1.1.0 */ public class OrderedHealthAggregator extends AbstractHealthAggregator { @@ -84,6 +87,11 @@ protected Status aggregateStatus(List candidates) { return filteredCandidates.get(0); } + @Override + protected Map aggregateDetails(Map healths) { + return new LinkedHashMap(healths); + } + /** * {@link Comparator} used to order {@link Status}. */