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 4a74d43e9..cff602de6 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,6 @@ 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 = "1.7.0-SNAPSHOT.jar"; public static final String PREF_BOOT_HINTS = "boot-java.boot-hints.on"; public static final String PREF_SUPPORT_SPRING_XML_CONFIGS = "boot-java.support-spring-xml-config.on"; 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 59875cd34..233728f57 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 @@ -12,17 +12,9 @@ package org.springframework.tooling.boot.ls; import static org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants.SPRING_BOOT_SERVER; -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; -import org.eclipse.core.runtime.Platform; -import org.osgi.framework.Bundle; import org.springframework.tooling.ls.eclipse.commons.JRE; import org.springframework.tooling.ls.eclipse.commons.JRE.MissingJDKException; import org.springframework.tooling.ls.eclipse.commons.STS4LanguageServerProcessStreamConnector; @@ -75,47 +67,13 @@ public class SpringBootLanguageServer extends STS4LanguageServerProcessStreamCon } } - protected String getLanguageServerJARLocation() { - String languageServer = "spring-boot-language-server-" + Constants.LANGUAGE_SERVER_VERSION; - - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - String bundleVersion = bundle.getVersion().toString(); - - String languageServerLocalCopy = bundleVersion + "-" + languageServer; - - File dataFile = bundle.getDataFile(languageServerLocalCopy); - - Exception error = null; - if (!dataFile.exists() || bundleVersion.endsWith("qualifier")) { // qualifier check to get the language server always copied in dev mode - try { - copyLanguageServerJAR(languageServer, languageServerLocalCopy); - } - catch (Exception e) { - error = e; - } - } - - if (bundleVersion.endsWith("qualifier")) { - File userHome = new File(System.getProperty("user.home")); - File locallyBuiltJar = new File( - userHome, - "git/sts4/headless-services/spring-boot-language-server/target/spring-boot-language-server-" + Constants.LANGUAGE_SERVER_VERSION - ); - if (locallyBuiltJar.exists()) { - return locallyBuiltJar.getAbsolutePath(); - } - if (error!=null) { - error.printStackTrace(); - } - } - return dataFile.getAbsolutePath(); + @Override + protected String getLanguageServerArtifactId() { + return "spring-boot-language-server"; } - - protected void copyLanguageServerJAR(String languageServerJarName, String languageServerLocalCopy) throws Exception { - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - InputStream stream = FileLocator.openStream( bundle, new Path("servers/" + languageServerJarName), false ); - - File dataFile = bundle.getDataFile(languageServerLocalCopy); - Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + + @Override + protected String getPluginId() { + return Constants.PLUGIN_ID; } } diff --git a/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/BoshLanguageServer.java b/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/BoshLanguageServer.java index 25776f3f1..e25ad6a22 100644 --- a/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/BoshLanguageServer.java +++ b/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/BoshLanguageServer.java @@ -12,15 +12,6 @@ package org.springframework.tooling.bosh.ls; import static org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants.BOSH_SERVER; -import java.io.File; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; - -import org.eclipse.core.runtime.FileLocator; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.osgi.framework.Bundle; import org.springframework.tooling.ls.eclipse.commons.JRE; import org.springframework.tooling.ls.eclipse.commons.STS4LanguageServerProcessStreamConnector; @@ -42,29 +33,14 @@ public class BoshLanguageServer extends STS4LanguageServerProcessStreamConnector setWorkingDirectory(getWorkingDirLocation()); } - protected String getLanguageServerJARLocation() { - String languageServer = "bosh-language-server-" + Constants.LANGUAGE_SERVER_VERSION + ".jar"; - - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - File dataFile = bundle.getDataFile(languageServer); -// if (!dataFile.exists()) { - try { - copyLanguageServerJAR(languageServer); - } - catch (Exception e) { - e.printStackTrace(); - } -// } - - return dataFile.getAbsolutePath(); + @Override + protected String getLanguageServerArtifactId() { + return "bosh-language-server"; } - - protected void copyLanguageServerJAR(String languageServerJarName) throws Exception { - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - InputStream stream = FileLocator.openStream( bundle, new Path("servers/" + languageServerJarName), false ); - - File dataFile = bundle.getDataFile(languageServerJarName); - Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + + @Override + protected String getPluginId() { + return Constants.PLUGIN_ID; } } diff --git a/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/Constants.java b/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/Constants.java index 1fee91d94..519cc1669 100644 --- a/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/Constants.java +++ b/eclipse-language-servers/org.springframework.tooling.bosh.ls/src/org/springframework/tooling/bosh/ls/Constants.java @@ -16,6 +16,5 @@ package org.springframework.tooling.bosh.ls; public class Constants { public static final String PLUGIN_ID = "org.springframework.tooling.bosh.ls"; - public static final String LANGUAGE_SERVER_VERSION = "1.7.0-SNAPSHOT"; } diff --git a/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/CloudFoundryManifestLanguageServer.java b/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/CloudFoundryManifestLanguageServer.java index 24efb7c93..2201261bb 100644 --- a/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/CloudFoundryManifestLanguageServer.java +++ b/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/CloudFoundryManifestLanguageServer.java @@ -12,23 +12,15 @@ package org.springframework.tooling.cloudfoundry.manifest.ls; import static org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants.CLOUDFOUNDRY_SERVER; -import java.io.File; -import java.io.InputStream; import java.net.URI; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -import org.eclipse.core.runtime.FileLocator; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; import org.eclipse.lsp4j.DidChangeConfigurationParams; 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.osgi.framework.Bundle; import org.springframework.tooling.ls.eclipse.commons.JRE; import org.springframework.tooling.ls.eclipse.commons.STS4LanguageServerProcessStreamConnector; @@ -89,50 +81,6 @@ public class CloudFoundryManifestLanguageServer extends STS4LanguageServerProces return cfTargetOptionSettings; } - protected String getLanguageServerJARLocation() { - String languageServer = "manifest-yaml-language-server-" + Constants.LANGUAGE_SERVER_VERSION; - - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - String bundleVersion = bundle.getVersion().toString(); - - String languageServerLocalCopy = bundleVersion + "-" + languageServer; - - File dataFile = bundle.getDataFile(languageServerLocalCopy); - - Exception error = null; - if (!dataFile.exists() || bundleVersion.endsWith("qualifier")) { // qualifier check to get the language server always copied in dev mode - try { - copyLanguageServerJAR(languageServer, languageServerLocalCopy); - } - catch (Exception e) { - error = e; - } - } - - if (bundleVersion.endsWith("qualifier")) { - File userHome = new File(System.getProperty("user.home")); - File locallyBuiltJar = new File( - userHome, - "git/sts4/headless-services/manifest-yaml-language-server/target/manifest-yaml-language-server-" + Constants.LANGUAGE_SERVER_VERSION - ); - if (locallyBuiltJar.exists()) { - return locallyBuiltJar.getAbsolutePath(); - } - if (error != null) { - error.printStackTrace(); - } - } - return dataFile.getAbsolutePath(); - } - - protected void copyLanguageServerJAR(String languageServerJarName, String languageServerLocalCopy) throws Exception { - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - InputStream stream = FileLocator.openStream( bundle, new Path("servers/" + languageServerJarName), false ); - - File dataFile = bundle.getDataFile(languageServerLocalCopy); - Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING); - } - protected void updateLanguageServer() { DidChangeConfigurationParams params = new DidChangeConfigurationParams(getInitializationOptions(rootPath)); languageServer.getWorkspaceService().didChangeConfiguration(params); @@ -146,4 +94,13 @@ public class CloudFoundryManifestLanguageServer extends STS4LanguageServerProces servers.remove(server); } + @Override + protected String getLanguageServerArtifactId() { + return "manifest-yaml-language-server"; + } + + @Override + protected String getPluginId() { + return Constants.PLUGIN_ID; + } } diff --git a/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/Constants.java b/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/Constants.java index bb0b7ec89..81f7294b5 100644 --- a/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/Constants.java +++ b/eclipse-language-servers/org.springframework.tooling.cloudfoundry.manifest.ls/src/org/springframework/tooling/cloudfoundry/manifest/ls/Constants.java @@ -16,6 +16,5 @@ package org.springframework.tooling.cloudfoundry.manifest.ls; public class Constants { public static final String PLUGIN_ID = "org.springframework.tooling.cloudfoundry.manifest.ls"; - public static final String LANGUAGE_SERVER_VERSION = "1.7.0-SNAPSHOT.jar"; } diff --git a/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/ConcourseLanguageServer.java b/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/ConcourseLanguageServer.java index 158bd4269..e2a01b15e 100644 --- a/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/ConcourseLanguageServer.java +++ b/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/ConcourseLanguageServer.java @@ -12,17 +12,7 @@ package org.springframework.tooling.concourse.ls; import static org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants.CONCOURSE_SERVER; -import java.io.File; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; - -import org.eclipse.core.runtime.FileLocator; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.osgi.framework.Bundle; import org.springframework.tooling.ls.eclipse.commons.JRE; -import org.springframework.tooling.ls.eclipse.commons.LanguageServerCommonsActivator; import org.springframework.tooling.ls.eclipse.commons.STS4LanguageServerProcessStreamConnector; import com.google.common.collect.ImmutableList; @@ -43,36 +33,13 @@ public class ConcourseLanguageServer extends STS4LanguageServerProcessStreamConn setWorkingDirectory(getWorkingDirLocation()); } - protected String getLanguageServerJARLocation() { - String languageServer = "concourse-language-server-" + Constants.LANGUAGE_SERVER_VERSION + ".jar"; - - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - File dataFile = bundle.getDataFile(languageServer); -// if (!dataFile.exists()) { - try { - copyLanguageServerJAR(languageServer); - } - catch (Exception e) { - if (bundle.getVersion().getQualifier().equals("qualifier")) { - dataFile = new File(System.getProperty("user.home")+"/git/sts4/headless-services/concourse-language-server/target/concourse-language-server-"+Constants.LANGUAGE_SERVER_VERSION+".jar"); - if (!dataFile.exists()) { - LanguageServerCommonsActivator.logError(e, "Problem locating Concourse language server jar"); - } - } else { - LanguageServerCommonsActivator.logError(e, "Problem locating Concourse language server jar"); - } - } -// } - - return dataFile.getAbsolutePath(); - } - - protected void copyLanguageServerJAR(String languageServerJarName) throws Exception { - Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID); - InputStream stream = FileLocator.openStream( bundle, new Path("servers/" + languageServerJarName), false ); - - File dataFile = bundle.getDataFile(languageServerJarName); - Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + @Override + protected String getLanguageServerArtifactId() { + return "concourse-language-server"; } + @Override + protected String getPluginId() { + return Constants.PLUGIN_ID; + } } diff --git a/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/Constants.java b/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/Constants.java index d536fad3e..b8dca1fff 100644 --- a/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/Constants.java +++ b/eclipse-language-servers/org.springframework.tooling.concourse.ls/src/org/springframework/tooling/concourse/ls/Constants.java @@ -16,6 +16,5 @@ package org.springframework.tooling.concourse.ls; public class Constants { public static final String PLUGIN_ID = "org.springframework.tooling.concourse.ls"; - public static final String LANGUAGE_SERVER_VERSION = "1.7.0-SNAPSHOT"; } diff --git a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java index 6368429ee..8b6275e74 100644 --- a/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java +++ b/eclipse-language-servers/org.springframework.tooling.ls.eclipse.commons/src/org/springframework/tooling/ls/eclipse/commons/STS4LanguageServerProcessStreamConnector.java @@ -14,12 +14,19 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.lsp4e.server.ProcessStreamConnectionProvider; +import org.osgi.framework.Bundle; +import org.osgi.framework.Version; import org.springframework.tooling.ls.eclipse.commons.console.ConsoleUtil.Console; import org.springframework.tooling.ls.eclipse.commons.console.LanguageServerConsoles; import org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants.ServerInfo; @@ -28,12 +35,14 @@ import org.springsource.ide.eclipse.commons.core.util.IOUtil; import com.google.common.base.Charsets; import com.google.common.base.Supplier; -public class STS4LanguageServerProcessStreamConnector extends ProcessStreamConnectionProvider { +public abstract class STS4LanguageServerProcessStreamConnector extends ProcessStreamConnectionProvider { private static LanguageServerProcessReaper processReaper = new LanguageServerProcessReaper(); private Supplier consoles = null; + private Bundle bundle; + public STS4LanguageServerProcessStreamConnector(ServerInfo server) { this.consoles = LanguageServerConsoles.getConsoleFactory(server); } @@ -132,4 +141,69 @@ public class STS4LanguageServerProcessStreamConnector extends ProcessStreamConne return System.getProperty("user.dir"); } + final protected String getLanguageServerJARLocation() { + String languageServer = getLanguageServerArtifactId() +"-" + getLanguageServerArtifactVersion() +".jar"; + Bundle bundle = getBundle(); + String bundleVersion = bundle.getVersion().toString(); + String languageServerLocalCopy = bundleVersion + "-" + languageServer; + File dataFile = bundle.getDataFile(languageServerLocalCopy); + + Exception error = null; + if (!dataFile.exists() || bundleVersion.endsWith("qualifier")) { // qualifier check to get the language server always copied in dev mode + try { + copyLanguageServerJAR(languageServer, languageServerLocalCopy); + } + catch (Exception e) { + error = e; + } + } + + if (bundleVersion.endsWith("qualifier")) { + File userHome = new File(System.getProperty("user.home")); + File locallyBuiltJar = new File( + userHome + , + "git/sts4/headless-services/" + + getLanguageServerArtifactId() + + "/target/" + + getLanguageServerArtifactId() + + "-" + + getLanguageServerArtifactVersion() + ); + if (locallyBuiltJar.exists()) { + return locallyBuiltJar.getAbsolutePath(); + } + if (error!=null) { + error.printStackTrace(); + } + } + return dataFile.getAbsolutePath(); + } + + protected String getLanguageServerArtifactVersion() { + Version bv = getBundle().getVersion(); + //Example of what it should look like: + // "1.6.0-SNAPSHOT" + return bv.getMajor()+"."+bv.getMinor()+"."+bv.getMicro()+"-SNAPSHOT"; + } + + protected Bundle getBundle() { + if (bundle==null) { + this.bundle = Platform.getBundle(getPluginId()); + } + return bundle; + } + + protected abstract String getLanguageServerArtifactId(); + + protected final void copyLanguageServerJAR(String languageServerJarName, String languageServerLocalCopy) throws Exception { + Bundle bundle = Platform.getBundle(getPluginId()); + InputStream stream = FileLocator.openStream( bundle, new Path("servers/" + languageServerJarName), false ); + + File dataFile = bundle.getDataFile(languageServerLocalCopy); + Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + } + + protected abstract String getPluginId(); + } diff --git a/headless-services/commons/commons-language-server/.factorypath b/headless-services/commons/commons-language-server/.factorypath index e911c6f53..23ecd34ae 100644 --- a/headless-services/commons/commons-language-server/.factorypath +++ b/headless-services/commons/commons-language-server/.factorypath @@ -1,11 +1,11 @@ - - - - - - - + + + + + + + @@ -25,6 +25,6 @@ - + diff --git a/headless-services/commons/commons-maven/.factorypath b/headless-services/commons/commons-maven/.factorypath index 12ca87d9e..58ef76da6 100644 --- a/headless-services/commons/commons-maven/.factorypath +++ b/headless-services/commons/commons-maven/.factorypath @@ -37,8 +37,8 @@ - - + + @@ -49,16 +49,16 @@ - - - - - - - + + + + + + + - + diff --git a/headless-services/concourse-language-server/.factorypath b/headless-services/concourse-language-server/.factorypath index 2e54bffdf..859fe7680 100644 --- a/headless-services/concourse-language-server/.factorypath +++ b/headless-services/concourse-language-server/.factorypath @@ -1,26 +1,26 @@ - - - - - + + + + + - - - - - - - - + + + + + + + + - + - + @@ -30,20 +30,20 @@ - + - + - - + + diff --git a/headless-services/spring-boot-language-server/.factorypath b/headless-services/spring-boot-language-server/.factorypath index 6ca460b1c..9fa3745cd 100644 --- a/headless-services/spring-boot-language-server/.factorypath +++ b/headless-services/spring-boot-language-server/.factorypath @@ -1,14 +1,14 @@ - - - + + + - - - + + + @@ -52,7 +52,7 @@ - + @@ -60,17 +60,17 @@ - - - - - - + + + + + + - + - + @@ -88,13 +88,13 @@ - + - - + +