[nanoleaf] Bugfix: Handle non-integer panel ids (#13951)

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>
This commit is contained in:
Jørgen Austvik 2022-12-14 20:15:47 +01:00 committed by GitHub
parent d4ec220925
commit 79060f3c8f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -286,7 +286,21 @@ public class NanoleafPanelHandler extends BaseThingHandler implements NanoleafPa
} }
public Integer getPanelID() { 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) { private void setPanelColor(HSBType color) {