Skip to content

Commit c56f45c

Browse files
committed
WIP
Signed-off-by: aboyko <[email protected]>
1 parent e7e2015 commit c56f45c

File tree

5 files changed

+44
-5
lines changed

5 files changed

+44
-5
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2024 Broadcom, Inc.
2+
* Copyright (c) 2024, 2025 Broadcom, Inc.
33
* All rights reserved. This program and the accompanying materials
44
* are made available under the terms of the Eclipse Public License v1.0
55
* which accompanies this distribution, and is available at
@@ -12,6 +12,8 @@
1212

1313
import org.springframework.context.annotation.Bean;
1414
import org.springframework.context.annotation.Configuration;
15+
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
16+
import org.springframework.ide.vscode.boot.java.commands.SpringIndexCommands;
1517
import org.springframework.ide.vscode.boot.java.commands.WorkspaceBootExecutableProjects;
1618
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
1719
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
@@ -22,5 +24,10 @@ public class CommandsConfig {
2224
@Bean WorkspaceBootExecutableProjects workspaceBootProjects(SimpleLanguageServer server, JavaProjectFinder projectFinder, SpringSymbolIndex symbolIndex) {
2325
return new WorkspaceBootExecutableProjects(server, projectFinder, symbolIndex);
2426
}
27+
28+
@Bean SpringIndexCommands springIndexCommands(SimpleLanguageServer server, JavaProjectFinder projectFinder, SpringMetamodelIndex symbolIndex) {
29+
return new SpringIndexCommands(server, symbolIndex, projectFinder);
30+
}
31+
2532

2633
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.springframework.ide.vscode.boot.java.commands;
2+
3+
import java.util.List;
4+
import java.util.concurrent.CompletableFuture;
5+
6+
import org.eclipse.lsp4j.TextDocumentIdentifier;
7+
import org.springframework.ide.vscode.boot.index.SpringMetamodelIndex;
8+
import org.springframework.ide.vscode.commons.java.IJavaProject;
9+
import org.springframework.ide.vscode.commons.languageserver.java.JavaProjectFinder;
10+
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
11+
12+
import com.google.gson.JsonElement;
13+
14+
public class SpringIndexCommands {
15+
16+
private static final String PROJECT_BEANS_CMD = "sts/spring-boot/beans";
17+
18+
public SpringIndexCommands(SimpleLanguageServer server, SpringMetamodelIndex metamodelIndex, JavaProjectFinder projectFinder) {
19+
server.onCommand(PROJECT_BEANS_CMD, params -> {
20+
String projectUri = ((JsonElement) params.getArguments().get(0)).getAsString();
21+
IJavaProject project = projectFinder.find(new TextDocumentIdentifier(projectUri)).orElse(null);
22+
return project == null ? CompletableFuture.completedFuture(List.of())
23+
: server.getAsync().execute(() -> metamodelIndex.getBeansOfProject(project.getElementName()));
24+
});
25+
}
26+
27+
}

vscode-extensions/vscode-spring-boot/lib/Main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ export function activate(context: ExtensionContext): Thenable<ExtensionAPI> {
5252
],
5353
checkjvm: (context: ExtensionContext, jvm: commons.JVM) => {
5454
let version = jvm.getMajorVersion();
55-
if (version < 17) {
56-
throw Error(`Spring Tools Language Server requires Java 17 or higher to be launched. Current Java version is ${version}`);
55+
if (version < 21) {
56+
throw Error(`Spring Tools Language Server requires Java 21 or higher to be launched. Current Java version is ${version}`);
5757
}
5858

5959
if (!jvm.isJdk()) {

vscode-extensions/vscode-spring-boot/lib/api.d.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Event } from "vscode";
1+
import { Event, Uri } from "vscode";
22
import { LanguageClient } from "vscode-languageclient/node";
33
import { LiveProcess } from "./notification";
44
import {Location} from "vscode-languageclient";
@@ -109,6 +109,7 @@ interface InjectionPoint {
109109

110110
interface SpringIndex {
111111
readonly beans: (params: BeansParams) => Promise<Bean[]>;
112+
readonly getBeans: (uri: Uri) => Promise<Bean[]>;
112113
readonly onSpringIndexUpdated: Event<void>;
113114
}
114115

vscode-extensions/vscode-spring-boot/lib/apiManager.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ export class ApiManager {
5555
return await commands.executeCommand(COMMAND_LIVEDATA_REFRESH_METRICS, query);
5656
}
5757

58+
const COMMAND_BEANS = "sts/spring-boot/beans";
59+
const getBeans: (Uri) => Promise<Bean[]> = async (projectUri: Uri) => await commands.executeCommand(COMMAND_BEANS, projectUri.toString());
60+
5861
client.onNotification(LiveProcessConnectedNotification.type, (process: LiveProcess) => this.onDidLiveProcessConnectEmitter.fire(process));
5962
client.onNotification(LiveProcessDisconnectedNotification.type, (process: LiveProcess) => this.onDidLiveProcessDisconnectEmitter.fire(process));
6063
client.onNotification(LiveProcessUpdatedNotification.type, (process: LiveProcess) => this.onDidLiveProcessUpdateEmitter.fire(process));
@@ -70,7 +73,8 @@ export class ApiManager {
7073

7174
const getSpringIndex = () => ({
7275
onSpringIndexUpdated,
73-
beans
76+
beans,
77+
getBeans
7478
})
7579

7680
this.api = {

0 commit comments

Comments
 (0)