moved process reaper to commons and re-used it for boot-java-ls

This commit is contained in:
Martin Lippert
2017-11-03 20:20:27 +01:00
parent 546a81c3ce
commit af887117e7
5 changed files with 40 additions and 21 deletions

View File

@@ -15,7 +15,7 @@ Require-Bundle: org.eclipse.jdt.launching;bundle-version="3.9.0",
org.eclipse.ui.workbench,
org.eclipse.jface,
org.eclipse.xtext.xbase.lib,
org.springframework.tooling.ls.eclipse.commons,
org.springframework.tooling.ls.eclipse.commons;bundle-version="0.0.10",
org.eclipse.core.resources,
org.eclipse.ui
Import-Package: com.google.gson;version="2.7.0",

View File

@@ -11,6 +11,7 @@
package org.springframework.tooling.boot.java.ls;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
@@ -23,6 +24,7 @@ import org.eclipse.core.runtime.Platform;
import org.eclipse.jdt.internal.launching.StandardVMType;
import org.eclipse.lsp4e.server.ProcessStreamConnectionProvider;
import org.osgi.framework.Bundle;
import org.springframework.tooling.ls.eclipse.commons.LanguageServerProcessReaper;
/**
* @author Martin Lippert
@@ -30,6 +32,8 @@ import org.osgi.framework.Bundle;
@SuppressWarnings("restriction")
public class SpringBootJavaLanguageServer extends ProcessStreamConnectionProvider {
private static LanguageServerProcessReaper processReaper = new LanguageServerProcessReaper();
public SpringBootJavaLanguageServer() {
List<String> commands = new ArrayList<>();
commands.add(getJDKLocation());
@@ -50,6 +54,18 @@ public class SpringBootJavaLanguageServer extends ProcessStreamConnectionProvide
setWorkingDirectory(workingDir);
}
@Override
public void start() throws IOException {
super.start();
processReaper.addProcess(LanguageServerProcessReaper.getProcess(this));
}
@Override
public void stop() {
super.stop();
processReaper.removeProcess(LanguageServerProcessReaper.getProcess(this));
}
protected String getJDKLocation() {
File jre = new File(System.getProperty("java.home"));
File javaExecutable = StandardVMType.findJavaExecutable(jre);