]> git.basschouten.com Git - openhab-addons.git/commitdiff
[tradfri] fix null pointer exception when sending command to a device that is offline...
authorrobnielsen <rob.nielsen@yahoo.com>
Sat, 26 Feb 2022 15:10:59 +0000 (09:10 -0600)
committerGitHub <noreply@github.com>
Sat, 26 Feb 2022 15:10:59 +0000 (16:10 +0100)
* [tradfri] fix null pointer exception when sending command to thing that is offline
* [tradfri] changed coapClient from @NinNullByDefault({}) to @Nullable

Signed-off-by: Rob Nielsen <rob.nielsen@yahoo.com>
bundles/org.openhab.binding.tradfri/src/main/java/org/openhab/binding/tradfri/internal/handler/TradfriBlindHandler.java
bundles/org.openhab.binding.tradfri/src/main/java/org/openhab/binding/tradfri/internal/handler/TradfriControllerHandler.java
bundles/org.openhab.binding.tradfri/src/main/java/org/openhab/binding/tradfri/internal/handler/TradfriLightHandler.java
bundles/org.openhab.binding.tradfri/src/main/java/org/openhab/binding/tradfri/internal/handler/TradfriPlugHandler.java
bundles/org.openhab.binding.tradfri/src/main/java/org/openhab/binding/tradfri/internal/handler/TradfriSensorHandler.java
bundles/org.openhab.binding.tradfri/src/main/java/org/openhab/binding/tradfri/internal/handler/TradfriThingHandler.java

index 6b3bdf35ace73906511a5be08aeda67ebfb5312d..d6a2204b1411a04e705f6fffcb981b4ae0f5cc02 100644 (file)
@@ -15,6 +15,7 @@ package org.openhab.binding.tradfri.internal.handler;
 import static org.openhab.binding.tradfri.internal.TradfriBindingConstants.*;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.tradfri.internal.TradfriCoapClient;
 import org.openhab.binding.tradfri.internal.model.TradfriBlindData;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.OnOffType;
@@ -86,8 +87,13 @@ public class TradfriBlindHandler extends TradfriThingHandler {
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (active) {
             if (command instanceof RefreshType) {
-                logger.debug("Refreshing channel {}", channelUID);
-                coapClient.asyncGet(this);
+                TradfriCoapClient coapClient = this.coapClient;
+                if (coapClient != null) {
+                    logger.debug("Refreshing channel {}", channelUID);
+                    coapClient.asyncGet(this);
+                } else {
+                    logger.debug("coapClient is null!");
+                }
                 return;
             }
 
index 68f5aa27c159e9992045c260af40cc763ae079f8..72e56ae258508e504405071788586989996f58b8 100644 (file)
@@ -16,6 +16,7 @@ import static org.openhab.binding.tradfri.internal.TradfriBindingConstants.*;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.tradfri.internal.TradfriCoapClient;
 import org.openhab.binding.tradfri.internal.model.TradfriControllerData;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.OnOffType;
@@ -80,8 +81,13 @@ public class TradfriControllerHandler extends TradfriThingHandler {
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (active) {
             if (command instanceof RefreshType) {
-                logger.debug("Refreshing channel {}", channelUID);
-                coapClient.asyncGet(this);
+                TradfriCoapClient coapClient = this.coapClient;
+                if (coapClient != null) {
+                    logger.debug("Refreshing channel {}", channelUID);
+                    coapClient.asyncGet(this);
+                } else {
+                    logger.debug("coapClient is null!");
+                }
                 return;
             }
 
index 2be125bc95775acdbaaad487ccab18f5e5a554ef..545737936d0b85cf9ef8b8c230d4697a54066bda 100644 (file)
@@ -16,6 +16,7 @@ import static org.openhab.binding.tradfri.internal.TradfriBindingConstants.*;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.tradfri.internal.TradfriCoapClient;
 import org.openhab.binding.tradfri.internal.model.TradfriLightData;
 import org.openhab.core.library.types.HSBType;
 import org.openhab.core.library.types.IncreaseDecreaseType;
@@ -126,8 +127,13 @@ public class TradfriLightHandler extends TradfriThingHandler {
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (active) {
             if (command instanceof RefreshType) {
-                logger.debug("Refreshing channel {}", channelUID);
-                coapClient.asyncGet(this);
+                TradfriCoapClient coapClient = this.coapClient;
+                if (coapClient != null) {
+                    logger.debug("Refreshing channel {}", channelUID);
+                    coapClient.asyncGet(this);
+                } else {
+                    logger.debug("coapClient is null!");
+                }
                 return;
             }
 
index 52a15db2502f31399ec1e8dc7c24269c169e792a..8de4764f555b474fb89f6cc0ef5b47e52d8453fb 100644 (file)
@@ -15,6 +15,7 @@ package org.openhab.binding.tradfri.internal.handler;
 import static org.openhab.binding.tradfri.internal.TradfriBindingConstants.CHANNEL_POWER;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.tradfri.internal.TradfriCoapClient;
 import org.openhab.binding.tradfri.internal.model.TradfriPlugData;
 import org.openhab.core.library.types.OnOffType;
 import org.openhab.core.thing.ChannelUID;
@@ -62,8 +63,13 @@ public class TradfriPlugHandler extends TradfriThingHandler {
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (active) {
             if (command instanceof RefreshType) {
-                logger.debug("Refreshing channel {}", channelUID);
-                coapClient.asyncGet(this);
+                TradfriCoapClient coapClient = this.coapClient;
+                if (coapClient != null) {
+                    logger.debug("Refreshing channel {}", channelUID);
+                    coapClient.asyncGet(this);
+                } else {
+                    logger.debug("coapClient is null!");
+                }
                 return;
             }
 
index a94023698b5a0178f0b807a1e9d02bff98811159..f32093f2b7ee8b66c822a0265df3a0ca3f5fd443 100644 (file)
@@ -15,6 +15,7 @@ package org.openhab.binding.tradfri.internal.handler;
 import static org.openhab.binding.tradfri.internal.TradfriBindingConstants.*;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.openhab.binding.tradfri.internal.TradfriCoapClient;
 import org.openhab.binding.tradfri.internal.model.TradfriSensorData;
 import org.openhab.core.library.types.DecimalType;
 import org.openhab.core.library.types.OnOffType;
@@ -71,8 +72,13 @@ public class TradfriSensorHandler extends TradfriThingHandler {
     public void handleCommand(ChannelUID channelUID, Command command) {
         if (active) {
             if (command instanceof RefreshType) {
-                logger.debug("Refreshing channel {}", channelUID);
-                coapClient.asyncGet(this);
+                TradfriCoapClient coapClient = this.coapClient;
+                if (coapClient != null) {
+                    logger.debug("Refreshing channel {}", channelUID);
+                    coapClient.asyncGet(this);
+                } else {
+                    logger.debug("coapClient is null!");
+                }
                 return;
             }
 
index 7cd5515a47a17852f27900fcb55b4687586e5b19..520eae03872c0d7f70083c61a32a3d06881084ef 100644 (file)
@@ -51,7 +51,7 @@ public abstract class TradfriThingHandler extends BaseThingHandler implements Co
     // used to check whether we have already been disposed when receiving data asynchronously
     protected volatile boolean active;
 
-    protected @NonNullByDefault({}) TradfriCoapClient coapClient;
+    protected @Nullable TradfriCoapClient coapClient;
 
     private @Nullable CoapObserveRelation observeRelation;
 
@@ -135,8 +135,13 @@ public abstract class TradfriThingHandler extends BaseThingHandler implements Co
     }
 
     protected void set(String payload) {
-        logger.debug("Sending payload: {}", payload);
-        coapClient.asyncPut(payload, this, scheduler);
+        TradfriCoapClient coapClient = this.coapClient;
+        if (coapClient != null) {
+            logger.debug("Sending payload: {}", payload);
+            coapClient.asyncPut(payload, this, scheduler);
+        } else {
+            logger.debug("coapClient is null!");
+        }
     }
 
     protected void updateDeviceProperties(TradfriDeviceData state) {