in src/languageServerApi/languageServerApiManager.ts [37:97]
public async initializeJavaLanguageServerApi(forceActivate: boolean = true): Promise<void> {
if (this.isLanguageServerActivated()) {
return;
}
if (!this.extensionChangeListener) {
this.extensionChangeListener = extensions.onDidChange(() => {
if (this.serverMode === null) {
commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH, /* debounce = */false);
}
});
}
const extension: Extension<any> | undefined = extensions.getExtension(ExtensionName.JAVA_LANGUAGE_SUPPORT);
if (extension) {
contextManager.setContextValue(Context.LANGUAGE_SUPPORT_INSTALLED, true);
if (!forceActivate) {
return;
}
await extension.activate();
const extensionApi: any = extension.exports;
if (!extensionApi) {
return;
}
this.serverMode = extensionApi.serverMode;
if (this.serverMode === LanguageServerMode.Standard) {
syncHandler.updateFileWatcher(Settings.autoRefresh());
}
if (extensionApi.onDidClasspathUpdate) {
const onDidClasspathUpdate: Event<Uri> = extensionApi.onDidClasspathUpdate;
contextManager.context.subscriptions.push(onDidClasspathUpdate(() => {
commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH, /* debounce = */true);
syncHandler.updateFileWatcher(Settings.autoRefresh());
}));
}
if (extensionApi.onDidServerModeChange) {
const onDidServerModeChange: Event<string> = extensionApi.onDidServerModeChange;
contextManager.context.subscriptions.push(onDidServerModeChange((mode: LanguageServerMode) => {
if (this.serverMode !== mode) {
if (mode === LanguageServerMode.Hybrid) {
commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH, /* debounce = */false);
} else if (mode === LanguageServerMode.Standard) {
syncHandler.updateFileWatcher(Settings.autoRefresh());
}
this.serverMode = mode;
}
}));
}
if (extensionApi.onDidProjectsImport) {
const onDidProjectsImport: Event<Uri[]> = extensionApi.onDidProjectsImport;
contextManager.context.subscriptions.push(onDidProjectsImport(() => {
commands.executeCommand(Commands.VIEW_PACKAGE_REFRESH, /* debounce = */true);
syncHandler.updateFileWatcher(Settings.autoRefresh());
}));
}
}
}