Some tweaks to PR 751
This commit is contained in:
@@ -125,8 +125,8 @@ public class BootLanguageServerBootApp {
|
||||
}
|
||||
|
||||
@Bean
|
||||
SpringProcessLiveDataProvider liveDataProvider() {
|
||||
return new SpringProcessLiveDataProvider();
|
||||
SpringProcessLiveDataProvider liveDataProvider(SimpleLanguageServer server) {
|
||||
return new SpringProcessLiveDataProvider(server);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -229,8 +229,8 @@ public class SpringProcessConnectorLocal {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isConnected(String processKey) {
|
||||
return this.processConnectorService.isConnected(processKey);
|
||||
public boolean isKnownProcessKey(String processKey) {
|
||||
return this.processConnectorService.isKnownProcessKey(processKey);
|
||||
}
|
||||
|
||||
private String getProcessID(VirtualMachineDescriptor descriptor) {
|
||||
|
||||
@@ -45,7 +45,6 @@ public class SpringProcessConnectorService {
|
||||
private int progressIdKey = 0;
|
||||
private int maxRetryCount;
|
||||
private int retryDelayInSeconds;
|
||||
|
||||
|
||||
public SpringProcessConnectorService(SimpleLanguageServer server, SpringProcessLiveDataProvider liveDataProvider) {
|
||||
this.liveDataProvider = liveDataProvider;
|
||||
@@ -135,7 +134,7 @@ public class SpringProcessConnectorService {
|
||||
.filter((connector) -> connectedSuccess.get(connector.getProcessKey())).toArray(SpringProcessConnector[]::new);
|
||||
}
|
||||
|
||||
public boolean isConnected(String processKey) {
|
||||
public boolean isKnownProcessKey(String processKey) {
|
||||
return this.connectors.containsKey(processKey);
|
||||
}
|
||||
|
||||
@@ -162,13 +161,13 @@ public class SpringProcessConnectorService {
|
||||
catch (Exception e) {
|
||||
log.info("problem occured during process connect", e);
|
||||
|
||||
if (retryNo < maxRetryCount && isConnected(processKey)) {
|
||||
if (retryNo < maxRetryCount && isKnownProcessKey(processKey)) {
|
||||
scheduleConnect(progressTask, processKey, connector, retryDelayInSeconds, TimeUnit.SECONDS, retryNo + 1);
|
||||
} else {
|
||||
progressTask.progressDone();
|
||||
|
||||
// Send message to client if maximum retries reached on error
|
||||
if (isConnected(processKey)) {
|
||||
if (isKnownProcessKey(processKey)) {
|
||||
diagnosticService.diagnosticEvent(ShowMessageException
|
||||
.error("Failed to connect to process " + processKey + " after retries: " + retryNo, e));
|
||||
}
|
||||
@@ -229,7 +228,7 @@ public class SpringProcessConnectorService {
|
||||
|
||||
log.info("problem occured during process live data refresh", e);
|
||||
|
||||
if (retryNo < maxRetryCount && isConnected(processKey)) {
|
||||
if (retryNo < maxRetryCount && isKnownProcessKey(processKey)) {
|
||||
scheduleRefresh(progressTask, processKey, connector, retryDelayInSeconds, TimeUnit.SECONDS,
|
||||
retryNo + 1);
|
||||
}
|
||||
@@ -237,7 +236,7 @@ public class SpringProcessConnectorService {
|
||||
progressTask.progressDone();
|
||||
|
||||
// Send message to client if maximum retries reached on error
|
||||
if (isConnected(processKey)) {
|
||||
if (isKnownProcessKey(processKey)) {
|
||||
diagnosticService.diagnosticEvent(ShowMessageException
|
||||
.error("Failed to refresh live data from process " + processKey + " after retries: " + retryNo, e));
|
||||
|
||||
|
||||
@@ -16,6 +16,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer;
|
||||
|
||||
/**
|
||||
* @author Martin Lippert
|
||||
*/
|
||||
@@ -23,8 +25,10 @@ public class SpringProcessLiveDataProvider {
|
||||
|
||||
private final ConcurrentMap<String, SpringProcessLiveData> liveData;
|
||||
private final List<SpringProcessLiveDataChangeListener> listeners;
|
||||
private final SimpleLanguageServer server;
|
||||
|
||||
public SpringProcessLiveDataProvider() {
|
||||
public SpringProcessLiveDataProvider(SimpleLanguageServer server) {
|
||||
this.server = server;
|
||||
this.liveData = new ConcurrentHashMap<>();
|
||||
this.listeners = new CopyOnWriteArrayList<>();
|
||||
}
|
||||
@@ -40,25 +44,25 @@ public class SpringProcessLiveDataProvider {
|
||||
*/
|
||||
public boolean add(String processKey, SpringProcessLiveData liveData) {
|
||||
SpringProcessLiveData oldData = this.liveData.putIfAbsent(processKey, liveData);
|
||||
|
||||
if (oldData == null) {
|
||||
announceChangedLiveData();
|
||||
server.getClient().liveProcessConnected(processKey);
|
||||
}
|
||||
|
||||
return oldData == null;
|
||||
}
|
||||
|
||||
public void remove(String processKey) {
|
||||
SpringProcessLiveData removed = this.liveData.remove(processKey);
|
||||
|
||||
if (removed != null) {
|
||||
announceChangedLiveData();
|
||||
server.getClient().liveProcessDisconnected(processKey);
|
||||
}
|
||||
}
|
||||
|
||||
public void update(String processKey, SpringProcessLiveData liveData) {
|
||||
this.liveData.put(processKey, liveData);
|
||||
announceChangedLiveData();
|
||||
server.getClient().liveProcessDataUpdated(processKey);
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +77,6 @@ public class SpringProcessLiveDataProvider {
|
||||
private void announceChangedLiveData() {
|
||||
SpringProcessLiveData[] latestLiveData = getLatestLiveData();
|
||||
SpringProcessLiveDataChangeEvent event = new SpringProcessLiveDataChangeEvent(latestLiveData);
|
||||
|
||||
for (SpringProcessLiveDataChangeListener listener : this.listeners) {
|
||||
listener.liveDataChanged(event);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user