Skip to content

Commit 732d030

Browse files
committed
AOT gen data query codelens preference
1 parent c7ffd3e commit 732d030

File tree

8 files changed

+36
-7
lines changed

8 files changed

+36
-7
lines changed

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/Constants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,6 @@ public class Constants {
5656

5757
public static final String PREF_SYMBOLS_FROM_NEW_INDEX = "boot-java.java.symbols-from-new-index";
5858

59+
public static final String PREF_CODELENS_QUERY_METHODS = "boot-java.java.codelens-over-query-methods";
60+
5961
}

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ private void sendConfiguration() {
203203
javaSettings.put("symbols-from-new-index", preferenceStore.getBoolean(Constants.PREF_SYMBOLS_FROM_NEW_INDEX));
204204
javaSettings.put("completions", javaCompletionSettings);
205205
javaSettings.put("reconcilers", preferenceStore.getBoolean(Constants.PREF_JAVA_RECONCILE));
206+
javaSettings.put("codelens-over-query-methods", preferenceStore.getBoolean(Constants.PREF_CODELENS_QUERY_METHODS));
206207

207208
bootJavaObj.put("jpql", preferenceStore.getBoolean(Constants.PREF_JPQL));
208209
bootJavaObj.put("live-information", liveInformation);

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/prefs/BootJavaPreferencesPage.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ protected void createFieldEditors() {
5656
// Experimental Bean Injections completion in Java editor
5757
addField(new BooleanFieldEditor(Constants.PREF_COMPLETION_JAVA_INJECT_BEAN, "Inject Bean completion proposals in Java editor", fieldEditorParent));
5858

59+
// Show AOT generated query over Data Query methods
60+
addField(new BooleanFieldEditor(Constants.PREF_CODELENS_QUERY_METHODS, "Show CodeLens with AOT generated query over Data Query methods", fieldEditorParent));
61+
5962
// Experimental Beans tree
6063
addField(new BooleanFieldEditor(Constants.PREF_BEANS_STRUCTURE_TREE, "Beans structure tree in the outline view (experimental)", fieldEditorParent));
6164

eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/prefs/PrefsInitializer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public void initializeDefaultPreferences() {
6666
preferenceStore.setDefault(Constants.PREF_COMPLETION_JAVA_INJECT_BEAN, true);
6767
preferenceStore.setDefault(Constants.PREF_BEANS_STRUCTURE_TREE, true);
6868
preferenceStore.setDefault(Constants.PREF_SYMBOLS_FROM_NEW_INDEX, true);
69+
preferenceStore.setDefault(Constants.PREF_CODELENS_QUERY_METHODS, true);
6970
}
7071

7172
}

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/app/BootJavaConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,11 @@ public boolean isSymbolsFromNewIndexEnabled() {
224224
return Boolean.TRUE.equals(b);
225225
}
226226

227+
public boolean isEnabledCodeLensOverDataQueryMethods() {
228+
Boolean b = settings.getBoolean("boot-java", "java", "codelens-over-query-methods");
229+
return Boolean.TRUE.equals(b);
230+
}
231+
227232
public Settings getRawSettings() {
228233
return settings;
229234
}

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/BootJavaLanguageServerComponents.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ public BootJavaLanguageServerComponents(ApplicationContext appContext) {
182182

183183
spelSemanticTokens = appContext.getBean(SpelSemanticTokens.class);
184184
dataRepositoryAotMetadataService = appContext.getBean(DataRepositoryAotMetadataService.class);
185-
codeLensHandler = createCodeLensEngine(springIndex, projectFinder, server, spelSemanticTokens, dataRepositoryAotMetadataService, appContext.getBean(RewriteRefactorings.class));
185+
codeLensHandler = createCodeLensEngine(springIndex, projectFinder, server, spelSemanticTokens, dataRepositoryAotMetadataService,
186+
appContext.getBean(RewriteRefactorings.class), config);
186187

187188
highlightsEngine = createDocumentHighlightEngine(appContext);
188189
documents.onDocumentHighlight(highlightsEngine);
@@ -317,12 +318,13 @@ protected ReferencesHandler createReferenceHandler(SimpleLanguageServer server,
317318
}
318319

319320
protected BootJavaCodeLensEngine createCodeLensEngine(SpringMetamodelIndex springIndex, JavaProjectFinder projectFinder, SimpleLanguageServer server,
320-
SpelSemanticTokens spelSemanticTokens, DataRepositoryAotMetadataService repositoryAotMetadataService, RewriteRefactorings refactorings) {
321+
SpelSemanticTokens spelSemanticTokens, DataRepositoryAotMetadataService repositoryAotMetadataService, RewriteRefactorings refactorings,
322+
BootJavaConfig config) {
321323

322324
Collection<CodeLensProvider> codeLensProvider = new ArrayList<>();
323325
codeLensProvider.add(new WebfluxHandlerCodeLensProvider(springIndex));
324326
codeLensProvider.add(new CopilotCodeLensProvider(projectFinder, server, spelSemanticTokens));
325-
codeLensProvider.add(new DataRepositoryAotMetadataCodeLensProvider(projectFinder, repositoryAotMetadataService, refactorings));
327+
codeLensProvider.add(new DataRepositoryAotMetadataCodeLensProvider(projectFinder, repositoryAotMetadataService, refactorings, config));
326328

327329
return new BootJavaCodeLensEngine(this, codeLensProvider);
328330
}

headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/data/DataRepositoryAotMetadataCodeLensProvider.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.eclipse.lsp4j.jsonrpc.CancelChecker;
3131
import org.slf4j.Logger;
3232
import org.slf4j.LoggerFactory;
33+
import org.springframework.ide.vscode.boot.app.BootJavaConfig;
3334
import org.springframework.ide.vscode.boot.java.Annotations;
3435
import org.springframework.ide.vscode.boot.java.annotations.AnnotationHierarchies;
3536
import org.springframework.ide.vscode.boot.java.handlers.CodeLensProvider;
@@ -54,15 +55,21 @@ public class DataRepositoryAotMetadataCodeLensProvider implements CodeLensProvid
5455
private final DataRepositoryAotMetadataService repositoryMetadataService;
5556
private final JavaProjectFinder projectFinder;
5657
private final RewriteRefactorings refactorings;
58+
private final BootJavaConfig config;
5759

58-
public DataRepositoryAotMetadataCodeLensProvider(JavaProjectFinder projectFinder, DataRepositoryAotMetadataService repositoryMetadataService, RewriteRefactorings refactorings) {
60+
public DataRepositoryAotMetadataCodeLensProvider(JavaProjectFinder projectFinder, DataRepositoryAotMetadataService repositoryMetadataService,
61+
RewriteRefactorings refactorings, BootJavaConfig config) {
5962
this.projectFinder = projectFinder;
6063
this.repositoryMetadataService = repositoryMetadataService;
6164
this.refactorings = refactorings;
65+
this.config = config;
6266
}
6367

6468
@Override
6569
public void provideCodeLenses(CancelChecker cancelToken, TextDocument document, CompilationUnit cu, List<CodeLens> resultAccumulator) {
70+
if (!config.isEnabledCodeLensOverDataQueryMethods()) {
71+
return;
72+
}
6673
cu.accept(new ASTVisitor() {
6774
@Override
6875
public boolean visit(MethodDeclaration node) {
@@ -158,9 +165,12 @@ private List<CodeLens> createCodeLenses(MethodDeclaration node, TextDocument doc
158165
codeLenses.add(new CodeLens(range, impl, null));
159166

160167
if (!isQueryAnnotated) {
161-
Command queryTitle = new Command();
162-
queryTitle.setTitle(methodMetadata.get().getQueryStatement(metadata));
163-
codeLenses.add(new CodeLens(range, queryTitle, null));
168+
String queryStatement = methodMetadata.get().getQueryStatement(metadata);
169+
if (queryStatement != null) {
170+
Command queryTitle = new Command();
171+
queryTitle.setTitle(queryStatement);
172+
codeLenses.add(new CodeLens(range, queryTitle, null));
173+
}
164174
}
165175
}
166176
} catch (BadLocationException e) {

vscode-extensions/vscode-spring-boot/package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,11 @@
383383
"default": true,
384384
"description": "Generate workspace symbols from index (experimental)"
385385
},
386+
"boot-java.java.codelens-over-query-methods": {
387+
"type": "boolean",
388+
"default": true,
389+
"description": "Show CodeLens with AOT generated query over Data Query methods"
390+
},
386391
"boot-java.remote-apps": {
387392
"type": "array",
388393
"items": {

0 commit comments

Comments
 (0)