]> git.basschouten.com Git - openhab-addons.git/commitdiff
[tesla] Normalize thread names and avoid a possible IAE (#14351)
authorlolodomo <lg.hc@free.fr>
Sun, 19 Feb 2023 19:55:16 +0000 (20:55 +0100)
committerGitHub <noreply@github.com>
Sun, 19 Feb 2023 19:55:16 +0000 (20:55 +0100)
Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.tesla/src/main/java/org/openhab/binding/tesla/internal/handler/TeslaEventEndpoint.java
bundles/org.openhab.binding.tesla/src/main/java/org/openhab/binding/tesla/internal/handler/TeslaVehicleHandler.java

index 826f710081032b285dec83416ef3b0e03e627247..beec69d7f9fd32fc770b312620b53079286cd7c4 100644 (file)
@@ -22,7 +22,6 @@ import java.nio.charset.CodingErrorAction;
 import java.nio.charset.StandardCharsets;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.jetty.websocket.api.Session;
@@ -32,6 +31,8 @@ import org.eclipse.jetty.websocket.api.WebSocketPingPongListener;
 import org.eclipse.jetty.websocket.client.WebSocketClient;
 import org.openhab.binding.tesla.internal.protocol.Event;
 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;
 
@@ -54,7 +55,6 @@ public class TeslaEventEndpoint implements WebSocketListener, WebSocketPingPongL
 
     private String endpointId;
     protected WebSocketFactory webSocketFactory;
-    private static final AtomicInteger INSTANCE_COUNTER = new AtomicInteger();
 
     private WebSocketClient client;
     private ConnectionState connectionState = ConnectionState.CLOSED;
@@ -62,11 +62,12 @@ public class TeslaEventEndpoint implements WebSocketListener, WebSocketPingPongL
     private EventHandler eventHandler;
     private final Gson gson = new Gson();
 
-    public TeslaEventEndpoint(WebSocketFactory webSocketFactory) {
+    public TeslaEventEndpoint(ThingUID uid, WebSocketFactory webSocketFactory) {
         try {
-            this.endpointId = "TeslaEventEndpoint-" + INSTANCE_COUNTER.incrementAndGet();
+            this.endpointId = "TeslaEventEndpoint-" + uid.getAsString();
 
-            client = webSocketFactory.createWebSocketClient(endpointId);
+            String name = ThingWebClientUtil.buildWebClientConsumerName(uid, null);
+            client = webSocketFactory.createWebSocketClient(name);
             this.client.setConnectTimeout(TIMEOUT_MILLISECONDS);
             this.client.setMaxIdleTimeout(IDLE_TIMEOUT_MILLISECONDS);
         } catch (Exception e) {
index 6a2b51c4a6468cb33b223e5a9755e6d55b0b75a9..8903a961020493b0465460a06063fe6a56c50a4b 100644 (file)
@@ -193,7 +193,7 @@ public class TeslaVehicleHandler extends BaseThingHandler {
 
             if (enableEvents) {
                 if (eventThread == null) {
-                    eventThread = new Thread(eventRunnable, "openHAB-Tesla-Events-" + getThing().getUID());
+                    eventThread = new Thread(eventRunnable, "OH-binding-" + getThing().getUID() + "-events");
                     eventThread.start();
                 }
             }
@@ -1130,7 +1130,7 @@ public class TeslaVehicleHandler extends BaseThingHandler {
 
         @Override
         public void run() {
-            eventEndpoint = new TeslaEventEndpoint(webSocketFactory);
+            eventEndpoint = new TeslaEventEndpoint(getThing().getUID(), webSocketFactory);
             eventEndpoint.addEventHandler(new TeslaEventEndpoint.EventHandler() {
                 @Override
                 public void handleEvent(Event event) {