Skip to content

Commit 9b636d7

Browse files
committed
Use LSP4J 0.19.0
* Bump versions & adopt new APIs (eg remap globPatterns to String) * Remove custom text hierarchy commands; use LSP standards * Remove custom inlayHints, use standard * Declare null notebook service
1 parent 59af6c6 commit 9b636d7

25 files changed

Lines changed: 172 additions & 537 deletions

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ 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.15.0",
29+
org.eclipse.lsp4j.jsonrpc;bundle-version="0.15.0",
3030
org.eclipse.xtend.lib,
3131
org.eclipse.xtext.xbase.lib,
3232
org.eclipse.core.filesystem;bundle-version="1.7.0",
@@ -59,7 +59,6 @@ Export-Package: org.eclipse.jdt.ls.core.internal;x-friends:="org.eclipse.jdt.ls.
5959
org.eclipse.jdt.ls.core.internal.text.correction;x-friends:="org.eclipse.jdt.ls.tests",
6060
org.eclipse.jdt.ls.core.contentassist;x-friends:="org.eclipse.jdt.ls.tests",
6161
org.eclipse.jdt.ls.internal.gradle.checksums;x-friends:="org.eclipse.jdt.ls.tests",
62-
org.eclipse.lsp4j.proposed;x-friends:="org.eclipse.jdt.ls.tests",
6362
org.eclipse.lsp4j.extended;x-friends:="org.eclipse.jdt.ls.tests"
6463
Bundle-ClassPath: lib/jsoup-1.14.2.jar,
6564
lib/remark-1.2.0.jar,

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

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.eclipse.jdt.ls.core.internal.commands.ProjectCommand;
2727
import org.eclipse.jdt.ls.core.internal.commands.ProjectCommand.ClasspathOptions;
2828
import org.eclipse.jdt.ls.core.internal.commands.SourceAttachmentCommand;
29-
import org.eclipse.jdt.ls.core.internal.commands.TypeHierarchyCommand;
3029
import org.eclipse.jdt.ls.core.internal.framework.protobuf.ProtobufSupport;
3130
import org.eclipse.jdt.ls.core.internal.handlers.BundleUtils;
3231
import org.eclipse.jdt.ls.core.internal.handlers.CompletionHandler;
@@ -36,12 +35,7 @@
3635
import org.eclipse.jdt.ls.core.internal.handlers.PasteEventHandler.PasteEventParams;
3736
import org.eclipse.jdt.ls.core.internal.handlers.ResolveSourceMappingHandler;
3837
import org.eclipse.jdt.ls.core.internal.managers.GradleProjectImporter;
39-
import org.eclipse.lsp4j.ResolveTypeHierarchyItemParams;
4038
import org.eclipse.lsp4j.SymbolInformation;
41-
import org.eclipse.lsp4j.TextDocumentPositionParams;
42-
import org.eclipse.lsp4j.TypeHierarchyDirection;
43-
import org.eclipse.lsp4j.TypeHierarchyItem;
44-
import org.eclipse.lsp4j.TypeHierarchyParams;
4539
import org.eclipse.lsp4j.WorkspaceEdit;
4640

4741
public class JDTDelegateCommandHandler implements IDelegateCommandHandler {
@@ -103,29 +97,6 @@ public Object executeCommand(String commandId, List<Object> arguments, IProgress
10397
projectNames = (ArrayList<String>) arguments.get(1);
10498
}
10599
return ResolveSourceMappingHandler.resolveStackTraceLocation((String) arguments.get(0), projectNames);
106-
case "java.navigate.resolveTypeHierarchy":
107-
TypeHierarchyCommand resolveTypeHierarchyCommand = new TypeHierarchyCommand();
108-
TypeHierarchyItem toResolve = JSONUtility.toModel(arguments.get(0), TypeHierarchyItem.class);
109-
TypeHierarchyDirection resolveDirection = TypeHierarchyDirection.forValue(JSONUtility.toModel(arguments.get(1), Integer.class));
110-
int resolveDepth = JSONUtility.toModel(arguments.get(2), Integer.class);
111-
ResolveTypeHierarchyItemParams resolveParams = new ResolveTypeHierarchyItemParams();
112-
resolveParams.setItem(toResolve);
113-
resolveParams.setDirection(resolveDirection);
114-
resolveParams.setResolve(resolveDepth);
115-
TypeHierarchyItem resolvedItem = resolveTypeHierarchyCommand.resolveTypeHierarchy(resolveParams, monitor);
116-
return resolvedItem;
117-
case "java.navigate.openTypeHierarchy":
118-
TypeHierarchyCommand typeHierarchyCommand = new TypeHierarchyCommand();
119-
TypeHierarchyParams params = new TypeHierarchyParams();
120-
TextDocumentPositionParams textParams = JSONUtility.toModel(arguments.get(0), TextDocumentPositionParams.class);
121-
TypeHierarchyDirection direction = TypeHierarchyDirection.forValue(JSONUtility.toModel(arguments.get(1), Integer.class));
122-
int resolve = JSONUtility.toModel(arguments.get(2), Integer.class);
123-
params.setResolve(resolve);
124-
params.setDirection(direction);
125-
params.setTextDocument(textParams.getTextDocument());
126-
params.setPosition(textParams.getPosition());
127-
TypeHierarchyItem typeHierarchyItem = typeHierarchyCommand.typeHierarchy(params, monitor);
128-
return typeHierarchyItem;
129100
case "java.project.upgradeGradle":
130101
String projectUri = (String) arguments.get(0);
131102
String gradleVersion = arguments.size() > 1 ? (String) arguments.get(1) : null;

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

Lines changed: 0 additions & 8 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;

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: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,11 @@
117117
import org.eclipse.lsp4j.InitializeParams;
118118
import org.eclipse.lsp4j.InitializeResult;
119119
import org.eclipse.lsp4j.InitializedParams;
120+
import org.eclipse.lsp4j.InlayHint;
121+
import org.eclipse.lsp4j.InlayHintParams;
120122
import org.eclipse.lsp4j.Location;
121123
import org.eclipse.lsp4j.LocationLink;
124+
import org.eclipse.lsp4j.PrepareRenameDefaultBehavior;
122125
import org.eclipse.lsp4j.PrepareRenameParams;
123126
import org.eclipse.lsp4j.PrepareRenameResult;
124127
import org.eclipse.lsp4j.Range;
@@ -135,18 +138,22 @@
135138
import org.eclipse.lsp4j.TextDocumentIdentifier;
136139
import org.eclipse.lsp4j.TextEdit;
137140
import org.eclipse.lsp4j.TypeDefinitionParams;
141+
import org.eclipse.lsp4j.TypeHierarchyItem;
142+
import org.eclipse.lsp4j.TypeHierarchyPrepareParams;
143+
import org.eclipse.lsp4j.TypeHierarchySubtypesParams;
144+
import org.eclipse.lsp4j.TypeHierarchySupertypesParams;
138145
import org.eclipse.lsp4j.WillSaveTextDocumentParams;
139146
import org.eclipse.lsp4j.WorkspaceEdit;
147+
import org.eclipse.lsp4j.WorkspaceSymbol;
140148
import org.eclipse.lsp4j.WorkspaceSymbolParams;
141149
import org.eclipse.lsp4j.extended.ProjectBuildParams;
142150
import org.eclipse.lsp4j.extended.ProjectConfigurationsUpdateParam;
143151
import org.eclipse.lsp4j.jsonrpc.CompletableFutures;
144152
import org.eclipse.lsp4j.jsonrpc.messages.Either;
153+
import org.eclipse.lsp4j.jsonrpc.messages.Either3;
145154
import org.eclipse.lsp4j.jsonrpc.services.JsonDelegate;
146-
import org.eclipse.lsp4j.proposed.InlayHint;
147-
import org.eclipse.lsp4j.proposed.InlayHintParams;
148-
import org.eclipse.lsp4j.proposed.InlayHintProvider;
149155
import org.eclipse.lsp4j.services.LanguageServer;
156+
import org.eclipse.lsp4j.services.NotebookDocumentService;
150157
import org.eclipse.lsp4j.services.TextDocumentService;
151158
import org.eclipse.lsp4j.services.WorkspaceService;
152159

@@ -155,7 +162,7 @@
155162
*
156163
*/
157164
public class JDTLanguageServer extends BaseJDTLanguageServer implements LanguageServer, TextDocumentService, WorkspaceService,
158-
JavaProtocolExtensions, InlayHintProvider {
165+
JavaProtocolExtensions {
159166

160167
public static final String JAVA_LSP_JOIN_ON_COMPLETION = "java.lsp.joinOnCompletion";
161168
public static final String JAVA_LSP_INITIALIZE_WORKSPACE = "java.lsp.initializeWorkspace";
@@ -480,10 +487,10 @@ public JavaProtocolExtensions getJavaExtensions() {
480487
* @see org.eclipse.lsp4j.services.WorkspaceService#symbol(org.eclipse.lsp4j.WorkspaceSymbolParams)
481488
*/
482489
@Override
483-
public CompletableFuture<List<? extends SymbolInformation>> symbol(WorkspaceSymbolParams params) {
490+
public CompletableFuture<Either<List<? extends SymbolInformation>, List<? extends WorkspaceSymbol>>> symbol(WorkspaceSymbolParams params) {
484491
logInfo(">> workspace/symbol");
485492
return computeAsync((monitor) -> {
486-
return WorkspaceSymbolHandler.search(params.getQuery(), monitor);
493+
return Either.forLeft(WorkspaceSymbolHandler.search(params.getQuery(), monitor));
487494
});
488495
}
489496

@@ -792,12 +799,12 @@ public CompletableFuture<List<? extends TextEdit>> onTypeFormatting(DocumentOnTy
792799
* @see org.eclipse.lsp4j.services.TextDocumentService#prepareRename(org.eclipse.lsp4j.PrepareRenameParams)
793800
*/
794801
@Override
795-
public CompletableFuture<Either<Range, PrepareRenameResult>> prepareRename(PrepareRenameParams params) {
802+
public CompletableFuture<Either3<Range, PrepareRenameResult, PrepareRenameDefaultBehavior>> prepareRename(PrepareRenameParams params) {
796803
logInfo(">> document/prepareRename");
797804
PrepareRenameHandler handler = new PrepareRenameHandler(preferenceManager);
798805
return computeAsync((monitor) -> {
799806
waitForLifecycleJobs(monitor);
800-
return handler.prepareRename(params, monitor);
807+
return Either3.forLeft3(handler.prepareRename(params, monitor));
801808
});
802809
}
803810

@@ -1110,4 +1117,26 @@ private void waitForLifecycleJobs(IProgressMonitor monitor) {
11101117
JobHelpers.waitForJobs(DocumentLifeCycleHandler.DOCUMENT_LIFE_CYCLE_JOBS, monitor);
11111118
}
11121119

1120+
/* (non-Javadoc)
1121+
* @see org.eclipse.lsp4j.services.LanguageServer#getNotebookDocumentService()
1122+
*/
1123+
@Override
1124+
public NotebookDocumentService getNotebookDocumentService() {
1125+
return null;
1126+
}
1127+
1128+
@Override
1129+
public CompletableFuture<List<TypeHierarchyItem>> prepareTypeHierarchy(TypeHierarchyPrepareParams params) {
1130+
return computeAsyncWithClientProgress(monitor -> new TypeHierarchyHandler().prepareTypeHierarchy(params, monitor));
1131+
}
1132+
1133+
@Override
1134+
public CompletableFuture<List<TypeHierarchyItem>> typeHierarchySubtypes(TypeHierarchySubtypesParams params) {
1135+
return computeAsyncWithClientProgress(monitor -> new TypeHierarchyHandler().callHierarchySubtypes(params, monitor));
1136+
}
1137+
1138+
@Override
1139+
public CompletableFuture<List<TypeHierarchyItem>> typeHierarchySupertypes(TypeHierarchySupertypesParams params) {
1140+
return computeAsyncWithClientProgress(monitor -> new TypeHierarchyHandler().callHierarchySupertypes(params, monitor));
1141+
}
11131142
}

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
}

0 commit comments

Comments
 (0)