From a94908c305e5a095e547057cb9d9560c1497d7cc Mon Sep 17 00:00:00 2001 From: joerg1985 <16140691+joerg1985@users.noreply.github.com> Date: Sat, 15 Feb 2025 22:15:19 +0100 Subject: [PATCH] Add logging to the StartLevelService (#4577) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jörg Sautter --- .../openhab/core/service/StartLevelService.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/bundles/org.openhab.core/src/main/java/org/openhab/core/service/StartLevelService.java b/bundles/org.openhab.core/src/main/java/org/openhab/core/service/StartLevelService.java index ca74539adb..fa5203e637 100644 --- a/bundles/org.openhab.core/src/main/java/org/openhab/core/service/StartLevelService.java +++ b/bundles/org.openhab.core/src/main/java/org/openhab/core/service/StartLevelService.java @@ -13,12 +13,14 @@ package org.openhab.core.service; import java.util.AbstractMap; +import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.SequencedMap; import java.util.Set; -import java.util.TreeSet; +import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -98,7 +100,7 @@ public class StartLevelService { private int openHABStartLevel = 0; - private Map> startlevels = Map.of(); + private SequencedMap> startlevels = Collections.emptySortedMap(); @Activate public StartLevelService(BundleContext bundleContext, @Reference ReadyService readyService, @@ -116,9 +118,11 @@ public class StartLevelService { handleOSGiStartlevel(); if (openHABStartLevel >= 10) { - for (Integer level : new TreeSet<>(startlevels.keySet())) { + for (Entry> entry : startlevels.entrySet()) { + Integer level = entry.getKey(); if (openHABStartLevel < level) { - boolean reached = isStartLevelReached(startlevels.get(level)); + Set markerSet = entry.getValue(); + boolean reached = isStartLevelReached(level, markerSet); if (reached) { setStartLevel(level); } else { @@ -142,12 +146,13 @@ public class StartLevelService { return openHABStartLevel; } - private boolean isStartLevelReached(@Nullable Set markerSet) { + private boolean isStartLevelReached(Integer level, @Nullable Set markerSet) { if (markerSet == null) { return true; } for (ReadyMarker m : markerSet) { if (!markers.contains(m)) { + logger.debug("Missing marker {} for start level {}", m, level); return false; } } @@ -173,7 +178,7 @@ public class StartLevelService { trackers.clear(); // set up trackers and markers - startlevels = parseConfig(configuration); + startlevels = Collections.unmodifiableSequencedMap(new TreeMap<>(parseConfig(configuration))); startlevels.keySet() .forEach(sl -> slmarker.put(sl, new ReadyMarker(STARTLEVEL_MARKER_TYPE, Integer.toString(sl)))); slmarker.put(STARTLEVEL_COMPLETE,