]> git.basschouten.com Git - openhab-addons.git/commitdiff
[verisure] Avoid updates duplication after communication errors (#13652)
authorlolodomo <lg.hc@free.fr>
Sat, 5 Nov 2022 13:42:01 +0000 (14:42 +0100)
committerGitHub <noreply@github.com>
Sat, 5 Nov 2022 13:42:01 +0000 (14:42 +0100)
Avoid registering several times the same device status listener.
It is called by the thing handler each time the bridge status changed to ONLINE.

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.verisure/src/main/java/org/openhab/binding/verisure/internal/VerisureSession.java

index 1b313c0ac0b1456dd4bdf9bae79675833049f09f..712d4c773545cf5a868fa7bff58b2d1a2c070197 100644 (file)
@@ -27,8 +27,8 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
 
@@ -82,7 +82,7 @@ public class VerisureSession {
     private final Map<String, VerisureThingHandler<?>> verisureHandlers = new ConcurrentHashMap<>();
     private final Logger logger = LoggerFactory.getLogger(VerisureSession.class);
     private final Gson gson = new Gson();
-    private final List<DeviceStatusListener<VerisureThingDTO>> deviceStatusListeners = new CopyOnWriteArrayList<>();
+    private final Set<DeviceStatusListener<VerisureThingDTO>> deviceStatusListeners = ConcurrentHashMap.newKeySet();
     private final Map<BigDecimal, VerisureInstallation> verisureInstallations = new ConcurrentHashMap<>();
     private static final List<String> APISERVERLIST = Arrays.asList("https://m-api01.verisure.com",
             "https://m-api02.verisure.com");