Skip to content

Commit cc5a6d6

Browse files
committed
Inform clients when Preview support enabled for an incompatible version.
Signed-off-by: Roland Grunberg <[email protected]>
1 parent 0375248 commit cc5a6d6

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ public enum EventType {
4040
/**
4141
* Source attachments have been updated for some jar libraries.
4242
*/
43-
SourceInvalidated(500);
43+
SourceInvalidated(500),
44+
45+
/**
46+
* Incompatibility between release version and preview features
47+
*/
48+
PreviewFeaturesNotAllowed(600);
4449

4550
private final int value;
4651

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ public BuildWorkspaceStatus buildWorkspace(boolean forceReBuild, IProgressMonito
8080
if (errors.isEmpty()) {
8181
return BuildWorkspaceStatus.SUCCEED;
8282
} else {
83+
WorkspaceDiagnosticsHandler.checkPreviewFeatureValidity(problemMarkers);
8384
// for default project, problem markers aren't sent. Add logs here for trouble shooting.
8485
String newline = System.getProperty("line.separator");
8586
logError("Error occured while building workspace. Details: " + newline + String.join(newline, errors));

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import org.eclipse.jdt.core.JavaCore;
4545
import org.eclipse.jdt.core.JavaModelException;
4646
import org.eclipse.jdt.core.compiler.IProblem;
47+
import org.eclipse.jdt.ls.core.internal.EventNotification;
48+
import org.eclipse.jdt.ls.core.internal.EventType;
4749
import org.eclipse.jdt.ls.core.internal.JDTUtils;
4850
import org.eclipse.jdt.ls.core.internal.JavaClientConnection;
4951
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
@@ -62,6 +64,9 @@
6264
import org.eclipse.m2e.core.internal.IMavenConstants;
6365
import org.eclipse.m2e.core.internal.Messages;
6466

67+
import com.google.gson.JsonArray;
68+
import com.google.gson.JsonObject;
69+
6570
/**
6671
* Listens to the resource change events and converts {@link IMarker}s to {@link Diagnostic}s.
6772
*
@@ -342,6 +347,31 @@ private void publishDiagnostics(List<IMarker> markers) {
342347
connection.publishDiagnostics(new PublishDiagnosticsParams(ResourceUtils.toClientUri(uri), diagnostics));
343348
}
344349
}
350+
351+
checkPreviewFeatureValidity(markers);
352+
}
353+
354+
public static void checkPreviewFeatureValidity(List<IMarker> problemMarkers) {
355+
// Preview feature support enabled on incompatible release version
356+
List<IMarker> previewFeatureMarkers = problemMarkers.stream().filter(m -> m.getAttribute(IJavaModelMarker.ID, 0) == IProblem.PreviewFeaturesNotAllowed).collect(Collectors.toList());
357+
JsonArray errorList = new JsonArray();
358+
if (!previewFeatureMarkers.isEmpty()) {
359+
for (IMarker marker : previewFeatureMarkers) {
360+
// error message mentions invalid release level, and the supported level
361+
String errorMessage = ResourceUtils.getMessage(marker);
362+
String projectUri = JDTUtils.getFileURI(marker.getResource().getProject());
363+
JsonObject entry = new JsonObject();
364+
entry.addProperty("uri", projectUri);
365+
entry.addProperty("message", errorMessage);
366+
if (!errorList.contains(entry)) {
367+
errorList.add(entry);
368+
}
369+
}
370+
if (JavaLanguageServerPlugin.getProjectsManager().getConnection() != null) {
371+
EventNotification prevFeatNotAllowedNotification = new EventNotification().withType(EventType.PreviewFeaturesNotAllowed).withData(errorList);
372+
JavaLanguageServerPlugin.getProjectsManager().getConnection().sendEventNotification(prevFeatNotAllowedNotification);
373+
}
374+
}
345375
}
346376

347377
@Deprecated

0 commit comments

Comments
 (0)