From 509f7acf64e584a76f64e5239be88e1d8e1a9276 Mon Sep 17 00:00:00 2001 From: Jacob Laursen Date: Sun, 4 Feb 2024 12:06:14 +0100 Subject: [PATCH] Fix NullPointerException (#16356) Resolves #16180 Signed-off-by: Jacob Laursen Signed-off-by: Ciprian Pascu --- .../hue/internal/handler/HueLightHandler.java | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueLightHandler.java b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueLightHandler.java index 232cf8adee7..7ebb6863b3c 100644 --- a/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueLightHandler.java +++ b/bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueLightHandler.java @@ -26,6 +26,7 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.hue.internal.api.dto.clip1.Capabilities; import org.openhab.binding.hue.internal.api.dto.clip1.ColorTemperature; +import org.openhab.binding.hue.internal.api.dto.clip1.Control; import org.openhab.binding.hue.internal.api.dto.clip1.FullLight; import org.openhab.binding.hue.internal.api.dto.clip1.State; import org.openhab.binding.hue.internal.api.dto.clip1.StateUpdate; @@ -191,26 +192,34 @@ public class HueLightHandler extends BaseThingHandler implements HueLightActions } private void initializeCapabilities(@Nullable FullLight fullLight) { - if (!capabilitiesInitializedSuccessfully && fullLight != null) { - Capabilities capabilities = fullLight.capabilities; - if (capabilities != null) { - ColorTemperature ct = capabilities.control.ct; - if (ct != null) { - colorTemperatureCapabilties = ct; - - // minimum and maximum are inverted due to mired/Kelvin conversion! - StateDescriptionFragment stateDescriptionFragment = StateDescriptionFragmentBuilder.create() - .withMinimum(new BigDecimal(LightStateConverter.miredToKelvin(ct.max))) // - .withMaximum(new BigDecimal(LightStateConverter.miredToKelvin(ct.min))) // - .withStep(new BigDecimal(100)) // - .withPattern("%.0f K") // - .build(); - stateDescriptionProvider.setStateDescriptionFragment( - new ChannelUID(thing.getUID(), CHANNEL_COLORTEMPERATURE_ABS), stateDescriptionFragment); - } - } - capabilitiesInitializedSuccessfully = true; + if (capabilitiesInitializedSuccessfully || fullLight == null) { + return; } + Capabilities capabilities = fullLight.capabilities; + if (capabilities == null) { + return; + } + Control control = capabilities.control; + if (control == null) { + return; + } + ColorTemperature ct = control.ct; + if (ct == null) { + return; + } + colorTemperatureCapabilties = ct; + + // minimum and maximum are inverted due to mired/Kelvin conversion! + StateDescriptionFragment stateDescriptionFragment = StateDescriptionFragmentBuilder.create() + .withMinimum(new BigDecimal(LightStateConverter.miredToKelvin(ct.max))) // + .withMaximum(new BigDecimal(LightStateConverter.miredToKelvin(ct.min))) // + .withStep(new BigDecimal(100)) // + .withPattern("%.0f K") // + .build(); + stateDescriptionProvider.setStateDescriptionFragment( + new ChannelUID(thing.getUID(), CHANNEL_COLORTEMPERATURE_ABS), stateDescriptionFragment); + + capabilitiesInitializedSuccessfully = true; } @Override