From 371d373c9b2c7bb76960c52b77aa37416327ae92 Mon Sep 17 00:00:00 2001 From: azerr Date: Tue, 7 Dec 2021 11:52:39 +0100 Subject: [PATCH] Shutdown raises exception Fixes #1132 Signed-off-by: azerr --- .../eclipse/lemminx/XMLLanguageServer.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java index 9c3d3ba77f..e9a6098b07 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/XMLLanguageServer.java @@ -75,8 +75,7 @@ * XML language server. * */ -public class XMLLanguageServer - implements ProcessLanguageServer, XMLLanguageServerAPI, IXMLDocumentProvider, +public class XMLLanguageServer implements ProcessLanguageServer, XMLLanguageServerAPI, IXMLDocumentProvider, IXMLNotificationService, IXMLValidationService { private static final Logger LOGGER = Logger.getLogger(XMLLanguageServer.class.getName()); @@ -109,7 +108,7 @@ public CompletableFuture initialize(InitializeParams params) { Object xmlSettings = AllXMLSettings.getAllXMLSettings(initOptions); XMLGeneralClientSettings settings = XMLGeneralClientSettings.getGeneralXMLSettings(xmlSettings); - LogHelper.initializeRootLogger(languageClient, settings == null? null : settings.getLogs()); + LogHelper.initializeRootLogger(languageClient, settings == null ? null : settings.getLogs()); LOGGER.info("Initializing XML Language server" + System.lineSeparator() + Platform.details()); @@ -126,7 +125,7 @@ public CompletableFuture initialize(InitializeParams params) { xmlTextDocumentService.updateClientCapabilities(capabilityManager.getClientCapabilities().capabilities, capabilityManager.getClientCapabilities().getExtendedCapabilities()); - updateSettings(initOptions, false /* already configured logging*/ ); + updateSettings(initOptions, false /* already configured logging */ ); ServerCapabilities nonDynamicServerCapabilities = ServerCapabilitiesInitializer.getNonDynamicServerCapabilities( capabilityManager.getClientCapabilities(), xmlTextDocumentService.isIncrementalSupport()); @@ -162,7 +161,7 @@ public synchronized void updateSettings(Object initOptions) { * Update XML settings configured from the client. * * @param initOptions Settings the XML settings - * @param initLogs whether to initialize the log handlers + * @param initLogs whether to initialize the log handlers */ private synchronized void updateSettings(Object initOptions, boolean initLogs) { if (initOptions == null) { @@ -227,10 +226,15 @@ private synchronized void updateSettings(Object initOptions, boolean initLogs) { @Override public CompletableFuture shutdown() { xmlLanguageService.dispose(); - if (capabilityManager.getClientCapabilities().getExtendedCapabilities().shouldLanguageServerExitOnShutdown()) { - delayer.schedule(() -> exit(0) , 1, TimeUnit.SECONDS); + if (capabilityManager != null) { + if (capabilityManager.getClientCapabilities().getExtendedCapabilities() + .shouldLanguageServerExitOnShutdown()) { + delayer.schedule(() -> exit(0), 1, TimeUnit.SECONDS); + } + } + if (telemetryManager != null) { + getTelemetryManager().shutdown(); } - getTelemetryManager().shutdown(); return computeAsync(cc -> new Object()); } @@ -285,7 +289,8 @@ public long getParentProcessId() { @Override public CompletableFuture closeTag(TextDocumentPositionParams params) { return xmlTextDocumentService.computeDOMAsync(params.getTextDocument(), (cancelChecker, xmlDocument) -> { - return getXMLLanguageService().doAutoClose(xmlDocument, params.getPosition(), getSettings().getCompletionSettings(), cancelChecker); + return getXMLLanguageService().doAutoClose(xmlDocument, params.getPosition(), + getSettings().getCompletionSettings(), cancelChecker); }); } @@ -323,9 +328,9 @@ public SharedSettings getSharedSettings() { @Override public Collection getAllDocuments() { - return xmlTextDocumentService.allDocuments().stream() - .map(m -> m.getModel().getNow(null)) - .filter(Objects::nonNull) + return xmlTextDocumentService.allDocuments().stream() // + .map(m -> m.getModel().getNow(null)) // + .filter(Objects::nonNull) // .collect(Collectors.toList()); }