diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/pom.xml b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/pom.xml
index 30683f0ce..400001a81 100644
--- a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/pom.xml
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/pom.xml
@@ -4,7 +4,7 @@
4.0.0
org.springframework.boot.ide
- org.springframework.boot.ide
+ org.springframework.boot.ide.servers
4.0.0-SNAPSHOT
../pom.xml
@@ -12,24 +12,4 @@
org.springframework.boot.ide.cloudfoundry.server.feature
eclipse-feature
-
-
-
- org.eclipse.tycho
- tycho-p2-plugin
- ${tycho-version}
-
-
- second-generate-p2-metadata
-
- p2-metadata
-
- verify
-
-
-
-
-
-
-
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/META-INF/MANIFEST.MF b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/META-INF/MANIFEST.MF
index caffeba3a..6c4ebee7d 100644
--- a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/META-INF/MANIFEST.MF
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/META-INF/MANIFEST.MF
@@ -1,6 +1,10 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Server
-Bundle-SymbolicName: org.springframework.boot.ide.cloudfoundry.server
+Bundle-SymbolicName: org.springframework.boot.ide.cloudfoundry.server;singleton:=true
Bundle-Version: 4.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Require-Bundle: org.eclipse.languageserver;bundle-version="0.1.0",
+ org.eclipse.jdt.launching;bundle-version="3.9.0",
+ org.eclipse.core.runtime;bundle-version="3.12.0"
+Import-Package: org.osgi.framework
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/build.properties b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/build.properties
index 34d2e4d2d..3b7db0f69 100644
--- a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/build.properties
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/build.properties
@@ -1,4 +1,6 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ .,\
+ plugin.xml,\
+ servers/
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/plugin.xml b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/plugin.xml
new file mode 100644
index 000000000..1ef77e33a
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/plugin.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/pom.xml b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/pom.xml
index 276937df8..f5f632bfc 100644
--- a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/pom.xml
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/pom.xml
@@ -1,35 +1,56 @@
- 4.0.0
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ 4.0.0
org.springframework.boot.ide
- org.springframework.boot.ide
+ org.springframework.boot.ide.servers
4.0.0-SNAPSHOT
../pom.xml
- org.springframework.boot.ide.cloudfoundry.server
- eclipse-plugin
+ org.springframework.boot.ide.cloudfoundry.server
+ eclipse-plugin
-
+
+
+ org.springframework.ide.vscode
+ vscode-manifest-yaml
+ 0.0.1-SNAPSHOT
+
+
+
+
- org.eclipse.tycho
- tycho-p2-plugin
- ${tycho-version}
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ 2.10
- second-generate-p2-metadata
+ copy
+ prepare-package
- p2-metadata
+ copy
- verify
+
+
+
+ org.springframework.ide.vscode
+ vscode-manifest-yaml
+ true
+ ${project.build.directory}/../servers
+
+
+ true
+ true
+
-
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/src/org/springframework/boot/ide/cloudfoundry/server/CloudFoundryManifestLanguageServer.java b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/src/org/springframework/boot/ide/cloudfoundry/server/CloudFoundryManifestLanguageServer.java
new file mode 100644
index 000000000..4cf81cf15
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/src/org/springframework/boot/ide/cloudfoundry/server/CloudFoundryManifestLanguageServer.java
@@ -0,0 +1,83 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Pivotal, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.boot.ide.cloudfoundry.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.eclipse.jdt.internal.launching.StandardVMType;
+import org.eclipse.jdt.launching.IVMInstall;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.languageserver.ProcessStreamConnectionProvider;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Martin Lippert
+ */
+@SuppressWarnings("restriction")
+public class CloudFoundryManifestLanguageServer extends ProcessStreamConnectionProvider {
+
+ public CloudFoundryManifestLanguageServer() {
+ List commands = new ArrayList<>();
+ commands.add(getJDKLocation());
+ commands.add("-jar");
+ commands.add(getLanguageServerJARLocation());
+
+ String workingDir = getWorkingDirLocation();
+
+ setCommands(commands);
+ setWorkingDirectory(workingDir);
+ }
+
+ protected String getJDKLocation() {
+ IVMInstall jdk = JavaRuntime.getDefaultVMInstall();
+ File javaExecutable = StandardVMType.findJavaExecutable(jdk.getInstallLocation());
+ return javaExecutable.getAbsolutePath();
+ }
+
+ protected String getLanguageServerJARLocation() {
+ String languageServer = "vscode-manifest-yaml-0.0.1-SNAPSHOT.jar";
+
+ Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID);
+ File dataFile = bundle.getDataFile(languageServer);
+ if (!dataFile.exists()) {
+ try {
+ copyLanguageServerJAR();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ return dataFile.getAbsolutePath();
+ }
+
+ protected String getWorkingDirLocation() {
+ // TODO: identify a reasonable working directory for the language server process
+ return System.getProperty("user.dir");
+ }
+
+ protected void copyLanguageServerJAR() throws Exception {
+ Bundle bundle = Platform.getBundle(Constants.PLUGIN_ID);
+ InputStream stream = FileLocator.openStream( bundle, new Path("servers/vscode-manifest-yaml-0.0.1-SNAPSHOT.jar"), false );
+
+ File dataFile = bundle.getDataFile("vscode-manifest-yaml-0.0.1-SNAPSHOT.jar");
+ Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ }
+
+}
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/src/org/springframework/boot/ide/cloudfoundry/server/Constants.java b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/src/org/springframework/boot/ide/cloudfoundry/server/Constants.java
new file mode 100644
index 000000000..d9ac69981
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/src/org/springframework/boot/ide/cloudfoundry/server/Constants.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Pivotal, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.boot.ide.cloudfoundry.server;
+
+/**
+ * @author Martin Lippert
+ */
+public class Constants {
+
+ public static final String PLUGIN_ID = "org.springframework.boot.ide.cloudfoundry.server";
+
+}
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers/src/org/springframework/boot/ide/properties/servers/Constants.java b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/src/org/springframework/boot/ide/properties/servers/Constants.java
index 7ab0e31d5..1e75215f8 100644
--- a/eclipse-language-servers/org.springframework.boot.ide.properties.servers/src/org/springframework/boot/ide/properties/servers/Constants.java
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/src/org/springframework/boot/ide/properties/servers/Constants.java
@@ -1,5 +1,18 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Pivotal, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
package org.springframework.boot.ide.properties.servers;
+/**
+ * @author Martin Lippert
+ */
public class Constants {
public static final String PLUGIN_ID = "org.springframework.boot.ide.properties.servers";
diff --git a/eclipse-language-servers/org.springframework.boot.ide.servers.repository/category.xml b/eclipse-language-servers/org.springframework.boot.ide.servers.repository/category.xml
index 6149f5de1..298ae4fb7 100644
--- a/eclipse-language-servers/org.springframework.boot.ide.servers.repository/category.xml
+++ b/eclipse-language-servers/org.springframework.boot.ide.servers.repository/category.xml
@@ -6,6 +6,10 @@
+
+
+
+
diff --git a/eclipse-language-servers/pom.xml b/eclipse-language-servers/pom.xml
index ef237a8b4..cd63148d0 100644
--- a/eclipse-language-servers/pom.xml
+++ b/eclipse-language-servers/pom.xml
@@ -29,8 +29,10 @@
org.springframework.boot.ide.properties.servers
org.springframework.boot.ide.properties.servers.feature
-
+
+ org.springframework.boot.ide.cloudfoundry.server
+ org.springframework.boot.ide.cloudfoundry.server.feature
+
org.springframework.boot.ide.servers.repository