99
99
import java .util .Collections ;
100
100
import java .util .List ;
101
101
import java .util .concurrent .CompletableFuture ;
102
- import java .util .stream .Collectors ;
102
+ import java .util .concurrent .ExecutorService ;
103
+ import java .util .concurrent .Executors ;
103
104
104
105
@ Component
105
106
@ RequiredArgsConstructor
@@ -123,14 +124,17 @@ public class BSLTextDocumentService implements TextDocumentService, ProtocolExte
123
124
private final RenameProvider renameProvider ;
124
125
private final InlayHintProvider inlayHintProvider ;
125
126
127
+ private final ExecutorService executorService = Executors .newCachedThreadPool ();
128
+
126
129
@ Override
127
130
public CompletableFuture <Hover > hover (HoverParams params ) {
128
131
var documentContext = context .getDocument (params .getTextDocument ().getUri ());
129
132
if (documentContext == null ) {
130
133
return CompletableFuture .completedFuture (null );
131
134
}
132
- return CompletableFuture .supplyAsync (() ->
133
- hoverProvider .getHover (documentContext , params ).orElse (null )
135
+ return CompletableFuture .supplyAsync (
136
+ () -> hoverProvider .getHover (documentContext , params ).orElse (null ),
137
+ executorService
134
138
);
135
139
}
136
140
@@ -143,8 +147,9 @@ public CompletableFuture<Either<List<? extends Location>, List<? extends Locatio
143
147
return CompletableFuture .completedFuture (Either .forRight (Collections .emptyList ()));
144
148
}
145
149
146
- return CompletableFuture .supplyAsync (() ->
147
- Either .forRight (definitionProvider .getDefinition (documentContext , params ))
150
+ return CompletableFuture .supplyAsync (
151
+ () -> Either .forRight (definitionProvider .getDefinition (documentContext , params )),
152
+ executorService
148
153
);
149
154
}
150
155
@@ -155,7 +160,10 @@ public CompletableFuture<List<? extends Location>> references(ReferenceParams pa
155
160
return CompletableFuture .completedFuture (Collections .emptyList ());
156
161
}
157
162
158
- return CompletableFuture .supplyAsync (() -> referencesProvider .getReferences (documentContext , params ));
163
+ return CompletableFuture .supplyAsync (
164
+ () -> referencesProvider .getReferences (documentContext , params ),
165
+ executorService
166
+ );
159
167
}
160
168
161
169
@ Override
@@ -167,10 +175,11 @@ public CompletableFuture<List<Either<SymbolInformation, DocumentSymbol>>> docume
167
175
return CompletableFuture .completedFuture (null );
168
176
}
169
177
170
- return CompletableFuture .supplyAsync (() ->
171
- documentSymbolProvider .getDocumentSymbols (documentContext ).stream ()
178
+ return CompletableFuture .supplyAsync (
179
+ () -> documentSymbolProvider .getDocumentSymbols (documentContext ).stream ()
172
180
.map (Either ::<SymbolInformation , DocumentSymbol >forRight )
173
- .collect (Collectors .toList ())
181
+ .toList (),
182
+ executorService
174
183
);
175
184
}
176
185
@@ -181,7 +190,10 @@ public CompletableFuture<List<Either<Command, CodeAction>>> codeAction(CodeActio
181
190
return CompletableFuture .completedFuture (null );
182
191
}
183
192
184
- return CompletableFuture .supplyAsync (() -> codeActionProvider .getCodeActions (params , documentContext ));
193
+ return CompletableFuture .supplyAsync (
194
+ () -> codeActionProvider .getCodeActions (params , documentContext ),
195
+ executorService
196
+ );
185
197
}
186
198
187
199
@ Override
@@ -191,7 +203,10 @@ public CompletableFuture<List<? extends CodeLens>> codeLens(CodeLensParams param
191
203
return CompletableFuture .completedFuture (Collections .emptyList ());
192
204
}
193
205
194
- return CompletableFuture .supplyAsync (() -> codeLensProvider .getCodeLens (documentContext ));
206
+ return CompletableFuture .supplyAsync (
207
+ () -> codeLensProvider .getCodeLens (documentContext ),
208
+ executorService
209
+ );
195
210
}
196
211
197
212
@ Override
@@ -201,7 +216,10 @@ public CompletableFuture<CodeLens> resolveCodeLens(CodeLens unresolved) {
201
216
if (documentContext == null ) {
202
217
return CompletableFuture .completedFuture (unresolved );
203
218
}
204
- return CompletableFuture .supplyAsync (() -> codeLensProvider .resolveCodeLens (documentContext , unresolved , data ));
219
+ return CompletableFuture .supplyAsync (
220
+ () -> codeLensProvider .resolveCodeLens (documentContext , unresolved , data ),
221
+ executorService
222
+ );
205
223
}
206
224
207
225
@ Override
@@ -211,8 +229,10 @@ public CompletableFuture<List<? extends TextEdit>> formatting(DocumentFormatting
211
229
return CompletableFuture .completedFuture (null );
212
230
}
213
231
214
- List <TextEdit > edits = formatProvider .getFormatting (params , documentContext );
215
- return CompletableFuture .completedFuture (edits );
232
+ return CompletableFuture .supplyAsync (
233
+ () -> formatProvider .getFormatting (params , documentContext ),
234
+ executorService
235
+ );
216
236
}
217
237
218
238
@ Override
@@ -222,8 +242,10 @@ public CompletableFuture<List<? extends TextEdit>> rangeFormatting(DocumentRange
222
242
return CompletableFuture .completedFuture (null );
223
243
}
224
244
225
- List <TextEdit > edits = formatProvider .getRangeFormatting (params , documentContext );
226
- return CompletableFuture .completedFuture (edits );
245
+ return CompletableFuture .supplyAsync (
246
+ () -> formatProvider .getRangeFormatting (params , documentContext ),
247
+ executorService
248
+ );
227
249
}
228
250
229
251
@ Override
@@ -233,7 +255,10 @@ public CompletableFuture<List<FoldingRange>> foldingRange(FoldingRangeRequestPar
233
255
return CompletableFuture .completedFuture (null );
234
256
}
235
257
236
- return CompletableFuture .supplyAsync (() -> foldingRangeProvider .getFoldingRange (documentContext ));
258
+ return CompletableFuture .supplyAsync (
259
+ () -> foldingRangeProvider .getFoldingRange (documentContext ),
260
+ executorService
261
+ );
237
262
}
238
263
239
264
@ Override
@@ -244,13 +269,15 @@ public CompletableFuture<List<CallHierarchyItem>> prepareCallHierarchy(CallHiera
244
269
return CompletableFuture .completedFuture (null );
245
270
}
246
271
247
- return CompletableFuture .supplyAsync (() -> {
248
- List <CallHierarchyItem > callHierarchyItems = callHierarchyProvider .prepareCallHierarchy (documentContext , params );
249
- if (callHierarchyItems .isEmpty ()) {
250
- return null ;
251
- }
252
- return callHierarchyItems ;
253
- });
272
+ return CompletableFuture .supplyAsync (
273
+ () -> {
274
+ List <CallHierarchyItem > callHierarchyItems = callHierarchyProvider .prepareCallHierarchy (documentContext , params );
275
+ if (callHierarchyItems .isEmpty ()) {
276
+ return null ;
277
+ }
278
+ return callHierarchyItems ;
279
+ },
280
+ executorService );
254
281
}
255
282
256
283
@ Override
@@ -262,7 +289,10 @@ public CompletableFuture<List<CallHierarchyIncomingCall>> callHierarchyIncomingC
262
289
return CompletableFuture .completedFuture (Collections .emptyList ());
263
290
}
264
291
265
- return CompletableFuture .supplyAsync (() -> callHierarchyProvider .incomingCalls (documentContext , params ));
292
+ return CompletableFuture .supplyAsync (
293
+ () -> callHierarchyProvider .incomingCalls (documentContext , params ),
294
+ executorService
295
+ );
266
296
}
267
297
268
298
@ Override
@@ -274,7 +304,10 @@ public CompletableFuture<List<CallHierarchyOutgoingCall>> callHierarchyOutgoingC
274
304
return CompletableFuture .completedFuture (Collections .emptyList ());
275
305
}
276
306
277
- return CompletableFuture .supplyAsync (() -> callHierarchyProvider .outgoingCalls (documentContext , params ));
307
+ return CompletableFuture .supplyAsync (
308
+ () -> callHierarchyProvider .outgoingCalls (documentContext , params ),
309
+ executorService
310
+ );
278
311
}
279
312
280
313
@ Override
@@ -284,7 +317,10 @@ public CompletableFuture<List<SelectionRange>> selectionRange(SelectionRangePara
284
317
return CompletableFuture .completedFuture (Collections .emptyList ());
285
318
}
286
319
287
- return CompletableFuture .supplyAsync (() -> selectionRangeProvider .getSelectionRange (documentContext , params ));
320
+ return CompletableFuture .supplyAsync (
321
+ () -> selectionRangeProvider .getSelectionRange (documentContext , params ),
322
+ executorService
323
+ );
288
324
}
289
325
290
326
@ Override
@@ -294,7 +330,10 @@ public CompletableFuture<List<ColorInformation>> documentColor(DocumentColorPara
294
330
return CompletableFuture .completedFuture (Collections .emptyList ());
295
331
}
296
332
297
- return CompletableFuture .supplyAsync (() -> colorProvider .getDocumentColor (documentContext ));
333
+ return CompletableFuture .supplyAsync (
334
+ () -> colorProvider .getDocumentColor (documentContext ),
335
+ executorService
336
+ );
298
337
}
299
338
300
339
@ Override
@@ -304,7 +343,10 @@ public CompletableFuture<List<ColorPresentation>> colorPresentation(ColorPresent
304
343
return CompletableFuture .completedFuture (Collections .emptyList ());
305
344
}
306
345
307
- return CompletableFuture .supplyAsync (() -> colorProvider .getColorPresentation (documentContext , params ));
346
+ return CompletableFuture .supplyAsync (
347
+ () -> colorProvider .getColorPresentation (documentContext , params ),
348
+ executorService
349
+ );
308
350
}
309
351
310
352
@ Override
@@ -314,7 +356,10 @@ public CompletableFuture<List<InlayHint>> inlayHint(InlayHintParams params) {
314
356
return CompletableFuture .completedFuture (Collections .emptyList ());
315
357
}
316
358
317
- return CompletableFuture .supplyAsync (() -> inlayHintProvider .getInlayHint (documentContext , params ));
359
+ return CompletableFuture .supplyAsync (
360
+ () -> inlayHintProvider .getInlayHint (documentContext , params ),
361
+ executorService
362
+ );
318
363
}
319
364
320
365
@ Override
@@ -380,7 +425,10 @@ public CompletableFuture<List<DocumentLink>> documentLink(DocumentLinkParams par
380
425
return CompletableFuture .completedFuture (null );
381
426
}
382
427
383
- return CompletableFuture .supplyAsync (() -> documentLinkProvider .getDocumentLinks (documentContext ));
428
+ return CompletableFuture .supplyAsync (
429
+ () -> documentLinkProvider .getDocumentLinks (documentContext ),
430
+ executorService
431
+ );
384
432
}
385
433
386
434
@ Override
@@ -397,7 +445,7 @@ public CompletableFuture<Diagnostics> diagnostics(DiagnosticParams params) {
397
445
if (range != null ) {
398
446
diagnostics = diagnostics .stream ()
399
447
.filter (diagnostic -> Ranges .containsRange (range , diagnostic .getRange ()))
400
- .collect ( Collectors . toList () );
448
+ .toList ();
401
449
}
402
450
return new Diagnostics (diagnostics , documentContext .getVersion ());
403
451
});
@@ -410,8 +458,10 @@ public CompletableFuture<Either3<Range, PrepareRenameResult, PrepareRenameDefaul
410
458
return CompletableFuture .completedFuture (null );
411
459
}
412
460
413
- return CompletableFuture .supplyAsync (() ->
414
- Either3 .forFirst (renameProvider .getPrepareRename (documentContext , params )));
461
+ return CompletableFuture .supplyAsync (
462
+ () -> Either3 .forFirst (renameProvider .getPrepareRename (documentContext , params )),
463
+ executorService
464
+ );
415
465
}
416
466
417
467
@ Override
@@ -421,7 +471,10 @@ public CompletableFuture<WorkspaceEdit> rename(RenameParams params) {
421
471
return CompletableFuture .completedFuture (null );
422
472
}
423
473
424
- return CompletableFuture .supplyAsync (() -> renameProvider .getRename (documentContext , params ));
474
+ return CompletableFuture .supplyAsync (
475
+ () -> renameProvider .getRename (documentContext , params ),
476
+ executorService
477
+ );
425
478
}
426
479
427
480
public void reset () {
0 commit comments