diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/build.properties b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/build.properties
new file mode 100644
index 000000000..64f93a9f0
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/feature.xml b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/feature.xml
new file mode 100644
index 000000000..f4ff2fe3b
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/feature.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
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
new file mode 100644
index 000000000..30683f0ce
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server.feature/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ org.springframework.boot.ide
+ org.springframework.boot.ide
+ 4.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ 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/.classpath b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.project b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.project
new file mode 100644
index 000000000..cb78231dc
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.project
@@ -0,0 +1,28 @@
+
+
+ org.springframework.boot.ide.cloudfoundry.server
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.settings/org.eclipse.jdt.core.prefs b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
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
new file mode 100644
index 000000000..caffeba3a
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/META-INF/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Server
+Bundle-SymbolicName: org.springframework.boot.ide.cloudfoundry.server
+Bundle-Version: 4.0.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
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
new file mode 100644
index 000000000..34d2e4d2d
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/build.properties
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
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
new file mode 100644
index 000000000..276937df8
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.cloudfoundry.server/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot.ide
+ org.springframework.boot.ide
+ 4.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ org.springframework.boot.ide.cloudfoundry.server
+ eclipse-plugin
+
+
+
+
+ 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.properties.servers.feature/build.properties b/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/build.properties
new file mode 100644
index 000000000..64f93a9f0
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/feature.xml b/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/feature.xml
new file mode 100644
index 000000000..47529ea86
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/feature.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/pom.xml b/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/pom.xml
new file mode 100644
index 000000000..057d44655
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers.feature/pom.xml
@@ -0,0 +1,35 @@
+
+
+ 4.0.0
+
+ org.springframework.boot.ide
+ org.springframework.boot.ide
+ 4.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ org.springframework.boot.ide.properties.servers.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.properties.servers/.classpath b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.classpath
new file mode 100644
index 000000000..eca7bdba8
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.classpath
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.project b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.project
new file mode 100644
index 000000000..5eed86bdb
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.project
@@ -0,0 +1,28 @@
+
+
+ org.springframework.boot.ide.properties.servers
+
+
+
+
+
+ org.eclipse.jdt.core.javabuilder
+
+
+
+
+ org.eclipse.pde.ManifestBuilder
+
+
+
+
+ org.eclipse.pde.SchemaBuilder
+
+
+
+
+
+ org.eclipse.pde.PluginNature
+ org.eclipse.jdt.core.javanature
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.settings/org.eclipse.jdt.core.prefs b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..0c68a61dc
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers/META-INF/MANIFEST.MF b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..e6beb5246
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Servers
+Bundle-SymbolicName: org.springframework.boot.ide.properties.servers;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.properties.servers/build.properties b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/build.properties
new file mode 100644
index 000000000..3b7db0f69
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ servers/
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers/plugin.xml b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/plugin.xml
new file mode 100644
index 000000000..b09031b94
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/plugin.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/eclipse-language-servers/org.springframework.boot.ide.properties.servers/pom.xml b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/pom.xml
new file mode 100644
index 000000000..fe5bd336b
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+
+ org.springframework.boot.ide
+ org.springframework.boot.ide.servers
+ 4.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ org.springframework.boot.ide.properties.servers
+ eclipse-plugin
+
+
+
+ org.springframework.ide.vscode
+ vscode-application-properties
+ 0.0.1-SNAPSHOT
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ 2.10
+
+
+ copy
+ prepare-package
+
+ copy
+
+
+
+
+ org.springframework.ide.vscode
+ vscode-application-properties
+ true
+ ${project.build.directory}/../servers
+
+
+ true
+ true
+
+
+
+
+
+
+
+
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
new file mode 100644
index 000000000..7ab0e31d5
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/src/org/springframework/boot/ide/properties/servers/Constants.java
@@ -0,0 +1,7 @@
+package org.springframework.boot.ide.properties.servers;
+
+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.properties.servers/src/org/springframework/boot/ide/properties/servers/SpringBootPropertiesLanguageServer.java b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/src/org/springframework/boot/ide/properties/servers/SpringBootPropertiesLanguageServer.java
new file mode 100644
index 000000000..791f09b0c
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.boot.ide.properties.servers/src/org/springframework/boot/ide/properties/servers/SpringBootPropertiesLanguageServer.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.properties.servers;
+
+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 SpringBootPropertiesLanguageServer extends ProcessStreamConnectionProvider {
+
+ public SpringBootPropertiesLanguageServer() {
+ 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-application-properties-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-application-properties-0.0.1-SNAPSHOT.jar"), false );
+
+ File dataFile = bundle.getDataFile("vscode-application-properties-0.0.1-SNAPSHOT.jar");
+ Files.copy(stream, dataFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ }
+
+}
diff --git a/eclipse-language-servers/pom.xml b/eclipse-language-servers/pom.xml
new file mode 100644
index 000000000..eddf3729f
--- /dev/null
+++ b/eclipse-language-servers/pom.xml
@@ -0,0 +1,325 @@
+
+
+ 4.0.0
+
+ org.springframework.boot.ide
+ org.springframework.boot.ide.servers
+ 4.0.0-SNAPSHOT
+ pom
+
+
+ Pivotal Software, Inc.
+ https://spring.io
+
+ https://spring.io/tools/sts
+ 2007
+
+
+ 3.0
+
+
+
+
+ Eclipse Public License
+ http://www.eclipse.org/legal/epl-v10.html
+
+
+
+
+ org.springframework.boot.ide.properties.servers
+
+
+
+
+ SNAPSHOT
+ false
+ Spring Boot IDE Language Server
+
+
+ true
+ pivotal
+ ~/.keytool/pivotal.jks
+
+
+ true
+
+ 0.26.0
+ UTF-8
+
+
+
+
+ e47
+
+ e4.7
+ e4.7
+ Oxygen
+ Oxygen (4.7)
+ oxygen
+ 4.7
+ e47
+
+
+
+ oxygen
+ p2
+ http://download.eclipse.org/releases/oxygen/
+
+
+ staging
+ p2
+ http://download.eclipse.org/staging/oxygen/
+
+
+ oxygen-nightly
+ p2
+ http://download.eclipse.org/eclipse/updates/4.7-N-builds/
+
+
+ orbit
+ p2
+ http://download.eclipse.org/tools/orbit/downloads/drops/R20160520211859/repository/
+
+
+
+
+
+ build.springsource.com
+
+
+ bamboo.buildNumber
+
+
+
+
+ CI-B${bamboo.buildNumber}
+ true
+
+
+
+
+
+
+ bamboo-signing
+
+ ${env.bamboo_signing_store_password}
+ ${env.bamboo_signing_store_password}
+
+
+
+
+
+
+
+ eclipse-language-server-local-repo
+ p2
+ file:///${basedir}/../../../eclipse-language-service/repository/target/repository
+
+
+
+
+
+ tycho-snapshots
+ https://repo.eclipse.org/content/repositories/tycho-snapshots/
+
+
+
+ spring-maven-release
+ Spring Maven Release Repository
+ http://maven.springframework.org/release
+
+
+ springsource-maven-release
+ SpringSource Maven Release Repository
+ http://repository.springsource.com/maven/bundles/release
+
+
+ sonatype.snapshots
+ https://repository.sonatype.org/content/repositories/snapshots/
+
+
+
+
+
+
+ org.springframework.build.aws
+ org.springframework.build.aws.maven
+ 3.1.0.RELEASE
+
+
+
+
+
+
+ maven-deploy-plugin
+ 2.5
+
+ true
+
+
+
+
+ org.eclipse.tycho
+ tycho-maven-plugin
+ ${tycho-version}
+ true
+
+
+
+ org.eclipse.tycho
+ target-platform-configuration
+ ${tycho-version}
+
+ p2
+
+
+
+
+ org.apache.maven.plugins
+ maven-jarsigner-plugin
+ 1.2
+
+
+ sign
+
+ sign
+
+
+
+
+ ${signing.skip}
+ ${signing.alias}
+ ${signing.keystore}
+ ${signing.store.password}
+ ${signing.key.password}
+
+
+
+ org.eclipse.tycho
+ tycho-p2-plugin
+ ${tycho-version}
+
+
+ second-generate-p2-metadata
+
+ p2-metadata
+
+ verify
+
+
+
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-compiler-plugin
+ ${tycho-version}
+
+ UTF-8
+ -err:-forbidden
+
+
+
+ org.eclipse.tycho
+ target-platform-configuration
+ ${tycho-version}
+
+ p2
+ consider
+ true
+
+ ignore
+
+
+
+ macosx
+ cocoa
+ x86_64
+
+
+ win32
+ win32
+ x86_64
+
+
+ linux
+ gtk
+ x86_64
+
+
+
+
+ java-package
+ javax.servlet
+
+ eclipse-plugin
+ javax.servlet
+
+
+
+
+
+
+ org.eclipse.tycho
+ tycho-packaging-plugin
+ ${tycho-version}
+
+ yyyyMMddHHmm-'${p2.qualifier}'
+ true
+
+ false
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 2.4.3
+
+ ISO-8859-1
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.6
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+ org.apache.ant
+ ant-nodeps
+ 1.8.1
+
+
+ org.springframework.build
+ org.springframework.build.aws.ant
+ 3.1.0.RELEASE
+
+
+ net.java.dev.jets3t
+ jets3t
+ 0.8.1
+
+
+
+
+
+
+
+
diff --git a/vscode-extensions/vscode-application-properties/scripts/preinstall.sh b/vscode-extensions/vscode-application-properties/scripts/preinstall.sh
index 7eed017ff..1bc932668 100755
--- a/vscode-extensions/vscode-application-properties/scripts/preinstall.sh
+++ b/vscode-extensions/vscode-application-properties/scripts/preinstall.sh
@@ -2,4 +2,4 @@
set -e
(cd ../commons-vscode ; npm install)
npm install ../commons-vscode
-../mvnw -f ../pom.xml -pl vscode-application-properties -am clean package
+../mvnw -f ../pom.xml -pl vscode-application-properties -am clean install