diff --git a/sdks/java/src/main/java/org/byteveda/taskito/dashboard/api/OpsHandlers.java b/sdks/java/src/main/java/org/byteveda/taskito/dashboard/api/OpsHandlers.java index c6eb44e4..8a35fb13 100644 --- a/sdks/java/src/main/java/org/byteveda/taskito/dashboard/api/OpsHandlers.java +++ b/sdks/java/src/main/java/org/byteveda/taskito/dashboard/api/OpsHandlers.java @@ -1,6 +1,7 @@ package org.byteveda.taskito.dashboard.api; import java.util.ArrayList; +import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; @@ -8,6 +9,7 @@ import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; +import java.util.function.BinaryOperator; import java.util.stream.Collectors; import org.byteveda.taskito.Taskito; import org.byteveda.taskito.dashboard.support.Http; @@ -79,7 +81,10 @@ public Object resources() { advertised.addAll(Json.parseStringList(worker.resources)); Map health = Json.parseMap(worker.resourceHealth); if (health != null) { - health.forEach((name, value) -> reported.merge(name, severity(String.valueOf(value)), Math::max)); + // BinaryOperator.maxBy keeps the merge on boxed Integers — Math::max + // would funnel both arguments through an unchecked Integer->int unboxing. + health.forEach((name, value) -> reported.merge( + name, severity(String.valueOf(value)), BinaryOperator.maxBy(Comparator.naturalOrder()))); } } Set all = new TreeSet<>(advertised);