From 92210e67ab819b792f112eb40619a983adb01e84 Mon Sep 17 00:00:00 2001 From: Victor Rubezhny Date: Tue, 16 May 2023 13:45:36 +0200 Subject: [PATCH] Make ICodeActionParticipant members default --- org.eclipse.lemminx/pom.xml | 2 +- .../codeaction/ICodeActionParticipant.java | 12 +++++++++-- .../ErrorParticipantLanguageServiceTest.java | 21 ++++++++++--------- pom.xml | 2 +- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/org.eclipse.lemminx/pom.xml b/org.eclipse.lemminx/pom.xml index bd4922808..c14a6c1d9 100644 --- a/org.eclipse.lemminx/pom.xml +++ b/org.eclipse.lemminx/pom.xml @@ -3,7 +3,7 @@ org.eclipse.lemminx lemminx-parent - 0.25.1-SNAPSHOT + 0.26.0-SNAPSHOT org.eclipse.lemminx diff --git a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/codeaction/ICodeActionParticipant.java b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/codeaction/ICodeActionParticipant.java index 76dbc9331..78783449c 100644 --- a/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/codeaction/ICodeActionParticipant.java +++ b/org.eclipse.lemminx/src/main/java/org/eclipse/lemminx/services/extensions/codeaction/ICodeActionParticipant.java @@ -13,6 +13,7 @@ package org.eclipse.lemminx.services.extensions.codeaction; import java.util.List; +import java.util.concurrent.CancellationException; import org.eclipse.lsp4j.CodeAction; import org.eclipse.lsp4j.jsonrpc.CancelChecker; @@ -32,8 +33,11 @@ public interface ICodeActionParticipant { * @param request the code action request. * @param codeActions list of code actions to fill. * @param cancelChecker the cancel checker. + * @throws CancellationException if the computation was cancelled */ - void doCodeAction(ICodeActionRequest request, List codeActions, CancelChecker cancelChecker); + default void doCodeAction(ICodeActionRequest request, List codeActions, CancelChecker cancelChecker) + throws CancellationException { + } /** * Collect the code action in the given codeActions for the given @@ -42,8 +46,12 @@ public interface ICodeActionParticipant { * @param request the code action request. * @param codeActions list of code actions to fill. * @param cancelChecker the cancel checker. + * @throws CancellationException if the computation was cancelled + * + * @since 0.26 */ - default void doCodeActionUnconditional(ICodeActionRequest request, List codeActions, CancelChecker cancelChecker) { + default void doCodeActionUnconditional(ICodeActionRequest request, List codeActions, + CancelChecker cancelChecker) throws CancellationException { } /** diff --git a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java index 4d8841322..0a8ee7c79 100644 --- a/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java +++ b/org.eclipse.lemminx/src/test/java/org/eclipse/lemminx/services/extensions/ErrorParticipantLanguageServiceTest.java @@ -113,20 +113,21 @@ static class ErrorParticipantLanguageService extends XMLLanguageService { public ErrorParticipantLanguageService() { super(); - this.registerCodeActionParticipant((request, codeActions, cancelChecker) -> { - throw new RuntimeException("This participant is broken"); - }); - this.registerCodeActionParticipant((request, codeActions, cancelChecker) -> { - // This Code Action Participant should add its code actions based on diagnostic code - Diagnostic diagnostic = request.getDiagnostic(); - if (diagnostic != null) { - codeActions.add(ca(diagnostic, te(0, 0, 0, 0, "a"))); + this.registerCodeActionParticipant(new ICodeActionParticipant() { + public void doCodeAction(ICodeActionRequest request, List codeActions, CancelChecker cancelChecker) { + throw new RuntimeException("This participant is broken"); } }); - this.registerCodeActionParticipant(new ICodeActionParticipant () { + this.registerCodeActionParticipant(new ICodeActionParticipant() { public void doCodeAction(ICodeActionRequest request, List codeActions, CancelChecker cancelChecker) { - // Nothing to do for a diagnostic, even if provided + // This Code Action Participant should add its code actions based on diagnostic code + Diagnostic diagnostic = request.getDiagnostic(); + if (diagnostic != null) { + codeActions.add(ca(diagnostic, te(0, 0, 0, 0, "a"))); + } } + }); + this.registerCodeActionParticipant(new ICodeActionParticipant () { public void doCodeActionUnconditional(ICodeActionRequest request, List codeActions, CancelChecker cancelChecker) { // This Code Action Participant should add its code actions independently of // diagnostic provided diff --git a/pom.xml b/pom.xml index ac44925f2..85c8d37ae 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 org.eclipse.lemminx lemminx-parent - 0.25.1-SNAPSHOT + 0.26.0-SNAPSHOT pom Eclipse LemMinX LemMinX is a XML Language Server Protocol (LSP), and can be used with any editor that supports LSP, to offer an outstanding XML editing experience