diff --git a/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/AbstractSpringBootApp.java b/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/AbstractSpringBootApp.java index df4855a8d..fa91638ad 100644 --- a/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/AbstractSpringBootApp.java +++ b/headless-services/commons/commons-boot-app-cli/src/main/java/org/springframework/ide/vscode/commons/boot/app/cli/AbstractSpringBootApp.java @@ -18,7 +18,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; -import java.util.Map.Entry; import java.util.Optional; import java.util.Properties; import java.util.Set; @@ -39,19 +38,15 @@ import org.springframework.ide.vscode.commons.boot.app.cli.livebean.LiveBeansMod import org.springframework.ide.vscode.commons.boot.app.cli.requestmappings.Boot1xRequestMapping; import org.springframework.ide.vscode.commons.boot.app.cli.requestmappings.RequestMapping; import org.springframework.ide.vscode.commons.boot.app.cli.requestmappings.RequestMappingsParser20; -import org.springframework.ide.vscode.commons.util.MemoizingDisposableSupplier; import org.springframework.ide.vscode.commons.util.ExceptionUtil; import org.springframework.ide.vscode.commons.util.FuctionWithException; import org.springframework.ide.vscode.commons.util.FunctionWithException; +import org.springframework.ide.vscode.commons.util.MemoizingDisposableSupplier; import org.springframework.ide.vscode.commons.util.StringUtil; -import javax.management.remote.JMXConnectorFactory; -import javax.management.remote.JMXServiceURL; - import com.google.common.collect.ImmutableList; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.sun.jdi.connect.Connector; /** * A abstract base class which attempts to capture commonalities between diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/RemoteRunningAppsProvider.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/RemoteRunningAppsProvider.java index 60ae625b4..bddecef50 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/RemoteRunningAppsProvider.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/handlers/RemoteRunningAppsProvider.java @@ -21,7 +21,6 @@ import java.util.Set; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.ide.vscode.boot.java.handlers.RemoteRunningAppsProvider.RemoteBootAppData; import org.springframework.ide.vscode.commons.boot.app.cli.RemoteSpringBootApp; import org.springframework.ide.vscode.commons.boot.app.cli.SpringBootApp; import org.springframework.ide.vscode.commons.languageserver.util.Settings; @@ -102,31 +101,31 @@ public class RemoteRunningAppsProvider implements RunningAppProvider { synchronized void handleSettings(Settings settings) { RemoteBootAppData[] appData = settings.getAs(RemoteBootAppData[].class, "boot-java", "remote-apps"); - if (appData==null || appData.length==0) { - logger.info("Clearing all RemoteSpringBootApps"); - remoteAppInstances.clear(); - } else { - Set newAppData = new HashSet<>(Arrays.asList(appData)); - { //Remove obsolete apps... - Iterator> entries = remoteAppInstances.entrySet().iterator(); - while (entries.hasNext()) { - Entry entry = entries.next(); - RemoteBootAppData key = entry.getKey(); - if (!newAppData.contains(key)) { - logger.info("Removing RemoteSpringBootApp: "+key); - entries.remove(); - entry.getValue().dispose(); - } + if (appData==null) { + //Avoid NPE + appData = new RemoteBootAppData[0]; + } + + Set newAppData = new HashSet<>(Arrays.asList(appData)); + { //Remove obsolete apps + Iterator> entries = remoteAppInstances.entrySet().iterator(); + while (entries.hasNext()) { + Entry entry = entries.next(); + RemoteBootAppData key = entry.getKey(); + if (!newAppData.contains(key)) { + logger.info("Removing RemoteSpringBootApp: "+key); + entries.remove(); + entry.getValue().dispose(); } } + } - { //Add new apps - for (RemoteBootAppData key : newAppData) { - remoteAppInstances.computeIfAbsent(key, (_key) -> { - logger.info("Creating RemoteStringBootApp: "+_key); - return RemoteSpringBootApp.create(key.getJmxurl(), key.getHost()); - }); - } + { //Add new apps + for (RemoteBootAppData key : newAppData) { + remoteAppInstances.computeIfAbsent(key, (_key) -> { + logger.info("Creating RemoteStringBootApp: "+_key); + return RemoteSpringBootApp.create(key.getJmxurl(), key.getHost()); + }); } } }