]> git.basschouten.com Git - openhab-addons.git/commitdiff
[automower] Remove the access token when the thing is removed (#14971)
authorlolodomo <lg.hc@free.fr>
Thu, 11 May 2023 20:01:49 +0000 (22:01 +0200)
committerGitHub <noreply@github.com>
Thu, 11 May 2023 20:01:49 +0000 (22:01 +0200)
Related to #14818

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

index 6eafeb2f6e1a1a441bbe2368c0c043c88b62baec..414c2847eda899bfe8b74e15120bfdfa1ce208ff 100644 (file)
@@ -54,7 +54,7 @@ public class AutomowerBridgeHandler extends BaseBridgeHandler {
 
     private final OAuthFactory oAuthFactory;
 
-    private @NonNullByDefault({}) OAuthClientService oAuthService;
+    private @Nullable OAuthClientService oAuthService;
     private @Nullable ScheduledFuture<?> automowerBridgePollingJob;
     private @Nullable AutomowerBridge bridge;
     private final HttpClient httpClient;
@@ -85,7 +85,11 @@ public class AutomowerBridgeHandler extends BaseBridgeHandler {
             stopAutomowerBridgePolling(currentBridge);
             bridge = null;
         }
-        oAuthFactory.ungetOAuthService(thing.getUID().getAsString());
+        OAuthClientService oAuthService = this.oAuthService;
+        if (oAuthService != null) {
+            oAuthFactory.ungetOAuthService(thing.getUID().getAsString());
+            this.oAuthService = null;
+        }
     }
 
     @Override
@@ -104,8 +108,9 @@ public class AutomowerBridgeHandler extends BaseBridgeHandler {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.CONFIGURATION_ERROR,
                     "@text/conf-error-invalid-polling-interval");
         } else {
-            oAuthService = oAuthFactory.createOAuthClientService(thing.getUID().getAsString(), HUSQVARNA_API_TOKEN_URL,
-                    null, appKey, appSecret, null, null);
+            OAuthClientService oAuthService = oAuthFactory.createOAuthClientService(thing.getUID().getAsString(),
+                    HUSQVARNA_API_TOKEN_URL, null, appKey, appSecret, null, null);
+            this.oAuthService = oAuthService;
 
             if (bridge == null) {
                 AutomowerBridge currentBridge = new AutomowerBridge(oAuthService, appKey, httpClient, scheduler);
@@ -116,6 +121,12 @@ public class AutomowerBridgeHandler extends BaseBridgeHandler {
         }
     }
 
+    @Override
+    public void handleRemoval() {
+        oAuthFactory.deleteServiceAndAccessToken(thing.getUID().getAsString());
+        super.handleRemoval();
+    }
+
     private void startAutomowerBridgePolling(AutomowerBridge bridge, @Nullable Integer pollingIntervalS) {
         ScheduledFuture<?> currentPollingJob = automowerBridgePollingJob;
         if (currentPollingJob == null) {