From: lolodomo Date: Sat, 5 Nov 2022 13:42:01 +0000 (+0100) Subject: [verisure] Avoid updates duplication after communication errors (#13652) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=c81790cebf3f9675659648b7a12ba2926f592f15;p=openhab-addons.git [verisure] Avoid updates duplication after communication errors (#13652) 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 --- diff --git a/bundles/org.openhab.binding.verisure/src/main/java/org/openhab/binding/verisure/internal/VerisureSession.java b/bundles/org.openhab.binding.verisure/src/main/java/org/openhab/binding/verisure/internal/VerisureSession.java index 1b313c0ac0..712d4c7735 100644 --- a/bundles/org.openhab.binding.verisure/src/main/java/org/openhab/binding/verisure/internal/VerisureSession.java +++ b/bundles/org.openhab.binding.verisure/src/main/java/org/openhab/binding/verisure/internal/VerisureSession.java @@ -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> verisureHandlers = new ConcurrentHashMap<>(); private final Logger logger = LoggerFactory.getLogger(VerisureSession.class); private final Gson gson = new Gson(); - private final List> deviceStatusListeners = new CopyOnWriteArrayList<>(); + private final Set> deviceStatusListeners = ConcurrentHashMap.newKeySet(); private final Map verisureInstallations = new ConcurrentHashMap<>(); private static final List APISERVERLIST = Arrays.asList("https://m-api01.verisure.com", "https://m-api02.verisure.com");