Skip to content

Commit c13e9ca

Browse files
Use LSP4J 0.20.0 (#2417)
* Onboard legacy TypeHierarchy API * Bump versions & adopt new APIs (eg remap globPatterns to String) * Remove custom inlayHints, use standard * Declare null notebook service
1 parent 985a517 commit c13e9ca

31 files changed

Lines changed: 880 additions & 387 deletions

org.eclipse.jdt.ls.core/META-INF/MANIFEST.MF

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@ Require-Bundle: org.eclipse.core.runtime;bundle-version="3.12.0",
2525
org.eclipse.jdt.core.manipulation;bundle-version="1.8.0",
2626
com.google.gson;bundle-version="2.7.0",
2727
org.apache.commons.lang3;bundle-version="3.1.0",
28-
org.eclipse.lsp4j;bundle-version="[0.12.0,0.13.0)",
29-
org.eclipse.lsp4j.jsonrpc;bundle-version="[0.12.0,0.13.0)",
28+
org.eclipse.lsp4j;bundle-version="[0.20.0.0,0.21.0)",
29+
org.eclipse.lsp4j.jsonrpc;bundle-version="[0.20.0,0.21.0)",
3030
org.eclipse.xtext.xbase.lib,
3131
org.eclipse.core.filesystem;bundle-version="1.7.0",
3232
org.eclipse.jdt.apt.pluggable.core;bundle-version="1.2.0";resolution:=optional,
3333
org.eclipse.m2e.apt.core;bundle-version="1.3.0";resolution:=optional
34-
Export-Package: org.eclipse.jdt.ls.core.internal;x-friends:="org.eclipse.jdt.ls.tests,org.eclipse.jdt.ls.tests.syntaxserver",
34+
Export-Package: org.eclipse.jdt.ls.core.contentassist;x-friends:="org.eclipse.jdt.ls.tests",
35+
org.eclipse.jdt.ls.core.internal;x-friends:="org.eclipse.jdt.ls.tests,org.eclipse.jdt.ls.tests.syntaxserver",
3536
org.eclipse.jdt.ls.core.internal.cleanup;x-friends:="org.eclipse.jdt.ls.tests",
3637
org.eclipse.jdt.ls.core.internal.codemanipulation;x-friends:="org.eclipse.jdt.ls.tests",
3738
org.eclipse.jdt.ls.core.internal.commands;x-friends:="org.eclipse.jdt.ls.tests",
@@ -46,20 +47,19 @@ Export-Package: org.eclipse.jdt.ls.core.internal;x-friends:="org.eclipse.jdt.ls.
4647
org.eclipse.jdt.ls.core.internal.corext.util;x-internal:=true,
4748
org.eclipse.jdt.ls.core.internal.corrections;x-internal:=true,
4849
org.eclipse.jdt.ls.core.internal.corrections.proposals;x-internal:=true,
50+
org.eclipse.jdt.ls.core.internal.framework.protobuf;x-friends:="org.eclipse.jdt.ls.tests",
4951
org.eclipse.jdt.ls.core.internal.handlers;x-friends:="org.eclipse.jdt.ls.tests",
5052
org.eclipse.jdt.ls.core.internal.hover;x-friends:="org.eclipse.jdt.ls.tests",
5153
org.eclipse.jdt.ls.core.internal.javadoc;x-friends:="org.eclipse.jdt.ls.tests",
5254
org.eclipse.jdt.ls.core.internal.lsp;x-friends:="org.eclipse.jdt.ls.tests",
5355
org.eclipse.jdt.ls.core.internal.managers;x-friends:="org.eclipse.jdt.ls.tests,org.eclipse.jdt.ls.tests.syntaxserver",
54-
org.eclipse.jdt.ls.core.internal.framework.protobuf;x-friends:="org.eclipse.jdt.ls.tests",
5556
org.eclipse.jdt.ls.core.internal.preferences;x-friends:="org.eclipse.jdt.ls.tests,org.eclipse.jdt.ls.tests.syntaxserver",
5657
org.eclipse.jdt.ls.core.internal.semantictokens;x-friends:="org.eclipse.jdt.ls.tests",
5758
org.eclipse.jdt.ls.core.internal.syntaxserver;x-friends:="org.eclipse.jdt.ls.tests.syntaxserver",
5859
org.eclipse.jdt.ls.core.internal.text.correction;x-friends:="org.eclipse.jdt.ls.tests",
59-
org.eclipse.jdt.ls.core.contentassist;x-friends:="org.eclipse.jdt.ls.tests",
6060
org.eclipse.jdt.ls.internal.gradle.checksums;x-friends:="org.eclipse.jdt.ls.tests",
61-
org.eclipse.lsp4j.proposed;x-friends:="org.eclipse.jdt.ls.tests",
62-
org.eclipse.lsp4j.extended;x-friends:="org.eclipse.jdt.ls.tests"
61+
org.eclipse.lsp4j.extended;x-friends:="org.eclipse.jdt.ls.tests",
62+
org.eclipse.lsp4j.legacy.typeHierarchy;x-friends:="org.eclipse.jdt.ls.tests"
6363
Bundle-ClassPath: lib/jsoup-1.14.2.jar,
6464
lib/remark-1.2.0.jar,
6565
.

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/JDTDelegateCommandHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@
3636
import org.eclipse.jdt.ls.core.internal.handlers.PasteEventHandler.PasteEventParams;
3737
import org.eclipse.jdt.ls.core.internal.handlers.ResolveSourceMappingHandler;
3838
import org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter;
39-
import org.eclipse.lsp4j.ResolveTypeHierarchyItemParams;
4039
import org.eclipse.lsp4j.SymbolInformation;
4140
import org.eclipse.lsp4j.TextDocumentPositionParams;
42-
import org.eclipse.lsp4j.TypeHierarchyDirection;
43-
import org.eclipse.lsp4j.TypeHierarchyItem;
44-
import org.eclipse.lsp4j.TypeHierarchyParams;
4541
import org.eclipse.lsp4j.WorkspaceEdit;
42+
import org.eclipse.lsp4j.legacy.typeHierarchy.ResolveTypeHierarchyItemParams;
43+
import org.eclipse.lsp4j.legacy.typeHierarchy.TypeHierarchyDirection;
44+
import org.eclipse.lsp4j.legacy.typeHierarchy.TypeHierarchyItem;
45+
import org.eclipse.lsp4j.legacy.typeHierarchy.TypeHierarchyParams;
4646

4747
public class JDTDelegateCommandHandler implements IDelegateCommandHandler {
4848

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/JavaClientConnection.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import java.util.concurrent.TimeUnit;
2121
import java.util.concurrent.TimeoutException;
2222

23-
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
2423
import org.eclipse.jdt.ls.core.internal.handlers.LogHandler;
2524
import org.eclipse.jdt.ls.core.internal.lsp.ExecuteCommandProposedClient;
2625
import org.eclipse.lsp4j.ApplyWorkspaceEditParams;
@@ -37,7 +36,6 @@
3736
import org.eclipse.lsp4j.UnregistrationParams;
3837
import org.eclipse.lsp4j.WorkspaceEdit;
3938
import org.eclipse.lsp4j.jsonrpc.services.JsonNotification;
40-
import org.eclipse.lsp4j.jsonrpc.services.JsonRequest;
4139
import org.eclipse.lsp4j.services.LanguageClient;
4240

4341
import com.google.common.collect.ImmutableList;
@@ -76,12 +74,6 @@ public interface JavaLanguageClient extends LanguageClient, ExecuteCommandPropos
7674
@JsonNotification("language/progressReport")
7775
void sendProgressReport(ProgressReport report);
7876

79-
// TODO : remove this method when LSP4J will provide InlayHint support. See
80-
// https://github.com/eclipse/lsp4j/issues/570
81-
@JsonRequest("workspace/inlayHint/refresh")
82-
default CompletableFuture<Void> refreshInlayHints() {
83-
throw new UnsupportedOperationException();
84-
}
8577
}
8678

8779
private final LogHandler logHandler;
@@ -221,8 +213,6 @@ public List<Object> configuration(ConfigurationParams configurationParams) {
221213
return this.client.configuration(configurationParams).join();
222214
}
223215

224-
// TODO : remove this method when LSP4J will provide InlayHint support. See
225-
// https://github.com/eclipse/lsp4j/issues/570
226216
public CompletableFuture<Void> refreshInlayHints() {
227217
return this.client.refreshInlayHints();
228218
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/commands/TypeHierarchyCommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,11 @@
3636
import org.eclipse.lsp4j.Location;
3737
import org.eclipse.lsp4j.Position;
3838
import org.eclipse.lsp4j.Range;
39-
import org.eclipse.lsp4j.ResolveTypeHierarchyItemParams;
4039
import org.eclipse.lsp4j.TextDocumentIdentifier;
41-
import org.eclipse.lsp4j.TypeHierarchyDirection;
42-
import org.eclipse.lsp4j.TypeHierarchyItem;
43-
import org.eclipse.lsp4j.TypeHierarchyParams;
40+
import org.eclipse.lsp4j.legacy.typeHierarchy.ResolveTypeHierarchyItemParams;
41+
import org.eclipse.lsp4j.legacy.typeHierarchy.TypeHierarchyDirection;
42+
import org.eclipse.lsp4j.legacy.typeHierarchy.TypeHierarchyItem;
43+
import org.eclipse.lsp4j.legacy.typeHierarchy.TypeHierarchyParams;
4444

4545
public class TypeHierarchyCommand {
4646

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/InlayHintVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@
4040
import org.eclipse.jdt.core.dom.TypeLiteral;
4141
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
4242
import org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager;
43+
import org.eclipse.lsp4j.InlayHint;
4344
import org.eclipse.lsp4j.Position;
4445
import org.eclipse.lsp4j.jsonrpc.messages.Either;
45-
import org.eclipse.lsp4j.proposed.InlayHint;
4646

4747
import com.google.common.base.Objects;
4848

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/InlayHintsHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
2727
import org.eclipse.jdt.ls.core.internal.JobHelpers;
2828
import org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager;
29-
import org.eclipse.lsp4j.proposed.InlayHint;
30-
import org.eclipse.lsp4j.proposed.InlayHintParams;
29+
import org.eclipse.lsp4j.InlayHint;
30+
import org.eclipse.lsp4j.InlayHintParams;
3131

3232
public class InlayHintsHandler {
3333

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/JDTLanguageServer.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,11 @@
119119
import org.eclipse.lsp4j.InitializeParams;
120120
import org.eclipse.lsp4j.InitializeResult;
121121
import org.eclipse.lsp4j.InitializedParams;
122+
import org.eclipse.lsp4j.InlayHint;
123+
import org.eclipse.lsp4j.InlayHintParams;
122124
import org.eclipse.lsp4j.Location;
123125
import org.eclipse.lsp4j.LocationLink;
126+
import org.eclipse.lsp4j.PrepareRenameDefaultBehavior;
124127
import org.eclipse.lsp4j.PrepareRenameParams;
125128
import org.eclipse.lsp4j.PrepareRenameResult;
126129
import org.eclipse.lsp4j.Range;
@@ -139,16 +142,16 @@
139142
import org.eclipse.lsp4j.TypeDefinitionParams;
140143
import org.eclipse.lsp4j.WillSaveTextDocumentParams;
141144
import org.eclipse.lsp4j.WorkspaceEdit;
145+
import org.eclipse.lsp4j.WorkspaceSymbol;
142146
import org.eclipse.lsp4j.WorkspaceSymbolParams;
143147
import org.eclipse.lsp4j.extended.ProjectBuildParams;
144148
import org.eclipse.lsp4j.extended.ProjectConfigurationsUpdateParam;
145149
import org.eclipse.lsp4j.jsonrpc.CompletableFutures;
146150
import org.eclipse.lsp4j.jsonrpc.messages.Either;
151+
import org.eclipse.lsp4j.jsonrpc.messages.Either3;
147152
import org.eclipse.lsp4j.jsonrpc.services.JsonDelegate;
148-
import org.eclipse.lsp4j.proposed.InlayHint;
149-
import org.eclipse.lsp4j.proposed.InlayHintParams;
150-
import org.eclipse.lsp4j.proposed.InlayHintProvider;
151153
import org.eclipse.lsp4j.services.LanguageServer;
154+
import org.eclipse.lsp4j.services.NotebookDocumentService;
152155
import org.eclipse.lsp4j.services.TextDocumentService;
153156
import org.eclipse.lsp4j.services.WorkspaceService;
154157

@@ -157,7 +160,7 @@
157160
*
158161
*/
159162
public class JDTLanguageServer extends BaseJDTLanguageServer implements LanguageServer, TextDocumentService, WorkspaceService,
160-
JavaProtocolExtensions, InlayHintProvider {
163+
JavaProtocolExtensions {
161164

162165
public static final String JAVA_LSP_JOIN_ON_COMPLETION = "java.lsp.joinOnCompletion";
163166
public static final String JAVA_LSP_INITIALIZE_WORKSPACE = "java.lsp.initializeWorkspace";
@@ -482,10 +485,10 @@ public JavaProtocolExtensions getJavaExtensions() {
482485
* @see org.eclipse.lsp4j.services.WorkspaceService#symbol(org.eclipse.lsp4j.WorkspaceSymbolParams)
483486
*/
484487
@Override
485-
public CompletableFuture<List<? extends SymbolInformation>> symbol(WorkspaceSymbolParams params) {
488+
public CompletableFuture<Either<List<? extends SymbolInformation>, List<? extends WorkspaceSymbol>>> symbol(WorkspaceSymbolParams params) {
486489
logInfo(">> workspace/symbol");
487490
return computeAsync((monitor) -> {
488-
return WorkspaceSymbolHandler.search(params.getQuery(), monitor);
491+
return Either.forLeft(WorkspaceSymbolHandler.search(params.getQuery(), monitor));
489492
});
490493
}
491494

@@ -788,12 +791,12 @@ public CompletableFuture<List<? extends TextEdit>> onTypeFormatting(DocumentOnTy
788791
* @see org.eclipse.lsp4j.services.TextDocumentService#prepareRename(org.eclipse.lsp4j.PrepareRenameParams)
789792
*/
790793
@Override
791-
public CompletableFuture<Either<Range, PrepareRenameResult>> prepareRename(PrepareRenameParams params) {
794+
public CompletableFuture<Either3<Range, PrepareRenameResult, PrepareRenameDefaultBehavior>> prepareRename(PrepareRenameParams params) {
792795
logInfo(">> document/prepareRename");
793796
PrepareRenameHandler handler = new PrepareRenameHandler(preferenceManager);
794797
return computeAsync((monitor) -> {
795798
waitForLifecycleJobs(monitor);
796-
return handler.prepareRename(params, monitor);
799+
return Either3.forLeft3(handler.prepareRename(params, monitor));
797800
});
798801
}
799802

@@ -1112,4 +1115,11 @@ private void waitForLifecycleJobs(IProgressMonitor monitor) {
11121115
JobHelpers.waitForJobs(DocumentLifeCycleHandler.DOCUMENT_LIFE_CYCLE_JOBS, monitor);
11131116
}
11141117

1118+
/* (non-Javadoc)
1119+
* @see org.eclipse.lsp4j.services.LanguageServer#getNotebookDocumentService()
1120+
*/
1121+
@Override
1122+
public NotebookDocumentService getNotebookDocumentService() {
1123+
return null;
1124+
}
11151125
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/handlers/PrepareRenameHandler.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,9 @@
3030
import org.eclipse.jdt.ls.core.internal.corext.refactoring.RefactoringAvailabilityTester;
3131
import org.eclipse.jdt.ls.core.internal.corrections.InnovationContext;
3232
import org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager;
33-
import org.eclipse.lsp4j.PrepareRenameResult;
3433
import org.eclipse.lsp4j.Range;
3534
import org.eclipse.lsp4j.TextDocumentPositionParams;
3635
import org.eclipse.lsp4j.jsonrpc.ResponseErrorException;
37-
import org.eclipse.lsp4j.jsonrpc.messages.Either;
3836
import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;
3937
import org.eclipse.lsp4j.jsonrpc.messages.ResponseErrorCode;
4038

@@ -46,8 +44,7 @@ public PrepareRenameHandler(PreferenceManager preferenceManager) {
4644
this.preferenceManager = preferenceManager;
4745
}
4846

49-
public Either<Range, PrepareRenameResult> prepareRename(TextDocumentPositionParams params, IProgressMonitor monitor) {
50-
47+
public Range prepareRename(TextDocumentPositionParams params, IProgressMonitor monitor) {
5148
final ICompilationUnit unit = JDTUtils.resolveCompilationUnit(params.getTextDocument().getUri());
5249
if (unit != null) {
5350
try {
@@ -62,7 +59,7 @@ public Either<Range, PrepareRenameResult> prepareRename(TextDocumentPositionPara
6259
if (occurrences != null) {
6360
for (OccurrenceLocation loc : occurrences) {
6461
if (monitor.isCanceled()) {
65-
return Either.forLeft(new Range());
62+
return new Range();
6663
}
6764
if (loc.getOffset() <= offset && loc.getOffset() + loc.getLength() >= offset) {
6865
// https://github.com/redhat-developer/vscode-java/issues/2805
@@ -80,7 +77,7 @@ public Either<Range, PrepareRenameResult> prepareRename(TextDocumentPositionPara
8077
ASTNode node = context.getCoveredNode();
8178
// Rename package is not fully supported yet.
8279
if (!isBinaryOrPackage(node)) {
83-
return Either.forLeft(JDTUtils.toRange(unit, loc.getOffset(), loc.getLength()));
80+
return JDTUtils.toRange(unit, loc.getOffset(), loc.getLength());
8481
}
8582
}
8683
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/managers/StandardProjectsManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@
9292
import org.eclipse.lsp4j.MessageType;
9393
import org.eclipse.lsp4j.TextDocumentIdentifier;
9494
import org.eclipse.lsp4j.WatchKind;
95+
import org.eclipse.lsp4j.jsonrpc.messages.Either;
9596
import org.xml.sax.InputSource;
9697

9798
public class StandardProjectsManager extends ProjectsManager {
@@ -507,14 +508,13 @@ public List<FileSystemWatcher> registerWatchers() {
507508
}
508509
patterns.addAll(sources.stream().map(p -> ResourceUtils.toGlobPattern(p, false)).collect(Collectors.toList()));
509510
for (String pattern : patterns) {
510-
FileSystemWatcher watcher = new FileSystemWatcher(pattern);
511+
FileSystemWatcher watcher = new FileSystemWatcher(Either.forLeft(pattern));
511512
fileWatchers.add(watcher);
512513
}
513514
// Watch on project root folders.
514515
for (IProject project : projects) {
515516
if (ProjectUtils.isVisibleProject(project) && project.exists()) {
516-
FileSystemWatcher watcher = new FileSystemWatcher(
517-
ResourceUtils.toGlobPattern(project.getLocation(), false), WatchKind.Delete);
517+
FileSystemWatcher watcher = new FileSystemWatcher(Either.forLeft(ResourceUtils.toGlobPattern(project.getLocation(), false)), WatchKind.Delete);
518518
fileWatchers.add(watcher);
519519
}
520520
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/preferences/ClientPreferences.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -287,11 +287,6 @@ public boolean isSupportsCompletionDocumentationMarkdown() {
287287
//@formatter:on
288288
}
289289

290-
@Deprecated
291-
public boolean isWorkspaceEditResourceChangesSupported() {
292-
return capabilities.getWorkspace() != null && capabilities.getWorkspace().getWorkspaceEdit() != null && isTrue(capabilities.getWorkspace().getWorkspaceEdit().getResourceChanges());
293-
}
294-
295290
public boolean isResourceOperationSupported() {
296291
//@formatter:off
297292
return capabilities.getWorkspace() != null

0 commit comments

Comments
 (0)