[automower] Remove the access token when the thing is removed (#14971)

Related to #14818

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
This commit is contained in:
lolodomo 2023-05-11 22:01:49 +02:00 committed by GitHub
parent 29edae9f21
commit 14e7109a25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View 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) {