]> git.basschouten.com Git - openhab-addons.git/commitdiff
[hdpowerview] Fix SAT warnings (#12032)
authorJacob Laursen <jacob-github@vindvejr.dk>
Fri, 14 Jan 2022 18:35:56 +0000 (19:35 +0100)
committerGitHub <noreply@github.com>
Fri, 14 Jan 2022 18:35:56 +0000 (19:35 +0100)
* Fix SAT warnings about missing @NonNullByDefault.
* Move part of firmware JSON response validation to HDPowerViewWebTargets.

Signed-off-by: Jacob Laursen <jacob-github@vindvejr.dk>
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/HDPowerViewWebTargets.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/Firmware.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/FirmwareVersion.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/FirmwareVersions.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/api/responses/Survey.java
bundles/org.openhab.binding.hdpowerview/src/main/java/org/openhab/binding/hdpowerview/internal/handler/HDPowerViewHubHandler.java

index e7d47b8de33cccd2d8b1461c1041563cc4f16c17..d7b3c1eaa81ca301283be003a647e62686677299 100644 (file)
@@ -29,6 +29,7 @@ import org.openhab.binding.hdpowerview.internal.api.ShadePosition;
 import org.openhab.binding.hdpowerview.internal.api.requests.ShadeMove;
 import org.openhab.binding.hdpowerview.internal.api.requests.ShadeStop;
 import org.openhab.binding.hdpowerview.internal.api.responses.FirmwareVersion;
+import org.openhab.binding.hdpowerview.internal.api.responses.FirmwareVersions;
 import org.openhab.binding.hdpowerview.internal.api.responses.SceneCollections;
 import org.openhab.binding.hdpowerview.internal.api.responses.Scenes;
 import org.openhab.binding.hdpowerview.internal.api.responses.ScheduledEvents;
@@ -130,15 +131,23 @@ public class HDPowerViewWebTargets {
     /**
      * Fetches a JSON package with firmware information for the hub.
      *
-     * @return FirmwareVersion class instance
+     * @return FirmwareVersions class instance
      * @throws JsonParseException if there is a JSON parsing error
      * @throws HubProcessingException if there is any processing error
      * @throws HubMaintenanceException if the hub is down for maintenance
      */
-    public @Nullable FirmwareVersion getFirmwareVersion()
+    public FirmwareVersions getFirmwareVersions()
             throws JsonParseException, HubProcessingException, HubMaintenanceException {
         String json = invoke(HttpMethod.GET, firmwareVersion, null, null);
-        return gson.fromJson(json, FirmwareVersion.class);
+        FirmwareVersion firmwareVersion = gson.fromJson(json, FirmwareVersion.class);
+        if (firmwareVersion == null) {
+            throw new JsonParseException("Missing firmware response");
+        }
+        FirmwareVersions firmwareVersions = firmwareVersion.firmware;
+        if (firmwareVersions == null) {
+            throw new JsonParseException("Missing 'firmware' element");
+        }
+        return firmwareVersions;
     }
 
     /**
index 6b738663df95b6b023943b81393ede399e03593c..fd627c8b9b14628ee8550d424c10501f72d0c967 100644 (file)
  */
 package org.openhab.binding.hdpowerview.internal.api;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
 /**
  * Firmware version information for HD PowerView components
  *
  * @author Jacob Laursen - Initial contribution
  */
+@NonNullByDefault
 public class Firmware {
+    @Nullable
     public String name;
     public int revision;
     public int subRevision;
index d8bbedcf986a6be54c2b06981102f62b206a7d58..ecbb39ccdf4c04b9f18eb33965891e31283580de 100644 (file)
  */
 package org.openhab.binding.hdpowerview.internal.api.responses;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
 /**
  * Firmware information for an HD PowerView hub
  *
  * @author Jacob Laursen - Initial contribution
  */
+@NonNullByDefault
 public class FirmwareVersion {
+    @Nullable
     public FirmwareVersions firmware;
 }
index 2d67bf004ff9b4efb17d7bc3f0ca47492ff4d48d..0e50e3d8f4bd5844d8f30e9e156032811bf0e117 100644 (file)
@@ -12,6 +12,8 @@
  */
 package org.openhab.binding.hdpowerview.internal.api.responses;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.binding.hdpowerview.internal.api.Firmware;
 
 /**
@@ -19,7 +21,10 @@ import org.openhab.binding.hdpowerview.internal.api.Firmware;
  *
  * @author Jacob Laursen - Initial contribution
  */
+@NonNullByDefault
 public class FirmwareVersions {
+    @Nullable
     public Firmware mainProcessor;
+    @Nullable
     public Firmware radio;
 }
index b0fb94af7a6cd9d493d6159cf98eae51b2b5c1fc..636f8b4c9a0c9684f1b4a5514cb6a26e841423ed 100644 (file)
@@ -15,6 +15,9 @@ package org.openhab.binding.hdpowerview.internal.api.responses;
 import java.util.List;
 import java.util.StringJoiner;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
+
 import com.google.gson.annotations.SerializedName;
 
 /**
@@ -22,9 +25,11 @@ import com.google.gson.annotations.SerializedName;
  *
  * @author Jacob Laursen - Initial contribution
  */
+@NonNullByDefault
 public class Survey {
     @SerializedName("shade_id")
     public int shadeId;
+    @Nullable
     @SerializedName("survey")
     public List<SurveyData> surveyData;
 
@@ -41,6 +46,7 @@ public class Survey {
 
     @Override
     public String toString() {
+        List<SurveyData> surveyData = this.surveyData;
         if (surveyData == null) {
             return "{}";
         }
index 29155cd047ffad5469dbbc270cb509bfbf20e015..464cc23007905599eeaa94d517aa8f7f296e5b85 100644 (file)
@@ -37,7 +37,6 @@ import org.openhab.binding.hdpowerview.internal.HDPowerViewWebTargets;
 import org.openhab.binding.hdpowerview.internal.HubMaintenanceException;
 import org.openhab.binding.hdpowerview.internal.HubProcessingException;
 import org.openhab.binding.hdpowerview.internal.api.Firmware;
-import org.openhab.binding.hdpowerview.internal.api.responses.FirmwareVersion;
 import org.openhab.binding.hdpowerview.internal.api.responses.FirmwareVersions;
 import org.openhab.binding.hdpowerview.internal.api.responses.SceneCollections;
 import org.openhab.binding.hdpowerview.internal.api.responses.SceneCollections.SceneCollection;
@@ -286,24 +285,20 @@ public class HDPowerViewHubHandler extends BaseBridgeHandler {
         if (webTargets == null) {
             throw new ProcessingException("Web targets not initialized");
         }
-        FirmwareVersion firmwareVersion = webTargets.getFirmwareVersion();
-        if (firmwareVersion == null || firmwareVersion.firmware == null) {
-            logger.warn("Unable to get firmware version.");
-            return;
-        }
-        this.firmwareVersions = firmwareVersion.firmware;
-        Firmware mainProcessor = firmwareVersion.firmware.mainProcessor;
+        FirmwareVersions firmwareVersions = webTargets.getFirmwareVersions();
+        Firmware mainProcessor = firmwareVersions.mainProcessor;
         if (mainProcessor == null) {
             logger.warn("Main processor firmware version missing in response.");
             return;
         }
         logger.debug("Main processor firmware version received: {}, {}", mainProcessor.name, mainProcessor.toString());
         Map<String, String> properties = editProperties();
-        if (mainProcessor.name != null) {
-            properties.put(HDPowerViewBindingConstants.PROPERTY_FIRMWARE_NAME, mainProcessor.name);
+        String mainProcessorName = mainProcessor.name;
+        if (mainProcessorName != null) {
+            properties.put(HDPowerViewBindingConstants.PROPERTY_FIRMWARE_NAME, mainProcessorName);
         }
         properties.put(Thing.PROPERTY_FIRMWARE_VERSION, mainProcessor.toString());
-        Firmware radio = firmwareVersion.firmware.radio;
+        Firmware radio = firmwareVersions.radio;
         if (radio != null) {
             logger.debug("Radio firmware version received: {}", radio.toString());
             properties.put(HDPowerViewBindingConstants.PROPERTY_RADIO_FIRMWARE_VERSION, radio.toString());