11// Copyright (c) Microsoft Corporation. All rights reserved.
22// Licensed under the MIT license.
33
4- import { commands , type ExtensionContext , workspace , type WorkspaceFolder } from "vscode" ;
4+ import { commands , type ExtensionContext , type Event , workspace , type WorkspaceFolder } from "vscode" ;
55
66import { Jdtls } from "../java/jdtls" ;
77import { languageServerApiManager } from "../languageServerApi/languageServerApiManager" ;
@@ -12,6 +12,8 @@ import notificationManager from "./display/notificationManager";
1212import { Settings } from "../settings" ;
1313import assessmentManager , { getDirectDependencies } from "./assessmentManager" ;
1414import { checkOrInstallAppModExtensionForUpgrade , checkOrPopupToInstallAppModExtensionForModernization } from "./utility" ;
15+ import { contextManager } from "../contextManager" ;
16+ import { LanguageServerMode } from "../languageServerApi/LanguageServerMode" ;
1517
1618const DEFAULT_UPGRADE_PROMPT = "Upgrade Java project dependency to latest version." ;
1719
@@ -21,6 +23,8 @@ function shouldRunCheckup() {
2123}
2224
2325class UpgradeManager {
26+ private static watcherSetup = false ;
27+
2428 public static initialize ( context : ExtensionContext ) {
2529 notificationManager . initialize ( context ) ;
2630
@@ -55,6 +59,8 @@ class UpgradeManager {
5559 return ;
5660 }
5761
62+ UpgradeManager . setupWatcherForServerModeChange ( ) ;
63+
5864 const hasJavaError : boolean = await Jdtls . checkImportStatus ( ) ;
5965 if ( hasJavaError ) {
6066 sendInfo ( _operationId , { skipReason : "hasJavaError" } ) ;
@@ -92,6 +98,23 @@ class UpgradeManager {
9298 }
9399 } ) ( ) ;
94100 }
101+
102+ private static setupWatcherForServerModeChange ( ) {
103+ if ( UpgradeManager . watcherSetup ) {
104+ return ;
105+ }
106+
107+ const extensionApi = languageServerApiManager . getExtensionApi ( ) ;
108+ if ( extensionApi . onDidServerModeChange ) {
109+ const onDidServerModeChange : Event < string > = extensionApi . onDidServerModeChange ;
110+ contextManager . context . subscriptions . push ( onDidServerModeChange ( ( mode : LanguageServerMode ) => {
111+ if ( mode !== LanguageServerMode . LightWeight ) {
112+ UpgradeManager . scan ( ) ;
113+ }
114+ } ) ) ;
115+ UpgradeManager . watcherSetup = true ;
116+ }
117+ }
95118}
96119
97120export default UpgradeManager ;
0 commit comments