diff --git a/bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectBridgeHandler.java b/bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectBridgeHandler.java index 8969c0bf7..db483b3b1 100644 --- a/bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectBridgeHandler.java +++ b/bundles/org.openhab.binding.homeconnect/src/main/java/org/openhab/binding/homeconnect/internal/handler/HomeConnectBridgeHandler.java @@ -84,7 +84,7 @@ public class HomeConnectBridgeHandler extends BaseBridgeHandler { private @Nullable List eventHistory; private @NonNullByDefault({}) OAuthClientService oAuthClientService; - private @NonNullByDefault({}) String oAuthServiceHandleId; + private @Nullable String oAuthServiceHandleId; private @NonNullByDefault({}) HomeConnectApiClient apiClient; private @NonNullByDefault({}) HomeConnectEventSourceClient eventSourceClient; @@ -221,6 +221,15 @@ public class HomeConnectBridgeHandler extends BaseBridgeHandler { } } + @Override + public void handleRemoval() { + String handleId = this.oAuthServiceHandleId; + if (handleId != null) { + oAuthFactory.deleteServiceAndAccessToken(handleId); + } + super.handleRemoval(); + } + @Override public Collection> getServices() { return Collections.singleton(HomeConnectDiscoveryService.class); @@ -285,7 +294,10 @@ public class HomeConnectBridgeHandler extends BaseBridgeHandler { eventSourceClient.getLatestEvents().clear(); eventSourceClient.dispose(immediate); - oAuthFactory.ungetOAuthService(oAuthServiceHandleId); + String handleId = this.oAuthServiceHandleId; + if (handleId != null) { + oAuthFactory.ungetOAuthService(handleId); + } homeConnectServlet.removeBridgeHandler(this); }