From 1b6754c2177646a6b5b0263b274f1da75c21be29 Mon Sep 17 00:00:00 2001 From: "nsingh@pivotal.io" Date: Mon, 6 Jan 2020 14:42:59 -0800 Subject: [PATCH] Add progress event for live hovers v2 disconnect --- .../v2/SpringProcessConnectorService.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java index 24f25a26a..10dbc4839 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/livehover/v2/SpringProcessConnectorService.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2019 Pivotal, Inc. + * Copyright (c) 2019, 2020 Pivotal, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -102,7 +102,7 @@ public class SpringProcessConnectorService { this.connectedSuccess.put(processKey, false); if (connector != null) { - scheduleDisconnect(processKey, connector, 0, TimeUnit.SECONDS, 0); + scheduleDisconnect(null, processKey, connector, 0, TimeUnit.SECONDS, 0); } } @@ -150,18 +150,27 @@ public class SpringProcessConnectorService { }, delay, unit); } - private void scheduleDisconnect(String processKey, SpringProcessConnector connector, long delay, TimeUnit unit, int retryNo) { - log.info("schedule task to disconnect from process: " + processKey + " - retry no: " + retryNo); + private void scheduleDisconnect(ProgressTask progressTask, String processKey, SpringProcessConnector connector, long delay, TimeUnit unit, int retryNo) { + String message = "Disconnect from process: " + processKey + " - retry no: " + retryNo; + log.info(message); + + // Use the same progress task for all retries so that progress messages appear in the same progress task + final ProgressTask disconnectProgressTask = getProgressTask(progressTask, + "spring-process-connector-service-disconnect-" + processKey); this.scheduler.schedule(() -> { try { + disconnectProgressTask.progressEvent(message); connector.disconnect(); + disconnectProgressTask.progressDone(); } catch (Exception e) { log.info("problem occured during process disconnect", e); if (retryNo < maxRetryCount) { - scheduleDisconnect(processKey, connector, retryDelayInSeconds, TimeUnit.SECONDS, retryNo + 1); + scheduleDisconnect(disconnectProgressTask, processKey, connector, retryDelayInSeconds, TimeUnit.SECONDS, retryNo + 1); + } else { + disconnectProgressTask.progressDone(); } } }, delay, unit);