Merge pull request #754 from spring-projects/api-get-live-processes

Add 'listConnectedProcesses' to public api
This commit is contained in:
Kris De Volder
2022-04-07 15:00:20 -07:00
committed by GitHub
3 changed files with 25 additions and 1 deletions

View File

@@ -17,6 +17,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.eclipse.lsp4j.ExecuteCommandParams;
import org.slf4j.Logger;
@@ -39,6 +42,7 @@ public class SpringProcessCommandHandler {
private static final String COMMAND_REFRESH = "sts/livedata/refresh";
private static final String COMMAND_DISCONNECT = "sts/livedata/disconnect";
private static final String COMMAND_GET = "sts/livedata/get";
private static final String COMMAND_LIST_CONNECTED = "sts/livedata/listConnected";
private final SpringProcessConnectorService connectorService;
private final SpringProcessConnectorLocal localProcessConnector;
@@ -74,6 +78,13 @@ public class SpringProcessCommandHandler {
return get(params);
});
log.info("Registered command handler: {}",COMMAND_GET);
server.onCommand(COMMAND_LIST_CONNECTED, (params) -> {
return CompletableFuture.completedFuture(Stream.of(connectorService.getConnectedProcesses())
.map(process -> process.getProcessKey())
.collect(Collectors.toList())
);
});
}
private CompletableFuture<Object> connect(ExecuteCommandParams params) {

View File

@@ -23,6 +23,13 @@ export interface ExtensionAPI {
* A command to get live process data.
*/
readonly getLiveProcessData: (query: SimpleQuery | BeansQuery) => Promise<any>
/**
* A command to list all currently connected processes.
*
* Returns a list of processKeys.
*/
readonly listConnectedProcesses: () => Promise<string[]>
}
interface LiveProcessDataQuery {

View File

@@ -19,6 +19,11 @@ export class ApiManager {
return await commands.executeCommand(COMMAND_LIVEDATA_GET, query);
}
const COMMAND_LIVEDATA_LIST_CONNECTED = "sts/livedata/listConnected"
const listConnectedProcesses = async () : Promise<string[]> => {
return await commands.executeCommand(COMMAND_LIVEDATA_LIST_CONNECTED);
}
client.onNotification(LiveProcessConnectedNotification.type, (processKey: string) => this.onDidLiveProcessConnectEmitter.fire(processKey));
client.onNotification(LiveProcessDisconnectedNotification.type, (processKey: string) => this.onDidLiveProcessDisconnectEmitter.fire(processKey));
client.onNotification(LiveProcessUpdatedNotification.type, (processKey: string) => this.onDidLiveProcessUpdateEmitter.fire(processKey));
@@ -28,7 +33,8 @@ export class ApiManager {
onDidLiveProcessConnect,
onDidLiveProcessDisconnect,
onDidLiveProcessUpdate,
getLiveProcessData
getLiveProcessData,
listConnectedProcesses,
};
}
}