Skip to content

Commit 71297e3

Browse files
authored
Merge pull request #3642 from 1c-syntax/copilot/move-populatecontext-to-initialized
Перенести запуск populateContext из обработки initialize в initialized
2 parents d633178 + 201e2c5 commit 71297e3

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

src/main/java/com/github/_1c_syntax/bsl/languageserver/BSLLanguageServer.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import org.eclipse.lsp4j.HoverOptions;
4949
import org.eclipse.lsp4j.InitializeParams;
5050
import org.eclipse.lsp4j.InitializeResult;
51+
import org.eclipse.lsp4j.InitializedParams;
5152
import org.eclipse.lsp4j.InlayHintRegistrationOptions;
5253
import org.eclipse.lsp4j.ReferenceOptions;
5354
import org.eclipse.lsp4j.RenameCapabilities;
@@ -108,13 +109,6 @@ public CompletableFuture<InitializeResult> initialize(InitializeParams params) {
108109

109110
setConfigurationRoot(params);
110111

111-
var factory = new NamedForkJoinWorkerThreadFactory("populate-context-");
112-
var executorService = new ForkJoinPool(ForkJoinPool.getCommonPoolParallelism(), factory, null, true);
113-
CompletableFuture
114-
.runAsync(context::populateContext, executorService)
115-
.thenAccept(unused -> executorService.shutdown())
116-
;
117-
118112
var capabilities = new ServerCapabilities();
119113
capabilities.setTextDocumentSync(getTextDocumentSyncOptions());
120114
capabilities.setDocumentRangeFormattingProvider(getDocumentRangeFormattingProvider());
@@ -163,6 +157,20 @@ private void setConfigurationRoot(InitializeParams params) {
163157
context.setConfigurationRoot(configurationRoot);
164158
}
165159

160+
@Override
161+
public void initialized(InitializedParams params) {
162+
var factory = new NamedForkJoinWorkerThreadFactory("populate-context-");
163+
var executorService = new ForkJoinPool(ForkJoinPool.getCommonPoolParallelism(), factory, null, true);
164+
CompletableFuture
165+
.runAsync(context::populateContext, executorService)
166+
.whenComplete((unused, throwable) -> {
167+
executorService.shutdown();
168+
if (throwable != null) {
169+
LOGGER.error("Error populating context", throwable);
170+
}
171+
});
172+
}
173+
166174
@Override
167175
public CompletableFuture<Object> shutdown() {
168176
shutdownWasCalled = true;

src/test/java/com/github/_1c_syntax/bsl/languageserver/BSLLanguageServerTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.eclipse.lsp4j.ClientCapabilities;
3030
import org.eclipse.lsp4j.InitializeParams;
3131
import org.eclipse.lsp4j.InitializeResult;
32+
import org.eclipse.lsp4j.InitializedParams;
3233
import org.eclipse.lsp4j.TextDocumentSyncKind;
3334
import org.eclipse.lsp4j.RenameCapabilities;
3435
import org.eclipse.lsp4j.TextDocumentClientCapabilities;
@@ -102,6 +103,23 @@ void initializeRename() throws ExecutionException, InterruptedException {
102103
assertThat(initialize.getCapabilities().getRenameProvider().isRight()).isTrue();
103104
}
104105

106+
@Test
107+
void initialized() {
108+
// given
109+
InitializeParams initParams = new InitializeParams();
110+
WorkspaceFolder workspaceFolder = new WorkspaceFolder(Absolute.path(PATH_TO_METADATA).toUri().toString(), "test");
111+
List<WorkspaceFolder> workspaceFolders = List.of(workspaceFolder);
112+
initParams.setWorkspaceFolders(workspaceFolders);
113+
114+
// initialize first
115+
server.initialize(initParams);
116+
117+
// when
118+
InitializedParams params = new InitializedParams();
119+
// then - should not throw
120+
server.initialized(params);
121+
}
122+
105123
@Test
106124
void shutdown() throws ExecutionException, InterruptedException {
107125
CompletableFuture<Object> shutdown = server.shutdown();

0 commit comments

Comments
 (0)