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 ec1f8d968..3d6f57a68 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 @@ -90,6 +90,8 @@ public class SpringProcessConnectorService { final ProgressTask progressTask = getProgressTask( "spring-process-connector-service-connect-" + processKey); + progressTask.progressBegin("Connect", null); + scheduleConnect(progressTask, processKey, connector, 0, TimeUnit.SECONDS, 0); } catch (Exception e) { @@ -104,7 +106,9 @@ public class SpringProcessConnectorService { if (connector != null) { final ProgressTask progressTask = getProgressTask( "spring-process-connector-service-refresh-data-" + processKey); - + + progressTask.progressBegin("Refresh", null); + scheduleRefresh(progressTask, processKey, connector, 0, TimeUnit.SECONDS, 0); } } @@ -125,6 +129,8 @@ public class SpringProcessConnectorService { final ProgressTask progressTask = getProgressTask( "spring-process-connector-service-disconnect-" + processKey); + progressTask.progressBegin("Disconnect", null); + scheduleDisconnect(progressTask, processKey, connector, 0, TimeUnit.SECONDS, 0); } } @@ -151,9 +157,10 @@ public class SpringProcessConnectorService { this.scheduler.schedule(() -> { - progressTask.progressEvent(progressMessage); try { + progressTask.progressEvent(progressMessage); connector.connect(); + progressTask.progressDone(); refreshProcess(processKey); } @@ -171,8 +178,6 @@ public class SpringProcessConnectorService { .error("Failed to connect to process " + processKey + " after retries: " + retryNo, e)); } } - } finally { - progressTask.progressDone(); } }, delay, unit); } @@ -183,9 +188,10 @@ public class SpringProcessConnectorService { this.scheduler.schedule(() -> { - progressTask.progressEvent(message); try { + progressTask.progressEvent(message); connector.disconnect(); + progressTask.progressDone(); } catch (Exception e) { log.info("problem occured during process disconnect", e); @@ -200,8 +206,6 @@ public class SpringProcessConnectorService { .error("Failed to disconnect from process " + processKey + " after retries: " + retryNo, e)); } - } finally { - progressTask.progressDone(); } }, delay, unit); } @@ -211,9 +215,10 @@ public class SpringProcessConnectorService { log.info(progressMessage); - this.scheduler.schedule(() -> { - progressTask.progressEvent(progressMessage); + this.scheduler.schedule(() -> { + try { + progressTask.progressEvent(progressMessage); SpringProcessLiveData newLiveData = connector.refresh(this.liveDataProvider.getCurrent(processKey)); if (newLiveData != null) { @@ -223,6 +228,7 @@ public class SpringProcessConnectorService { this.connectedSuccess.put(processKey, true); } + progressTask.progressDone(); } catch (Exception e) { @@ -243,8 +249,6 @@ public class SpringProcessConnectorService { disconnectProcess(processKey); } } - } finally { - progressTask.progressDone(); } }, delay, unit); } diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java index a3d8be8b2..39aaed25d 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/jdt/ls/JdtLsProjectCache.java @@ -352,7 +352,8 @@ public class JdtLsProjectCache implements InitializableJavaProjectsService, Serv : new JdtLsJavaProject(server.getClient(), projectUri, classpath, JdtLsProjectCache.this); IJavaProject oldProject = table.put(uri, newProject); if (oldProject != null) { - notifyChanged(newProject); + notifyDelete(oldProject); + notifyCreated(newProject); } else { notifyCreated(newProject); }