improved auto-connect-handling for boot processes started via the boot dashboard
This commit is contained in:
@@ -67,7 +67,7 @@ public class SpringProcessCommandHandler {
|
||||
if (processKey != null) {
|
||||
|
||||
// try local processes
|
||||
SpringProcessDescriptor[] processes = localProcessConnector.getProcesses(false, SpringProcessStatus.REGULAR);
|
||||
SpringProcessDescriptor[] processes = localProcessConnector.getProcesses(false, SpringProcessStatus.REGULAR, SpringProcessStatus.AUTO_CONNECT);
|
||||
for (SpringProcessDescriptor process : processes) {
|
||||
if (process.getProcessKey().equals(processKey)) {
|
||||
localProcessConnector.connectProcess(process);
|
||||
@@ -134,7 +134,7 @@ public class SpringProcessCommandHandler {
|
||||
}
|
||||
|
||||
// other available local processes
|
||||
SpringProcessDescriptor[] localProcesses = localProcessConnector.getProcesses(true, SpringProcessStatus.REGULAR);
|
||||
SpringProcessDescriptor[] localProcesses = localProcessConnector.getProcesses(true, SpringProcessStatus.REGULAR, SpringProcessStatus.AUTO_CONNECT);
|
||||
for (SpringProcessDescriptor localProcess : localProcesses) {
|
||||
String processKey = localProcess.getProcessKey();
|
||||
if (!alreadyConnected.contains(processKey)) {
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
package org.springframework.ide.vscode.boot.java.livehover.v2;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
@@ -107,7 +108,7 @@ public class SpringProcessConnectorLocal {
|
||||
return this.processes.stream().anyMatch(process -> processKey.equals(process.getProcessKey()));
|
||||
}
|
||||
|
||||
public SpringProcessDescriptor[] getProcesses(boolean update, SpringProcessStatus status) {
|
||||
public SpringProcessDescriptor[] getProcesses(boolean update, SpringProcessStatus... status) {
|
||||
if (update) {
|
||||
SpringProcessDescriptor[] newProcesses = updateProcesses();
|
||||
if (newProcesses.length > 0) {
|
||||
@@ -115,8 +116,9 @@ public class SpringProcessConnectorLocal {
|
||||
}
|
||||
}
|
||||
|
||||
if (status != null) {
|
||||
return processes.stream().filter((process) -> status.equals(process.getStatus())).toArray(SpringProcessDescriptor[]::new);
|
||||
if (status != null && status.length > 0) {
|
||||
List<SpringProcessStatus> statusList = Arrays.asList(status);
|
||||
return processes.stream().filter((process) -> statusList.contains(process.getStatus())).toArray(SpringProcessDescriptor[]::new);
|
||||
}
|
||||
else {
|
||||
return (SpringProcessDescriptor[]) processes.toArray(new SpringProcessDescriptor[processes.size()]);
|
||||
@@ -266,6 +268,10 @@ public class SpringProcessConnectorLocal {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isConnected(String processKey) {
|
||||
return this.processConnectorService.isConnected(processKey);
|
||||
}
|
||||
|
||||
private boolean shouldIgnore(VirtualMachineDescriptor vmDescriptor, VirtualMachine vm) {
|
||||
try {
|
||||
|
||||
@@ -92,6 +92,10 @@ public class SpringProcessConnectorService {
|
||||
return (SpringProcessConnector[]) this.connectors.values().stream()
|
||||
.filter((connector) -> connectedSuccess.get(connector.getProcessKey())).toArray(SpringProcessConnector[]::new);
|
||||
}
|
||||
|
||||
public boolean isConnected(String processKey) {
|
||||
return this.connectors.containsKey(processKey);
|
||||
}
|
||||
|
||||
/**
|
||||
* common method to generate process keys from process IDs and process names
|
||||
|
||||
@@ -93,9 +93,10 @@ public class SpringProcessTracker {
|
||||
SpringProcessDescriptor[] autoConnectProcesses = this.localProcessConnector.getProcesses(true, SpringProcessStatus.AUTO_CONNECT);
|
||||
|
||||
for (SpringProcessDescriptor process : autoConnectProcesses) {
|
||||
log.info("auto-connect to process: " + process.getProcessKey());
|
||||
|
||||
this.localProcessConnector.connectProcess(process);
|
||||
if (!this.localProcessConnector.isConnected(process.getProcessKey())) {
|
||||
log.info("auto-connect to process: " + process.getProcessKey());
|
||||
this.localProcessConnector.connectProcess(process);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Throwable e) {
|
||||
|
||||
Reference in New Issue
Block a user