From 021c45bd4cba76701cc69fc2eef9a776c5ed1293 Mon Sep 17 00:00:00 2001 From: Anders Alfredsson <30875102+pacive@users.noreply.github.com> Date: Sun, 22 Aug 2021 11:53:11 +0200 Subject: [PATCH] Fix IndexOutOfBoundsException in aggregator function (#11113) Signed-off-by: Anders Alfredsson Signed-off-by: Thomas --- bundles/org.openhab.binding.smhi/README.md | 1 + .../org/openhab/binding/smhi/internal/ForecastAggregator.java | 3 +++ .../java/org/openhab/binding/smhi/internal/SmhiHandler.java | 1 + 3 files changed, 5 insertions(+) diff --git a/bundles/org.openhab.binding.smhi/README.md b/bundles/org.openhab.binding.smhi/README.md index f98fc486a2c9d..88184356604c0 100644 --- a/bundles/org.openhab.binding.smhi/README.md +++ b/bundles/org.openhab.binding.smhi/README.md @@ -34,6 +34,7 @@ The complete channel identifier is the channel group id (`hour_` or `day or the number of hours/days from now) + the channel id, concatenated with a `#`. Examples: + * Temperature for the current hour: `hour_0#t` * Total precipitation 3 days from now: `day_3#ptotal` diff --git a/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/ForecastAggregator.java b/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/ForecastAggregator.java index 1d1c1079c02b6..d2c4ea55ac228 100644 --- a/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/ForecastAggregator.java +++ b/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/ForecastAggregator.java @@ -64,6 +64,9 @@ public static Optional min(TimeSeries timeSeries, int dayOffset, Str */ public static Optional total(TimeSeries timeSeries, int dayOffset, String parameter) { List dayForecasts = timeSeries.getDay(dayOffset); + if (dayForecasts.size() == 1) { + return dayForecasts.get(0).getParameter(parameter); + } List values = new ArrayList<>(); for (int i = 0; i < dayForecasts.size(); i++) { Forecast current = dayForecasts.get(i); diff --git a/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/SmhiHandler.java b/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/SmhiHandler.java index 89af596cea059..c037fe497937e 100644 --- a/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/SmhiHandler.java +++ b/bundles/org.openhab.binding.smhi/src/main/java/org/openhab/binding/smhi/internal/SmhiHandler.java @@ -254,6 +254,7 @@ private void waitForForecast() { } catch (RuntimeException e) { logger.warn("Unexpected exception occurred, please report to the developers: {}: {}", e.getClass(), e.getMessage()); + logger.debug("Details: ", e); } }