]> git.basschouten.com Git - openhab-addons.git/commitdiff
Fix NullPointerException (#16356)
authorJacob Laursen <jacob-github@vindvejr.dk>
Sun, 4 Feb 2024 11:06:14 +0000 (12:06 +0100)
committerGitHub <noreply@github.com>
Sun, 4 Feb 2024 11:06:14 +0000 (12:06 +0100)
Resolves #16180

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.binding.hue/src/main/java/org/openhab/binding/hue/internal/handler/HueLightHandler.java

index 232cf8adee7c960c7e0fa3be6c9450d03ee2608f..7ebb6863b3c54c3f6c7d8d5fd36e3ac398dc19ec 100644 (file)
@@ -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