]> git.basschouten.com Git - openhab-addons.git/commitdiff
[homekit] fix potential null pointer exceptions (#13122)
authoreugen <freiter@gmail.com>
Wed, 13 Jul 2022 15:01:02 +0000 (17:01 +0200)
committerGitHub <noreply@github.com>
Wed, 13 Jul 2022 15:01:02 +0000 (17:01 +0200)
* fix potential null pointer exceptions
* use contains key

Signed-off-by: Eugen Freiter <freiter@gmx.de>
bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitImpl.java
bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/accessories/HomekitAccessoryFactory.java

index 7fa41890faeb232a27cf34d5bf14b37bab1d562c..563c6a3f486a703fef341efea62b9e4aa9c5a66e 100644 (file)
@@ -148,6 +148,8 @@ public class HomekitImpl implements Homekit, NetworkAddressChangeListener {
         try {
             HomekitSettings oldSettings = settings;
             settings = processConfig(config);
+            if ((oldSettings == null) || (settings == null))
+                return;
             changeListener.updateSettings(settings);
             if (!oldSettings.networkInterface.equals(settings.networkInterface) || oldSettings.port != settings.port
                     || oldSettings.useOHmDNS != settings.useOHmDNS) {
index 7cd25e2ee00f30c7cce664268ceeb4664850d194..a9d1b0d350728d76c0dcdf34871206f1d2ec5cca 100644 (file)
@@ -142,16 +142,17 @@ public class HomekitAccessoryFactory {
     };
 
     private static List<HomekitCharacteristicType> getRequiredCharacteristics(HomekitTaggedItem taggedItem) {
+        final List<HomekitCharacteristicType> characteristics = new ArrayList<>();
+        if (MANDATORY_CHARACTERISTICS.containsKey(taggedItem.getAccessoryType())) {
+            characteristics.addAll(Arrays.asList(MANDATORY_CHARACTERISTICS.get(taggedItem.getAccessoryType())));
+        }
         if (taggedItem.getAccessoryType() == BATTERY) {
             final String isChargeable = taggedItem.getConfiguration(HomekitBatteryImpl.BATTERY_TYPE, "false");
             if ("true".equalsIgnoreCase(isChargeable) || "yes".equalsIgnoreCase(isChargeable)) {
-                final List<HomekitCharacteristicType> characteristics = new ArrayList<>();
-                characteristics.addAll(Arrays.asList(MANDATORY_CHARACTERISTICS.get(taggedItem.getAccessoryType())));
                 characteristics.add(BATTERY_CHARGING_STATE);
-                return characteristics;
             }
         }
-        return Arrays.asList(MANDATORY_CHARACTERISTICS.get(taggedItem.getAccessoryType()));
+        return characteristics;
     }
 
     /**