diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/META-INF/MANIFEST.MF b/eclipse-language-servers/org.springframework.tooling.boot.ls/META-INF/MANIFEST.MF index 3ab43af3d..750db8342 100644 --- a/eclipse-language-servers/org.springframework.tooling.boot.ls/META-INF/MANIFEST.MF +++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/META-INF/MANIFEST.MF @@ -23,7 +23,8 @@ Require-Bundle: org.eclipse.jdt.launching;bundle-version="3.9.0", org.eclipse.ui, org.eclipse.ui.ide, org.eclipse.jdt.core, - org.eclipse.ui.editors;bundle-version="3.11.100" + org.eclipse.ui.editors;bundle-version="3.11.100", + org.springsource.ide.eclipse.commons.livexp Import-Package: com.google.gson;version="2.7.0", org.eclipse.jface.preference, org.osgi.framework diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPlugin.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPlugin.java index c46afd755..8a32cc3a4 100644 --- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPlugin.java +++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/BootLanguageServerPlugin.java @@ -19,6 +19,7 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.keys.IBindingService; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; +import org.springsource.ide.eclipse.commons.livexp.core.LiveSetVariable; /** * Boot-Java LS extension plugin @@ -94,5 +95,11 @@ public class BootLanguageServerPlugin extends AbstractUIPlugin { }); } } + + private static LiveSetVariable remoteBootApps = new LiveSetVariable<>(); + + public static LiveSetVariable getRemoteBootApps() { + return remoteBootApps; + } } diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/Constants.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/Constants.java index f187a70ac..89c34c273 100644 --- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/Constants.java +++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/Constants.java @@ -16,7 +16,7 @@ package org.springframework.tooling.boot.ls; public class Constants { public static final String PLUGIN_ID = "org.springframework.tooling.boot.ls"; - public static final String LANGUAGE_SERVER_VERSION = "0.3.2-SNAPSHOT.jar"; + public static final String LANGUAGE_SERVER_VERSION = "0.4.0-SNAPSHOT.jar"; public static final String PREF_BOOT_HINTS = "boot-java.boot-hints.on"; public static final String PREF_CHANGE_DETECTION = "boot-java.change-detection.on"; diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java index fdeade03d..9f3cdb187 100644 --- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java +++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/DelegatingStreamConnectionProvider.java @@ -28,6 +28,9 @@ import org.eclipse.lsp4j.InitializeResult; import org.eclipse.lsp4j.jsonrpc.messages.Message; import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage; import org.eclipse.lsp4j.services.LanguageServer; +import org.springsource.ide.eclipse.commons.livexp.core.ValueListener; + +import com.google.common.collect.ImmutableSet; /** * if the system property "boot-java-ls-port" exists, delegate to the socket-based @@ -46,12 +49,8 @@ public class DelegatingStreamConnectionProvider implements StreamConnectionProvi private ResourceListener fResourceListener; private LanguageServer languageServer; - private final IPropertyChangeListener configListener = new IPropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent event) { - sendConfiguration(); - } - }; + private final IPropertyChangeListener configListener = (e) -> sendConfiguration(); + private final ValueListener> remoteAppsListener = (e, v) -> sendConfiguration(); public DelegatingStreamConnectionProvider() { String port = System.getProperty("boot-java-ls-port"); @@ -96,6 +95,7 @@ public class DelegatingStreamConnectionProvider implements StreamConnectionProvi fResourceListener = null; } BootLanguageServerPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(configListener); + BootLanguageServerPlugin.getRemoteBootApps().removeListener(remoteAppsListener); } @Override @@ -116,6 +116,9 @@ public class DelegatingStreamConnectionProvider implements StreamConnectionProvi FileSystems.getDefault().getPathMatcher("glob:**/*.gradle"), FileSystems.getDefault().getPathMatcher("glob:**/*.java") ))); + + //Add remote boot apps listener + BootLanguageServerPlugin.getRemoteBootApps().addListener(remoteAppsListener); } } } @@ -131,6 +134,7 @@ public class DelegatingStreamConnectionProvider implements StreamConnectionProvi bootJavaObj.put("boot-hints", bootHint); bootJavaObj.put("change-detection", bootChangeDetection); + bootJavaObj.put("remote-apps", BootLanguageServerPlugin.getRemoteBootApps().getValues()); settings.put("boot-java", bootJavaObj); diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/SpringBootLanguageServer.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/SpringBootLanguageServer.java index 3a03eedd8..bcfbabea9 100644 --- a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/SpringBootLanguageServer.java +++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/SpringBootLanguageServer.java @@ -16,8 +16,6 @@ import java.io.File; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.StandardCopyOption; -import java.util.ArrayList; -import java.util.List; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; @@ -99,5 +97,4 @@ public class SpringBootLanguageServer extends STS4LanguageServerProcessStreamCon File dataFile = bundle.getDataFile(languageServerLocalCopy); Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING); } - } diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/.project b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/.project index 63058ad80..8e91c72d0 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/.project +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/.project @@ -20,14 +20,8 @@ - - org.eclipse.m2e.core.maven2Builder - - - - org.eclipse.m2e.core.maven2Nature org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature