]> git.basschouten.com Git - openhab-addons.git/commitdiff
[nanoleaf] Bugfix: Handle non-integer panel ids (#13951)
authorJørgen Austvik <jaustvik@acm.org>
Wed, 14 Dec 2022 19:15:47 +0000 (20:15 +0100)
committerGitHub <noreply@github.com>
Wed, 14 Dec 2022 19:15:47 +0000 (20:15 +0100)
Panel ids are sometimes returned as BigInteger

We haven't been able to understand why this happens somewhere and
somewhere not, but this is an sledgehammer attempt to fix it quickly
to unblock users, and then we will try to understand it later.

Discussions:
https://community.openhab.org/t/java-lang-classcastexception-class-java-math-bigdecimal-cannot-be-cast-to-class-java-lang-integer/142035/16
https://community.openhab.org/t/nanoleaf-binding-oh3-stabilization-update/116300/61

Signed-off-by: Jørgen Austvik <jaustvik@acm.org>
bundles/org.openhab.binding.nanoleaf/src/main/java/org/openhab/binding/nanoleaf/internal/handler/NanoleafPanelHandler.java

index e80545dd901e18694de5f09bc790e3be8fb6b01a..bef5bfb985ed2d744391243c6c57b2dd9647a33d 100644 (file)
@@ -286,7 +286,21 @@ public class NanoleafPanelHandler extends BaseThingHandler implements NanoleafPa
     }
 
     public Integer getPanelID() {
-        return (Integer) getThing().getConfiguration().get(CONFIG_PANEL_ID);
+        Object panelId = getThing().getConfiguration().get(CONFIG_PANEL_ID);
+        if (panelId instanceof Integer) {
+            return (Integer) panelId;
+        } else if (panelId instanceof Number) {
+            return ((Number) panelId).intValue();
+        } else {
+            // Fall back to parsing string representation of panel if it is not returning an integer
+            String stringPanelId = panelId.toString();
+            Integer parsedPanelId = Integer.getInteger(stringPanelId);
+            if (parsedPanelId == null) {
+                return 0;
+            } else {
+                return parsedPanelId;
+            }
+        }
     }
 
     private void setPanelColor(HSBType color) {