]> git.basschouten.com Git - openhab-addons.git/commitdiff
[orbitbhyve] Handle null location attribute in devices json (#16525)
authorMark Hilbush <mark@hilbush.com>
Sat, 16 Mar 2024 12:46:55 +0000 (08:46 -0400)
committerGitHub <noreply@github.com>
Sat, 16 Mar 2024 12:46:55 +0000 (13:46 +0100)
* Handle null location in devices json

---------

Signed-off-by: Mark Hilbush <mark@hilbush.com>
bundles/org.openhab.binding.orbitbhyve/src/main/java/org/openhab/binding/orbitbhyve/internal/handler/OrbitBhyveBridgeHandler.java
bundles/org.openhab.binding.orbitbhyve/src/main/java/org/openhab/binding/orbitbhyve/internal/model/OrbitBhyveDevice.java

index 1ff85838965dac723871d33277b8ad619c1e8590..26ae2389d4377a70d3ee22d4c288a06d4e246e4a 100644 (file)
@@ -64,6 +64,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
 
 /**
  * The {@link OrbitBhyveBridgeHandler} is responsible for handling commands, which are
@@ -210,6 +211,9 @@ public class OrbitBhyveBridgeHandler extends ConfigStatusBridgeHandler {
                 updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
                         "Get devices returned response status: " + response.getStatus());
             }
+        } catch (JsonSyntaxException e) {
+            logger.debug("Exception parsing devices json: {}", e.getMessage(), e);
+            updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, "Error parsing devices json");
         } catch (TimeoutException | ExecutionException e) {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, "Error during getting devices");
         } catch (InterruptedException e) {
@@ -237,6 +241,9 @@ public class OrbitBhyveBridgeHandler extends ConfigStatusBridgeHandler {
                 updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
                         "Returned status: " + response.getStatus());
             }
+        } catch (JsonSyntaxException e) {
+            logger.debug("Exception parsing device json: {}", e.getMessage(), e);
+            updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, "Error parsing device json");
         } catch (TimeoutException | ExecutionException e) {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
                     "Error during getting device info: " + deviceId);
index 43acf3f9558b98748172faef9c6a7d6c685ed584..5fb2a8a50bc46addf59b11c7db382af18e8f9031 100644 (file)
@@ -16,7 +16,9 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 
+import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.annotations.SerializedName;
 
@@ -52,7 +54,8 @@ public class OrbitBhyveDevice {
     @SerializedName("last_connected_at")
     String lastConnectedAt = "";
 
-    JsonObject location = new JsonObject();
+    @Nullable
+    JsonElement location = null;
 
     @SerializedName("suggested_start_time")
     String suggestedStartTime = "";