]> git.basschouten.com Git - openhab-addons.git/commitdiff
[gardena] Adjust thread name for WEB clients (avoid IAE) (#14349)
authorlolodomo <lg.hc@free.fr>
Sun, 19 Feb 2023 19:56:59 +0000 (20:56 +0100)
committerGitHub <noreply@github.com>
Sun, 19 Feb 2023 19:56:59 +0000 (20:56 +0100)
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/GardenaSmartImpl.java
bundles/org.openhab.binding.gardena/src/main/java/org/openhab/binding/gardena/internal/handler/GardenaAccountHandler.java

index 31f2102ff65e3cb66e28c333be9d05fe9f3005db..1f2e3d6ea503e7ad59b0581ecc9a2731ce1002f2 100644 (file)
@@ -56,6 +56,8 @@ import org.openhab.binding.gardena.internal.model.dto.command.GardenaCommand;
 import org.openhab.binding.gardena.internal.model.dto.command.GardenaCommandRequest;
 import org.openhab.core.io.net.http.HttpClientFactory;
 import org.openhab.core.io.net.http.WebSocketFactory;
+import org.openhab.core.thing.ThingUID;
+import org.openhab.core.thing.util.ThingWebClientUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -101,23 +103,24 @@ public class GardenaSmartImpl implements GardenaSmart, GardenaSmartWebSocketList
     private final Object newDeviceTasksLock = new Object();
     private final List<ScheduledFuture<?>> newDeviceTasks = new ArrayList<>();
 
-    public GardenaSmartImpl(String id, GardenaConfig config, GardenaSmartEventListener eventListener,
+    public GardenaSmartImpl(ThingUID uid, GardenaConfig config, GardenaSmartEventListener eventListener,
             ScheduledExecutorService scheduler, HttpClientFactory httpClientFactory, WebSocketFactory webSocketFactory)
             throws GardenaException {
-        this.id = id;
+        this.id = uid.getId();
         this.config = config;
         this.eventListener = eventListener;
         this.scheduler = scheduler;
 
         logger.debug("Starting GardenaSmart");
         try {
-            httpClient = httpClientFactory.createHttpClient(id);
+            String name = ThingWebClientUtil.buildWebClientConsumerName(uid, null);
+            httpClient = httpClientFactory.createHttpClient(name);
             httpClient.setConnectTimeout(config.getConnectionTimeout() * 1000L);
             httpClient.setIdleTimeout(httpClient.getConnectTimeout());
             httpClient.start();
 
-            String webSocketId = String.valueOf(hashCode());
-            webSocketClient = webSocketFactory.createWebSocketClient(webSocketId);
+            name = ThingWebClientUtil.buildWebClientConsumerName(uid, "ws-");
+            webSocketClient = webSocketFactory.createWebSocketClient(name);
             webSocketClient.setConnectTimeout(config.getConnectionTimeout() * 1000L);
             webSocketClient.setStopTimeout(3000);
             webSocketClient.setMaxIdleTimeout(150000);
index 5b80ec1c1c5dab2cff629402e79a7628f562b7ea..adbf9d7d9137924083a940cef813874d41334c24 100644 (file)
@@ -173,8 +173,7 @@ public class GardenaAccountHandler extends BaseBridgeHandler implements GardenaS
             GardenaConfig gardenaConfig = getThing().getConfiguration().as(GardenaConfig.class);
             logger.debug("{}", gardenaConfig);
 
-            String id = getThing().getUID().getId();
-            gardenaSmart = new GardenaSmartImpl(id, gardenaConfig, this, scheduler, httpClientFactory,
+            gardenaSmart = new GardenaSmartImpl(getThing().getUID(), gardenaConfig, this, scheduler, httpClientFactory,
                     webSocketFactory);
             final GardenaDeviceDiscoveryService discoveryService = this.discoveryService;
             if (discoveryService != null) {